summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/engines/currency_convert.py9
-rw-r--r--searx/engines/duckduckgo.py10
-rw-r--r--searx/engines/duckduckgo_definitions.py5
-rw-r--r--searx/engines/faroo.py8
-rw-r--r--searx/engines/openstreetmap.py9
-rw-r--r--searx/engines/photon.py2
-rw-r--r--searx/engines/startpage.py13
-rw-r--r--searx/engines/subtitleseeker.py15
-rw-r--r--searx/engines/twitter.py13
-rw-r--r--searx/engines/yacy.py19
-rw-r--r--searx/engines/yahoo.py4
-rw-r--r--searx/settings.yml1
-rw-r--r--searx/static/themes/courgette/css/style-rtl.css2
-rw-r--r--searx/static/themes/courgette/less/style-rtl.less4
-rw-r--r--searx/templates/courgette/about.html2
-rw-r--r--searx/templates/courgette/preferences.html2
-rw-r--r--searx/templates/default/about.html2
-rw-r--r--searx/templates/default/result_templates/code.html2
-rw-r--r--searx/templates/default/result_templates/default.html2
-rw-r--r--searx/templates/default/result_templates/map.html2
-rw-r--r--searx/templates/oscar/about.html2
-rw-r--r--searx/templates/oscar/macros.html16
-rw-r--r--searx/templates/oscar/preferences.html28
-rw-r--r--searx/templates/oscar/result_templates/map.html2
-rw-r--r--searx/templates/oscar/result_templates/videos.html2
-rw-r--r--searx/tests/engines/test_currency_convert.py44
-rw-r--r--searx/tests/engines/test_duckduckgo.py90
-rw-r--r--searx/tests/engines/test_duckduckgo_definitions.py250
-rw-r--r--searx/tests/engines/test_faroo.py116
-rw-r--r--searx/tests/engines/test_google.py162
-rw-r--r--searx/tests/engines/test_mediawiki.py130
-rw-r--r--searx/tests/engines/test_openstreetmap.py199
-rw-r--r--searx/tests/engines/test_photon.py166
-rw-r--r--searx/tests/engines/test_startpage.py140
-rw-r--r--searx/tests/engines/test_subtitleseeker.py169
-rw-r--r--searx/tests/engines/test_twitter.py502
-rw-r--r--searx/tests/engines/test_yacy.py96
-rw-r--r--searx/tests/engines/test_yahoo.py154
-rw-r--r--searx/tests/engines/test_yahoo_news.py143
-rw-r--r--searx/tests/test_engines.py16
-rw-r--r--searx/translations/de/LC_MESSAGES/messages.mobin5554 -> 6419 bytes
-rw-r--r--searx/translations/de/LC_MESSAGES/messages.po462
-rw-r--r--searx/translations/en/LC_MESSAGES/messages.mobin5152 -> 5984 bytes
-rw-r--r--searx/translations/en/LC_MESSAGES/messages.po430
-rw-r--r--searx/translations/es/LC_MESSAGES/messages.mobin5283 -> 6420 bytes
-rw-r--r--searx/translations/es/LC_MESSAGES/messages.po529
-rw-r--r--searx/translations/fr/LC_MESSAGES/messages.mobin5675 -> 6563 bytes
-rw-r--r--searx/translations/fr/LC_MESSAGES/messages.po459
-rw-r--r--searx/translations/he/LC_MESSAGES/messages.mobin0 -> 6841 bytes
-rw-r--r--searx/translations/he/LC_MESSAGES/messages.po568
-rw-r--r--searx/translations/hu/LC_MESSAGES/messages.mobin5320 -> 6214 bytes
-rw-r--r--searx/translations/hu/LC_MESSAGES/messages.po463
-rw-r--r--searx/translations/it/LC_MESSAGES/messages.mobin5253 -> 6157 bytes
-rw-r--r--searx/translations/it/LC_MESSAGES/messages.po434
-rw-r--r--searx/translations/ja/LC_MESSAGES/messages.mobin5180 -> 6079 bytes
-rw-r--r--searx/translations/ja/LC_MESSAGES/messages.po439
-rw-r--r--searx/translations/nl/LC_MESSAGES/messages.mobin5350 -> 6185 bytes
-rw-r--r--searx/translations/nl/LC_MESSAGES/messages.po452
-rw-r--r--searx/translations/ru/LC_MESSAGES/messages.mobin6747 -> 7564 bytes
-rw-r--r--searx/translations/ru/LC_MESSAGES/messages.po490
-rw-r--r--searx/translations/tr/LC_MESSAGES/messages.mobin5567 -> 6394 bytes
-rw-r--r--searx/translations/tr/LC_MESSAGES/messages.po451
-rw-r--r--searx/webapp.py11
-rwxr-xr-xutils/update-translations.sh2
64 files changed, 6027 insertions, 1716 deletions
diff --git a/searx/engines/currency_convert.py b/searx/engines/currency_convert.py
index d8841c1d1..4618c82b1 100644
--- a/searx/engines/currency_convert.py
+++ b/searx/engines/currency_convert.py
@@ -13,12 +13,9 @@ def request(query, params):
if not m:
# wrong query
return params
- try:
- ammount, from_currency, to_currency = m.groups()
- ammount = float(ammount)
- except:
- # wrong params
- return params
+
+ ammount, from_currency, to_currency = m.groups()
+ ammount = float(ammount)
q = (from_currency + to_currency).upper()
diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py
index 583e33f73..e35a6334c 100644
--- a/searx/engines/duckduckgo.py
+++ b/searx/engines/duckduckgo.py
@@ -15,7 +15,7 @@
from urllib import urlencode
from lxml.html import fromstring
-from searx.utils import html_to_text
+from searx.engines.xpath import extract_text
# engine dependent config
categories = ['general']
@@ -28,8 +28,8 @@ url = 'https://duckduckgo.com/html?{query}&s={offset}'
# specific xpath variables
result_xpath = '//div[@class="results_links results_links_deep web-result"]' # noqa
url_xpath = './/a[@class="large"]/@href'
-title_xpath = './/a[@class="large"]//text()'
-content_xpath = './/div[@class="snippet"]//text()'
+title_xpath = './/a[@class="large"]'
+content_xpath = './/div[@class="snippet"]'
# do search-request
@@ -64,8 +64,8 @@ def response(resp):
if not res_url:
continue
- title = html_to_text(''.join(r.xpath(title_xpath)))
- content = html_to_text(''.join(r.xpath(content_xpath)))
+ title = extract_text(r.xpath(title_xpath))
+ content = extract_text(r.xpath(content_xpath))
# append result
results.append({'title': title,
diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py
index b66d6c0f2..793e97d22 100644
--- a/searx/engines/duckduckgo_definitions.py
+++ b/searx/engines/duckduckgo_definitions.py
@@ -25,9 +25,10 @@ def request(query, params):
def response(resp):
- search_res = json.loads(resp.text)
results = []
+ search_res = json.loads(resp.text)
+
content = ''
heading = search_res.get('Heading', '')
attributes = []
@@ -68,7 +69,7 @@ def response(resp):
results.append({'title': heading, 'url': firstURL})
# related topics
- for ddg_result in search_res.get('RelatedTopics', None):
+ for ddg_result in search_res.get('RelatedTopics', []):
if 'FirstURL' in ddg_result:
suggestion = result_to_text(ddg_result.get('FirstURL', None),
ddg_result.get('Text', None),
diff --git a/searx/engines/faroo.py b/searx/engines/faroo.py
index 5360ea156..4a5e60a60 100644
--- a/searx/engines/faroo.py
+++ b/searx/engines/faroo.py
@@ -37,7 +37,7 @@ search_category = {'general': 'web',
# do search-request
def request(query, params):
- offset = (params['pageno']-1) * number_of_results + 1
+ offset = (params['pageno'] - 1) * number_of_results + 1
categorie = search_category.get(params['category'], 'web')
if params['language'] == 'all':
@@ -45,11 +45,11 @@ def request(query, params):
else:
language = params['language'].split('_')[0]
- # skip, if language is not supported
+ # if language is not supported, put it in english
if language != 'en' and\
language != 'de' and\
language != 'zh':
- return params
+ language = 'en'
params['url'] = search_url.format(offset=offset,
number_of_results=number_of_results,
@@ -69,12 +69,10 @@ def response(resp):
# HTTP-Code 401: api-key is not valide
if resp.status_code == 401:
raise Exception("API key is not valide")
- return []
# HTTP-Code 429: rate limit exceeded
if resp.status_code == 429:
raise Exception("rate limit has been exceeded!")
- return []
results = []
diff --git a/searx/engines/openstreetmap.py b/searx/engines/openstreetmap.py
index 68446ef5f..60c3c13ca 100644
--- a/searx/engines/openstreetmap.py
+++ b/searx/engines/openstreetmap.py
@@ -38,6 +38,9 @@ def response(resp):
# parse results
for r in json:
+ if 'display_name' not in r:
+ continue
+
title = r['display_name']
osm_type = r.get('osm_type', r.get('type'))
url = result_base_url.format(osm_type=osm_type,
@@ -49,10 +52,8 @@ def response(resp):
geojson = r.get('geojson')
# if no geojson is found and osm_type is a node, add geojson Point
- if not geojson and\
- osm_type == 'node':
- geojson = {u'type': u'Point',
- u'coordinates': [r['lon'], r['lat']]}
+ if not geojson and osm_type == 'node':
+ geojson = {u'type': u'Point', u'coordinates': [r['lon'], r['lat']]}
address_raw = r.get('address')
address = {}
diff --git a/searx/engines/photon.py b/searx/engines/photon.py
index 16340d24a..a9c558c4b 100644
--- a/searx/engines/photon.py
+++ b/searx/engines/photon.py
@@ -61,7 +61,7 @@ def response(resp):
continue
# get title
- title = properties['name']
+ title = properties.get('name')
# get osm-type
if properties.get('osm_type') == 'N':
diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py
index d60ecd978..9d5b4befe 100644
--- a/searx/engines/startpage.py
+++ b/searx/engines/startpage.py
@@ -13,6 +13,7 @@
from lxml import html
from cgi import escape
import re
+from searx.engines.xpath import extract_text
# engine dependent config
categories = ['general']
@@ -45,8 +46,7 @@ def request(query, params):
# set language if specified
if params['language'] != 'all':
- params['data']['with_language'] = ('lang_' +
- params['language'].split('_')[0])
+ params['data']['with_language'] = ('lang_' + params['language'].split('_')[0])
return params
@@ -64,18 +64,15 @@ def response(resp):
continue
link = links[0]
url = link.attrib.get('href')
- try:
- title = escape(link.text_content())
- except UnicodeDecodeError:
- continue
# block google-ad url's
if re.match("^http(s|)://www.google.[a-z]+/aclk.*$", url):
continue
+ title = escape(extract_text(link))
+
if result.xpath('./p[@class="desc"]'):
- content = escape(result.xpath('./p[@class="desc"]')[0]
- .text_content())
+ content = escape(extract_text(result.xpath('./p[@class="desc"]')))
else:
content = ''
diff --git a/searx/engines/subtitleseeker.py b/searx/engines/subtitleseeker.py
index 9aaf1947b..acefe30ea 100644
--- a/searx/engines/subtitleseeker.py
+++ b/searx/engines/subtitleseeker.py
@@ -12,6 +12,7 @@ from cgi import escape
from urllib import quote_plus
from lxml import html
from searx.languages import language_codes
+from searx.engines.xpath import extract_text
# engine dependent config
categories = ['videos']
@@ -20,7 +21,7 @@ language = ""
# search-url
url = 'http://www.subtitleseeker.com/'
-search_url = url+'search/TITLES/{query}&p={pageno}'
+search_url = url + 'search/TITLES/{query}&p={pageno}'
# specific xpath variables
results_xpath = '//div[@class="boxRows"]'
@@ -44,7 +45,7 @@ def response(resp):
if resp.search_params['language'] != 'all':
search_lang = [lc[1]
for lc in language_codes
- if lc[0][:2] == resp.search_params['language']][0]
+ if lc[0][:2] == resp.search_params['language'].split('_')[0]][0]
# parse results
for result in dom.xpath(results_xpath):
@@ -56,17 +57,17 @@ def response(resp):
elif search_lang:
href = href + search_lang + '/'
- title = escape(link.xpath(".//text()")[0])
+ title = escape(extract_text(link))
- content = result.xpath('.//div[contains(@class,"red")]//text()')[0]
+ content = extract_text(result.xpath('.//div[contains(@class,"red")]'))
content = content + " - "
- text = result.xpath('.//div[contains(@class,"grey-web")]')[0]
- content = content + html.tostring(text, method='text')
+ text = extract_text(result.xpath('.//div[contains(@class,"grey-web")]')[0])
+ content = content + text
if result.xpath(".//span") != []:
content = content +\
" - (" +\
- result.xpath(".//span//text()")[0].strip() +\
+ extract_text(result.xpath(".//span")) +\
")"
# append result
diff --git a/searx/engines/twitter.py b/searx/engines/twitter.py
index bd9a8c2fc..0e35e6188 100644
--- a/searx/engines/twitter.py
+++ b/searx/engines/twitter.py
@@ -13,8 +13,8 @@
from urlparse import urljoin
from urllib import urlencode
from lxml import html
-from cgi import escape
from datetime import datetime
+from searx.engines.xpath import extract_text
# engine dependent config
categories = ['social media']
@@ -22,12 +22,12 @@ language_support = True
# search-url
base_url = 'https://twitter.com/'
-search_url = base_url+'search?'
+search_url = base_url + 'search?'
# specific xpath variables
results_xpath = '//li[@data-item-type="tweet"]'
link_xpath = './/small[@class="time"]//a'
-title_xpath = './/span[@class="username js-action-profile-name"]//text()'
+title_xpath = './/span[@class="username js-action-profile-name"]'
content_xpath = './/p[@class="js-tweet-text tweet-text"]'
timestamp_xpath = './/span[contains(@class,"_timestamp")]'
@@ -39,6 +39,8 @@ def request(query, params):
# set language if specified
if params['language'] != 'all':
params['cookies']['lang'] = params['language'].split('_')[0]
+ else:
+ params['cookies']['lang'] = 'en'
return params
@@ -53,8 +55,9 @@ def response(resp):
for tweet in dom.xpath(results_xpath):
link = tweet.xpath(link_xpath)[0]
url = urljoin(base_url, link.attrib.get('href'))
- title = ''.join(tweet.xpath(title_xpath))
- content = escape(html.tostring(tweet.xpath(content_xpath)[0], method='text', encoding='UTF-8').decode("utf-8"))
+ title = extract_text(tweet.xpath(title_xpath))
+ content = extract_text(tweet.xpath(content_xpath)[0])
+
pubdate = tweet.xpath(timestamp_xpath)
if len(pubdate) > 0:
timestamp = float(pubdate[0].attrib.get('data-time'))
diff --git a/searx/engines/yacy.py b/searx/engines/yacy.py
index 17e2a7aab..3d26c9cc4 100644
--- a/searx/engines/yacy.py
+++ b/searx/engines/yacy.py
@@ -25,10 +25,10 @@ number_of_results = 5
# search-url
base_url = 'http://localhost:8090'
search_url = '/yacysearch.json?{query}'\
- '&startRecord={offset}'\
- '&maximumRecords={limit}'\
- '&contentdom={search_type}'\
- '&resource=global' # noqa
+ '&startRecord={offset}'\
+ '&maximumRecords={limit}'\
+ '&contentdom={search_type}'\
+ '&resource=global'
# yacy specific type-definitions
search_types = {'general': 'text',
@@ -41,7 +41,7 @@ search_types = {'general': 'text',
# do search-request
def request(query, params):
offset = (params['pageno'] - 1) * number_of_results
- search_type = search_types.get(params['category'], '0')
+ search_type = search_types.get(params.get('category'), '0')
params['url'] = base_url +\
search_url.format(query=urlencode({'query': query}),
@@ -66,9 +66,12 @@ def response(resp):
if not raw_search_results:
return []
- search_results = raw_search_results.get('channels', {})[0].get('items', [])
+ search_results = raw_search_results.get('channels', [])
- for result in search_results:
+ if len(search_results) == 0:
+ return []
+
+ for result in search_results[0].get('items', []):
# parse image results
if result.get('image'):
# append result
@@ -88,7 +91,7 @@ def response(resp):
'content': result['description'],
'publishedDate': publishedDate})
- #TODO parse video, audio and file results
+ # TODO parse video, audio and file results
# return results
return results
diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py
index c6c5b0d0d..161f7513b 100644
--- a/searx/engines/yahoo.py
+++ b/searx/engines/yahoo.py
@@ -35,7 +35,7 @@ suggestion_xpath = '//div[@id="satat"]//a'
def parse_url(url_string):
endings = ['/RS', '/RK']
endpositions = []
- start = url_string.find('http', url_string.find('/RU=')+1)
+ start = url_string.find('http', url_string.find('/RU=') + 1)
for ending in endings:
endpos = url_string.rfind(ending)
@@ -91,7 +91,7 @@ def response(resp):
'content': content})
# if no suggestion found, return results
- if not suggestion_xpath:
+ if not dom.xpath(suggestion_xpath):
return results
# parse suggestion
diff --git a/searx/settings.yml b/searx/settings.yml
index d7f7b96c0..8e2833ef0 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -263,6 +263,7 @@ engines:
locales:
en : English
de : Deutsch
+ he : Hebrew
hu : Magyar
fr : Français
es : Español
diff --git a/searx/static/themes/courgette/css/style-rtl.css b/searx/static/themes/courgette/css/style-rtl.css
index 38c4153a6..a725ac1e8 100644
--- a/searx/static/themes/courgette/css/style-rtl.css
+++ b/searx/static/themes/courgette/css/style-rtl.css
@@ -1 +1 @@
-.q{padding:.5em 1em .5em 3em}#search_submit{left:0;right:auto}.result .favicon{float:right;margin-left:.5em;margin-right:0}#sidebar{right:auto;left:0}#results{padding:0 32px 0 272px}.search.center{padding-right:0;padding-left:17em}.right{right:auto;left:0}#pagination form+form{float:left;margin-top:-2em} \ No newline at end of file
+.q{padding:.5em 1em .5em 3em}#search_submit{left:0;right:auto}.result .favicon{float:right;margin-left:.5em;margin-right:0}#sidebar{right:auto;left:0}#results{padding:0 32px 0 272px}.search.center{padding-right:0;padding-left:17em}.right{right:auto;left:0}#pagination form+form{float:left;margin-top:-2em}.engine-table{text-align:right} \ No newline at end of file
diff --git a/searx/static/themes/courgette/less/style-rtl.less b/searx/static/themes/courgette/less/style-rtl.less
index 13a34f124..3e357d3d8 100644
--- a/searx/static/themes/courgette/less/style-rtl.less
+++ b/searx/static/themes/courgette/less/style-rtl.less
@@ -35,4 +35,8 @@
#pagination form + form {
float: left;
margin-top: -2em;
+}
+
+.engine-table {
+ text-align:right;
} \ No newline at end of file
diff --git a/searx/templates/courgette/about.html b/searx/templates/courgette/about.html
index 1c2e0635d..2945e1f7b 100644
--- a/searx/templates/courgette/about.html
+++ b/searx/templates/courgette/about.html
@@ -1,7 +1,7 @@
{% extends 'courgette/base.html' %}
{% block content %}
{% include 'courgette/github_ribbon.html' %}
-<div class="row">
+<div class="row"{% if rtl %} dir="ltr"{% endif %}>
<h1>About <a href="{{ url_for('index') }}">searx</a></h1>
<p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> while not storing information about its users.
diff --git a/searx/templates/courgette/preferences.html b/searx/templates/courgette/preferences.html
index 379d68601..efa0f65fa 100644
--- a/searx/templates/courgette/preferences.html
+++ b/searx/templates/courgette/preferences.html
@@ -95,7 +95,7 @@
<fieldset>
<legend>{{ _('Currently used search engines') }}</legend>
- <table>
+ <table class="engine-table">
<tr>
<th>{{ _('Engine name') }}</th>
<th>{{ _('Category') }}</th>
diff --git a/searx/templates/default/about.html b/searx/templates/default/about.html
index 01d6f444e..1b5fc34c0 100644
--- a/searx/templates/default/about.html
+++ b/searx/templates/default/about.html
@@ -1,7 +1,7 @@
{% extends 'default/base.html' %}
{% block content %}
{% include 'default/github_ribbon.html' %}
-<div class="row">
+<div class="row"{% if rtl %} dir="ltr"{% endif %}>
<h1>About <a href="{{ url_for('index') }}">searx</a></h1>
<p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> while not storing information about its users.
diff --git a/searx/templates/default/result_templates/code.html b/searx/templates/default/result_templates/code.html
index 0aba4684d..751fb3b56 100644
--- a/searx/templates/default/result_templates/code.html
+++ b/searx/templates/default/result_templates/code.html
@@ -1,6 +1,6 @@
<div class="result {{ result.class }}">
<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>
- <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">cached</a></p>
+ <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">{{ _('cached') }}</a></p>
{% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
<p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
{% if result.repository %}<p class="result-content"><a href="{{ result.repository|safe }}">{{ result.repository }}</a></p>{% endif %}
diff --git a/searx/templates/default/result_templates/default.html b/searx/templates/default/result_templates/default.html
index b7f9d3557..167db888b 100644
--- a/searx/templates/default/result_templates/default.html
+++ b/searx/templates/default/result_templates/default.html
@@ -1,6 +1,6 @@
<div class="result {{ result.class }}">
<h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
- <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">cached</a>
+ <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">{{ _('cached') }}</a>
{% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>
<p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
</div>
diff --git a/searx/templates/default/result_templates/map.html b/searx/templates/default/result_templates/map.html
index 159e472b5..b0eda2be5 100644
--- a/searx/templates/default/result_templates/map.html
+++ b/searx/templates/default/result_templates/map.html
@@ -6,7 +6,7 @@
<div>
<h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
- <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">cached</a>
+ <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">{{ _('cached') }}</a>
{% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>
<p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
</div>
diff --git a/searx/templates/oscar/about.html b/searx/templates/oscar/about.html
index 6f9572546..e1f378294 100644
--- a/searx/templates/oscar/about.html
+++ b/searx/templates/oscar/about.html
@@ -2,7 +2,7 @@
{% block site_alert_warning_nojs %} {% endblock %}
{% block title %}{{ _('about') }} - {% endblock %}
{% block content %}
-<div>
+<div{% if rtl %} dir="ltr"{% endif %}>
<h1>About <a href="{{ url_for('index') }}">searx</a></h1>
<p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> while not storing information about its users.
diff --git a/searx/templates/oscar/macros.html b/searx/templates/oscar/macros.html
index f2222c610..42721a812 100644
--- a/searx/templates/oscar/macros.html
+++ b/searx/templates/oscar/macros.html
@@ -36,26 +36,26 @@
<p class="text-muted">{{ result.pretty_url }}</p>
{%- endmacro %}
-{% macro preferences_item_header(info, label) -%}
- {% if not rtl %}
+{% macro preferences_item_header(info, label, rtl) -%}
+ {% if rtl %}
<div class="row form-group">
- <label class="col-sm-3 col-md-2">{{ label }}</label>
+ <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>
<div class="col-sm-4 col-md-4">
{% else %}
<div class="row form-group">
- <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>
+ <label class="col-sm-3 col-md-2">{{ label }}</label>
<div class="col-sm-4 col-md-4">
{% endif %}
{%- endmacro %}
-{% macro preferences_item_footer(info, label) -%}
- {% if not rtl %}
+{% macro preferences_item_footer(info, label, rtl) -%}
+ {% if rtl %}
</div>
- <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>
+ <label class="col-sm-3 col-md-2">{{ label }}</label>
</div>
{% else %}
</div>
- <label class="col-sm-3 col-md-2">{{ label }}</label>
+ <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>
</div>
{% endif %}
{%- endmacro %}
diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html
index 066524f48..b98100e8e 100644
--- a/searx/templates/oscar/preferences.html
+++ b/searx/templates/oscar/preferences.html
@@ -41,73 +41,73 @@
</div>
{% set language_label = _('Search language') %}
{% set language_info = _('What language do you prefer for search?') %}
- {{ preferences_item_header(language_info, language_label) }}
+ {{ preferences_item_header(language_info, language_label, rtl) }}
<select class="form-control" name='language'>
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Automatic') }}</option>
{% for lang_id,lang_name,country_name in language_codes %}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} ({{ country_name }}) - {{ lang_id }}</option>
{% endfor %}
</select>
- {{ preferences_item_footer(language_info, language_label) }}
+ {{ preferences_item_footer(language_info, language_label, rtl) }}
{% set locale_label = _('Interface language') %}
{% set locale_info = _('Change the language of the layout') %}
- {{ preferences_item_header(locale_info, locale_label) }}
+ {{ preferences_item_header(locale_info, locale_label, rtl) }}
<select class="form-control" name='locale'>
{% for locale_id,locale_name in locales.items() %}
<option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
{% endfor %}
</select>
- {{ preferences_item_footer(locale_info, locale_label) }}
+ {{ preferences_item_footer(locale_info, locale_label, rtl) }}
{% set autocomplete_label = _('Autocomplete') %}
{% set autocomplete_info = _('Find stuff as you type') %}
- {{ preferences_item_header(autocomplete_info, autocomplete_label) }}
+ {{ preferences_item_header(autocomplete_info, autocomplete_label, rtl) }}
<select class="form-control" name="autocomplete">
<option value=""> - </option>
{% for backend in autocomplete_backends %}
<option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
{% endfor %}
</select>
- {{ preferences_item_footer(autocomplete_info, autocomplete_label) }}
+ {{ preferences_item_footer(autocomplete_info, autocomplete_label, rtl) }}
{% set image_proxy_label = _('Image proxy') %}
{% set image_proxy_info = _('Proxying image results through searx') %}
- {{ preferences_item_header(image_proxy_info, image_proxy_label) }}
+ {{ preferences_item_header(image_proxy_info, image_proxy_label, rtl) }}
<select class="form-control" name='image_proxy'>
<option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
<option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled')}}</option>
</select>
- {{ preferences_item_footer(image_proxy_info, image_proxy_label) }}
+ {{ preferences_item_footer(image_proxy_info, image_proxy_label, rtl) }}
{% set method_label = _('Method') %}
{% set method_info = _('Change how forms are submited, <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods" rel="external">learn more about request methods</a>') %}
- {{ preferences_item_header(method_info, method_label) }}
+ {{ preferences_item_header(method_info, method_label, rtl) }}
<select class="form-control" name='method'>
<option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
<option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
</select>
- {{ preferences_item_footer(method_info, method_label) }}
+ {{ preferences_item_footer(method_info, method_label, rtl) }}
{% set safesearch_label = _('SafeSearch') %}
{% set safesearch_info = _('Filter content') %}
- {{ preferences_item_header(safesearch_info, safesearch_label) }}
+ {{ preferences_item_header(safesearch_info, safesearch_label, rtl) }}
<select class="form-control" name='safesearch'>
<option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
<option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
<option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
</select>
- {{ preferences_item_footer(safesearch_info, safesearch_label) }}
+ {{ preferences_item_footer(safesearch_info, safesearch_label, rtl) }}
{% set theme_label = _('Themes') %}
{% set theme_info = _('Change searx layout') %}
- {{ preferences_item_header(theme_info, theme_label) }}
+ {{ preferences_item_header(theme_info, theme_label, rtl) }}
<select class="form-control" name="theme">
{% for name in themes %}
<option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
{% endfor %}
</select>
- {{ preferences_item_footer(theme_info, theme_label) }}
+ {{ preferences_item_footer(theme_info, theme_label, rtl) }}
</div>
</fieldset>
</div>
diff --git a/searx/templates/oscar/result_templates/map.html b/searx/templates/oscar/result_templates/map.html
index 2e679e84d..822c7cdea 100644
--- a/searx/templates/oscar/result_templates/map.html
+++ b/searx/templates/oscar/result_templates/map.html
@@ -40,7 +40,7 @@
{% endif %}
{% if result.osm and (result.osm.type and result.osm.id) %}
- <div class="row result-content collapse col-xs-12 col-sm-7 col-md-8" id="result-overpass-{{ index }}">
+ <div class="row result-content collapse col-xs-12 col-sm-7 col-md-8" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
<div class="text-center" id="result-overpass-table-loading-{{ index }}"><img src="{{ url_for('static', filename='img/loader.gif') }}" alt="Loading ..."/></div>
<table class="table table-striped table-condensed hidden" id="result-overpass-table-{{ index }}">
<tr><th>key</th><th>value</th></tr>
diff --git a/searx/templates/oscar/result_templates/videos.html b/searx/templates/oscar/result_templates/videos.html
index 87fe25afe..ddf2894ac 100644
--- a/searx/templates/oscar/result_templates/videos.html
+++ b/searx/templates/oscar/result_templates/videos.html
@@ -1,4 +1,4 @@
-{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
{{ result_header(result, favicons) }}
{{ result_sub_header(result) }}
diff --git a/searx/tests/engines/test_currency_convert.py b/searx/tests/engines/test_currency_convert.py
new file mode 100644
index 000000000..271ed03a2
--- /dev/null
+++ b/searx/tests/engines/test_currency_convert.py
@@ -0,0 +1,44 @@
+from collections import defaultdict
+from datetime import datetime
+import mock
+from searx.engines import currency_convert
+from searx.testing import SearxTestCase
+
+
+class TestCurrencyConvertEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ params = currency_convert.request(query, dicto)
+ self.assertNotIn('url', params)
+
+ query = '1.1.1 EUR in USD'
+ params = currency_convert.request(query, dicto)
+ self.assertNotIn('url', params)
+
+ query = '10 eur in usd'
+ params = currency_convert.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn('finance.yahoo.com', params['url'])
+ self.assertIn('EUR', params['url'])
+ self.assertIn('USD', params['url'])
+
+ def test_response(self):
+ dicto = defaultdict(dict)
+ dicto['ammount'] = 10
+ dicto['from'] = "EUR"
+ dicto['to'] = "USD"
+ response = mock.Mock(text='a,b,c,d', search_params=dicto)
+ self.assertEqual(currency_convert.response(response), [])
+
+ csv = "2,0.5,1"
+ response = mock.Mock(text=csv, search_params=dicto)
+ results = currency_convert.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['answer'], '10 EUR = 5.0 USD (1 EUR = 0.5 USD)')
+ now_date = datetime.now().strftime('%Y%m%d')
+ self.assertEqual(results[0]['url'], 'http://finance.yahoo.com/currency/converter-results/' +
+ now_date + '/10-eur-to-usd.html')
diff --git a/searx/tests/engines/test_duckduckgo.py b/searx/tests/engines/test_duckduckgo.py
new file mode 100644
index 000000000..6f085cbc2
--- /dev/null
+++ b/searx/tests/engines/test_duckduckgo.py
@@ -0,0 +1,90 @@
+from collections import defaultdict
+import mock
+from searx.engines import duckduckgo
+from searx.testing import SearxTestCase
+
+
+class TestDuckduckgoEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = duckduckgo.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('duckduckgo.com', params['url'])
+ self.assertIn('fr-fr', params['url'])
+
+ dicto['language'] = 'all'
+ params = duckduckgo.request(query, dicto)
+ self.assertIn('en-us', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, duckduckgo.response, None)
+ self.assertRaises(AttributeError, duckduckgo.response, [])
+ self.assertRaises(AttributeError, duckduckgo.response, '')
+ self.assertRaises(AttributeError, duckduckgo.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(duckduckgo.response(response), [])
+
+ html = """
+ <div class="results_links results_links_deep web-result">
+ <div class="icon_fav" style="display: block;">
+ <a rel="nofollow" href="https://www.test.com/">
+ <img width="16" height="16" alt=""
+ src="/i/www.test.com.ico" style="visibility: visible;" name="i15" />
+ </a>
+ </div>
+ <div class="links_main links_deep"> <!-- This is the visible part -->
+ <a rel="nofollow" class="large" href="http://this.should.be.the.link/">
+ This <b>is</b> <b>the</b> title
+ </a>
+ <div class="snippet"><b>This</b> should be the content.</div>
+ <div class="url">
+ http://this.should.be.the.link/
+ </div>
+ </div>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = duckduckgo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/')
+ self.assertEqual(results[0]['content'], 'This should be the content.')
+
+ html = """
+ <div class="results_links results_links_deep web-result">
+ <div class="icon_fav" style="display: block;">
+ </div>
+ <div class="links_main links_deep"> <!-- This is the visible part -->
+ <div class="snippet"><b>This</b> should be the content.</div>
+ <div class="url">
+ http://this.should.be.the.link/
+ </div>
+ </div>
+ </div>
+ <div class="results_links results_links_deep web-result">
+ <div class="icon_fav" style="display: block;">
+ <img width="16" height="16" alt=""
+ src="/i/www.test.com.ico" style="visibility: visible;" name="i15" />
+ </div>
+ <div class="links_main links_deep"> <!-- This is the visible part -->
+ <a rel="nofollow" class="large" href="">
+ This <b>is</b> <b>the</b> title
+ </a>
+ <div class="snippet"><b>This</b> should be the content.</div>
+ <div class="url">
+ http://this.should.be.the.link/
+ </div>
+ </div>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = duckduckgo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/engines/test_duckduckgo_definitions.py b/searx/tests/engines/test_duckduckgo_definitions.py
new file mode 100644
index 000000000..71c84235c
--- /dev/null
+++ b/searx/tests/engines/test_duckduckgo_definitions.py
@@ -0,0 +1,250 @@
+from collections import defaultdict
+import mock
+from searx.engines import duckduckgo_definitions
+from searx.testing import SearxTestCase
+
+
+class TestDDGDefinitionsEngine(SearxTestCase):
+
+ def test_result_to_text(self):
+ url = ''
+ text = 'Text'
+ html_result = 'Html'
+ result = duckduckgo_definitions.result_to_text(url, text, html_result)
+ self.assertEqual(result, text)
+
+ html_result = '<a href="url">Text in link</a>'
+ result = duckduckgo_definitions.result_to_text(url, text, html_result)
+ self.assertEqual(result, 'Text in link')
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ params = duckduckgo_definitions.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('duckduckgo.com', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, duckduckgo_definitions.response, None)
+ self.assertRaises(AttributeError, duckduckgo_definitions.response, [])
+ self.assertRaises(AttributeError, duckduckgo_definitions.response, '')
+ self.assertRaises(AttributeError, duckduckgo_definitions.response, '[]')
+
+ response = mock.Mock(text='{}')
+ self.assertEqual(duckduckgo_definitions.response(response), [])
+
+ response = mock.Mock(text='{"data": []}')
+ self.assertEqual(duckduckgo_definitions.response(response), [])
+
+ json = """
+ {
+ "DefinitionSource": "definition source",
+ "Heading": "heading",
+ "ImageWidth": 0,
+ "RelatedTopics": [
+ {
+ "Result": "Top-level domains",
+ "Icon": {
+ "URL": "",
+ "Height": "",
+ "Width": ""
+ },
+ "FirstURL": "https://first.url",
+ "Text": "text"
+ },
+ {
+ "Topics": [
+ {
+ "Result": "result topic",
+ "Icon": {
+ "URL": "",
+ "Height": "",
+ "Width": ""
+ },
+ "FirstURL": "https://duckduckgo.com/?q=2%2F2",
+ "Text": "result topic text"
+ }
+ ],
+ "Name": "name"
+ }
+ ],
+ "Entity": "Entity",
+ "Type": "A",
+ "Redirect": "",
+ "DefinitionURL": "http://definition.url",
+ "AbstractURL": "https://abstract.url",
+ "Definition": "this is the definition",
+ "AbstractSource": "abstract source",
+ "Infobox": {
+ "content": [
+ {
+ "data_type": "string",
+ "value": "1999",
+ "label": "Introduced",
+ "wiki_order": 0
+ }
+ ],
+ "meta": [
+ {
+ "data_type": "string",
+ "value": ".test",
+ "label": "article_title"
+ }
+ ]
+ },
+ "Image": "image.png",
+ "ImageIsLogo": 0,
+ "Abstract": "abstract",
+ "AbstractText": "abstract text",
+ "AnswerType": "",
+ "ImageHeight": 0,
+ "Results": [{
+ "Result" : "result title",
+ "Icon" : {
+ "URL" : "result url",
+ "Height" : 16,
+ "Width" : 16
+ },
+ "FirstURL" : "result first url",
+ "Text" : "result text"
+ }
+ ],
+ "Answer": "answer"
+ }
+ """
+ response = mock.Mock(text=json)
+ results = duckduckgo_definitions.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 4)
+ self.assertEqual(results[0]['answer'], 'answer')
+ self.assertEqual(results[1]['title'], 'heading')
+ self.assertEqual(results[1]['url'], 'result first url')
+ self.assertEqual(results[2]['suggestion'], 'text')
+ self.assertEqual(results[3]['infobox'], 'heading')
+ self.assertEqual(results[3]['id'], 'http://definition.url')
+ self.assertEqual(results[3]['entity'], 'Entity')
+ self.assertIn('abstract', results[3]['content'])
+ self.assertIn('this is the definition', results[3]['content'])
+ self.assertEqual(results[3]['img_src'], 'image.png')
+ self.assertIn('Introduced', results[3]['attributes'][0]['label'])
+ self.assertIn('1999', results[3]['attributes'][0]['value'])
+ self.assertIn({'url': 'https://abstract.url', 'title': 'abstract source'}, results[3]['urls'])
+ self.assertIn({'url': 'http://definition.url', 'title': 'definition source'}, results[3]['urls'])
+ self.assertIn({'name': 'name', 'suggestions': ['result topic text']}, results[3]['relatedTopics'])
+
+ json = """
+ {
+ "DefinitionSource": "definition source",
+ "Heading": "heading",
+ "ImageWidth": 0,
+ "RelatedTopics": [],
+ "Entity": "Entity",
+ "Type": "A",
+ "Redirect": "",
+ "DefinitionURL": "",
+ "AbstractURL": "https://abstract.url",
+ "Definition": "",
+ "AbstractSource": "abstract source",
+ "Image": "",
+ "ImageIsLogo": 0,
+ "Abstract": "",
+ "AbstractText": "abstract text",
+ "AnswerType": "",
+ "ImageHeight": 0,
+ "Results": [],
+ "Answer": ""
+ }
+ """
+ response = mock.Mock(text=json)
+ results = duckduckgo_definitions.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['url'], 'https://abstract.url')
+ self.assertEqual(results[0]['title'], 'heading')
+ self.assertEqual(results[0]['content'], '')
+
+ json = """
+ {
+ "DefinitionSource": "definition source",
+ "Heading": "heading",
+ "ImageWidth": 0,
+ "RelatedTopics": [
+ {
+ "Result": "Top-level domains",
+ "Icon": {
+ "URL": "",
+ "Height": "",
+ "Width": ""
+ },
+ "FirstURL": "https://first.url",
+ "Text": "heading"
+ },
+ {
+ "Name": "name"
+ },
+ {
+ "Topics": [
+ {
+ "Result": "result topic",
+ "Icon": {
+ "URL": "",
+ "Height": "",
+ "Width": ""
+ },
+ "FirstURL": "https://duckduckgo.com/?q=2%2F2",
+ "Text": "heading"
+ }
+ ],
+ "Name": "name"
+ }
+ ],
+ "Entity": "Entity",
+ "Type": "A",
+ "Redirect": "",
+ "DefinitionURL": "http://definition.url",
+ "AbstractURL": "https://abstract.url",
+ "Definition": "this is the definition",
+ "AbstractSource": "abstract source",
+ "Infobox": {
+ "meta": [
+ {
+ "data_type": "string",
+ "value": ".test",
+ "label": "article_title"
+ }
+ ]
+ },
+ "Image": "image.png",
+ "ImageIsLogo": 0,
+ "Abstract": "abstract",
+ "AbstractText": "abstract text",
+ "AnswerType": "",
+ "ImageHeight": 0,
+ "Results": [{
+ "Result" : "result title",
+ "Icon" : {
+ "URL" : "result url",
+ "Height" : 16,
+ "Width" : 16
+ },
+ "Text" : "result text"
+ }
+ ],
+ "Answer": ""
+ }
+ """
+ response = mock.Mock(text=json)
+ results = duckduckgo_definitions.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['infobox'], 'heading')
+ self.assertEqual(results[0]['id'], 'http://definition.url')
+ self.assertEqual(results[0]['entity'], 'Entity')
+ self.assertIn('abstract', results[0]['content'])
+ self.assertIn('this is the definition', results[0]['content'])
+ self.assertEqual(results[0]['img_src'], 'image.png')
+ self.assertIn({'url': 'https://abstract.url', 'title': 'abstract source'}, results[0]['urls'])
+ self.assertIn({'url': 'http://definition.url', 'title': 'definition source'}, results[0]['urls'])
+ self.assertIn({'name': 'name', 'suggestions': []}, results[0]['relatedTopics'])
diff --git a/searx/tests/engines/test_faroo.py b/searx/tests/engines/test_faroo.py
new file mode 100644
index 000000000..acebdda86
--- /dev/null
+++ b/searx/tests/engines/test_faroo.py
@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import faroo
+from searx.testing import SearxTestCase
+
+
+class TestFarooEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ dicto['category'] = 'general'
+ params = faroo.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('faroo.com', params['url'])
+ self.assertIn('en', params['url'])
+ self.assertIn('web', params['url'])
+
+ dicto['language'] = 'all'
+ params = faroo.request(query, dicto)
+ self.assertIn('en', params['url'])
+
+ dicto['language'] = 'de_DE'
+ params = faroo.request(query, dicto)
+ self.assertIn('de', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, faroo.response, None)
+ self.assertRaises(AttributeError, faroo.response, [])
+ self.assertRaises(AttributeError, faroo.response, '')
+ self.assertRaises(AttributeError, faroo.response, '[]')
+
+ response = mock.Mock(text='{}')
+ self.assertEqual(faroo.response(response), [])
+
+ response = mock.Mock(text='{"data": []}')
+ self.assertEqual(faroo.response(response), [])
+
+ response = mock.Mock(text='{"data": []}', status_code=401)
+ self.assertRaises(Exception, faroo.response, response)
+
+ response = mock.Mock(text='{"data": []}', status_code=429)
+ self.assertRaises(Exception, faroo.response, response)
+
+ json = """
+ {
+ "results": [
+ {
+ "title": "This is the title",
+ "kwic": "This is the content",
+ "content": "",
+ "url": "http://this.is.the.url/",
+ "iurl": "",
+ "domain": "css3test.com",
+ "author": "Jim Dalrymple",
+ "news": true,
+ "votes": "10",
+ "date": 1360622563000,
+ "related": []
+ },
+ {
+ "title": "This is the title2",
+ "kwic": "This is the content2",
+ "content": "",
+ "url": "http://this.is.the.url2/",
+ "iurl": "",
+ "domain": "css3test.com",
+ "author": "Jim Dalrymple",
+ "news": false,
+ "votes": "10",
+ "related": []
+ },
+ {
+ "title": "This is the title3",
+ "kwic": "This is the content3",
+ "content": "",
+ "url": "http://this.is.the.url3/",
+ "iurl": "http://upload.wikimedia.org/optimized.jpg",
+ "domain": "css3test.com",
+ "author": "Jim Dalrymple",
+ "news": false,
+ "votes": "10",
+ "related": []
+ }
+ ],
+ "query": "test",
+ "suggestions": [],
+ "count": 100,
+ "start": 1,
+ "length": 10,
+ "time": "15"
+ }
+ """
+ response = mock.Mock(text=json)
+ results = faroo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 4)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/')
+ self.assertEqual(results[0]['content'], 'This is the content')
+ self.assertEqual(results[1]['title'], 'This is the title2')
+ self.assertEqual(results[1]['url'], 'http://this.is.the.url2/')
+ self.assertEqual(results[1]['content'], 'This is the content2')
+ self.assertEqual(results[3]['img_src'], 'http://upload.wikimedia.org/optimized.jpg')
+
+ json = """
+ {}
+ """
+ response = mock.Mock(text=json)
+ results = faroo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/engines/test_google.py b/searx/tests/engines/test_google.py
new file mode 100644
index 000000000..2c3d8e5f6
--- /dev/null
+++ b/searx/tests/engines/test_google.py
@@ -0,0 +1,162 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+import lxml
+from searx.engines import google
+from searx.testing import SearxTestCase
+
+
+class TestGoogleEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = google.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('google.com', params['url'])
+ self.assertIn('PREF', params['cookies'])
+ self.assertIn('fr', params['headers']['Accept-Language'])
+
+ dicto['language'] = 'all'
+ params = google.request(query, dicto)
+ self.assertIn('en', params['headers']['Accept-Language'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, google.response, None)
+ self.assertRaises(AttributeError, google.response, [])
+ self.assertRaises(AttributeError, google.response, '')
+ self.assertRaises(AttributeError, google.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(google.response(response), [])
+
+ html = """
+ <li class="g">
+ <h3 class="r">
+ <a href="http://this.should.be.the.link/">
+ <b>This</b> is <b>the</b> title
+ </a>
+ </h3>
+ <div class="s">
+ <div class="kv" style="margin-bottom:2px">
+ <cite>
+ <b>test</b>.psychologies.com/
+ </cite>
+ <div class="_nBb">‎
+ <div style="display:inline" onclick="google.sham(this);" aria-expanded="false"
+ aria-haspopup="true" tabindex="0" data-ved="0CBUQ7B0wAA">
+ <span class="_O0">
+ </span>
+ </div>
+ <div style="display:none" class="am-dropdown-menu" role="menu" tabindex="-1">
+ <ul>
+ <li class="_Ykb">
+ <a class="_Zkb" href="http://www.google.fr/url?url=http://webcache.googleusercontent
+ .com/search%3Fcache:R1Z_4pGXjuIJ:http://test.psychologies.com/">
+ En cache
+ </a>
+ </li>
+ <li class="_Ykb">
+ <a class="_Zkb" href="/search?safe=off&amp;q=related:test.psy.com/">
+ Pages similaires
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <span class="st">
+ This should be the content.
+ </span>
+ <br>
+ <div class="osl">‎
+ <a href="http://www.google.fr/url?url=http://test.psychologies.com/tests/">
+ Test Personnalité
+ </a> - ‎
+ <a href="http://www.google.fr/url?url=http://test.psychologies.com/test/">
+ Tests - Moi
+ </a> - ‎
+ <a href="http://www.google.fr/url?url=http://test.psychologies.com/test/tests-couple">
+ Test Couple
+ </a>
+ - ‎
+ <a href="http://www.google.fr/url?url=http://test.psychologies.com/tests/tests-amour">
+ Test Amour
+ </a>
+ </div>
+ </div>
+ </li>
+ <li class="g">
+ <h3 class="r">
+ <a href="http://www.google.com/images?q=toto">
+ <b>This</b>
+ </a>
+ </h3>
+ </li>
+ <li class="g">
+ <h3 class="r">
+ <a href="http://www.google.com/search?q=toto">
+ <b>This</b> is
+ </a>
+ </h3>
+ </li>
+ <li class="g">
+ <h3 class="r">
+ <a href="€">
+ <b>This</b> is <b>the</b>
+ </a>
+ </h3>
+ </li>
+ <li class="g">
+ <h3 class="r">
+ <a href="/url?q=url">
+ <b>This</b> is <b>the</b>
+ </a>
+ </h3>
+ </li>
+ <p class="_Bmc" style="margin:3px 8px">
+ <a href="/search?num=20&amp;safe=off&amp;q=t&amp;revid=1754833769&amp;sa=X&amp;ei=-&amp;ved=">
+ suggestion <b>title</b>
+ </a>
+ </p>
+ """
+ response = mock.Mock(text=html)
+ results = google.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/')
+ self.assertEqual(results[0]['content'], 'This should be the content.')
+ self.assertEqual(results[1]['suggestion'], 'suggestion title')
+
+ html = """
+ <li class="b_algo" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO">
+ </li>
+ """
+ response = mock.Mock(text=html)
+ results = google.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
+
+ def test_parse_images(self):
+ html = """
+ <li>
+ <div>
+ <a href="http://www.google.com/url?q=http://this.is.the.url/">
+ <img style="margin:3px 0;margin-right:6px;padding:0" height="90"
+ src="https://this.is.the.image/image.jpg" width="60" align="middle" alt="" border="0">
+ </a>
+ </div>
+ </li>
+ """
+ dom = lxml.html.fromstring(html)
+ results = google.parse_images(dom)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/')
+ self.assertEqual(results[0]['title'], '')
+ self.assertEqual(results[0]['content'], '')
+ self.assertEqual(results[0]['img_src'], 'https://this.is.the.image/image.jpg')
diff --git a/searx/tests/engines/test_mediawiki.py b/searx/tests/engines/test_mediawiki.py
new file mode 100644
index 000000000..63f7da6b2
--- /dev/null
+++ b/searx/tests/engines/test_mediawiki.py
@@ -0,0 +1,130 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import mediawiki
+from searx.testing import SearxTestCase
+
+
+class TestMediawikiEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = mediawiki.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('wikipedia.org', params['url'])
+ self.assertIn('fr', params['url'])
+
+ dicto['language'] = 'all'
+ params = mediawiki.request(query, dicto)
+ self.assertIn('en', params['url'])
+
+ mediawiki.base_url = "http://test.url/"
+ mediawiki.search_url = mediawiki.base_url +\
+ 'w/api.php?action=query'\
+ '&list=search'\
+ '&{query}'\
+ '&srprop=timestamp'\
+ '&format=json'\
+ '&sroffset={offset}'\
+ '&srlimit={limit}' # noqa
+ params = mediawiki.request(query, dicto)
+ self.assertIn('test.url', params['url'])
+
+ def test_response(self):
+ dicto = defaultdict(dict)
+ dicto['language'] = 'fr'
+ mediawiki.base_url = "https://{language}.wikipedia.org/"
+
+ self.assertRaises(AttributeError, mediawiki.response, None)
+ self.assertRaises(AttributeError, mediawiki.response, [])
+ self.assertRaises(AttributeError, mediawiki.response, '')
+ self.assertRaises(AttributeError, mediawiki.response, '[]')
+
+ response = mock.Mock(text='{}', search_params=dicto)
+ self.assertEqual(mediawiki.response(response), [])
+
+ response = mock.Mock(text='{"data": []}', search_params=dicto)
+ self.assertEqual(mediawiki.response(response), [])
+
+ json = """
+ {
+ "query-continue": {
+ "search": {
+ "sroffset": 1
+ }
+ },
+ "query": {
+ "searchinfo": {
+ "totalhits": 29721
+ },
+ "search": [
+ {
+ "ns": 0,
+ "title": "This is the title étude",
+ "timestamp": "2014-12-19T17:42:52Z"
+ }
+ ]
+ }
+ }
+ """
+ response = mock.Mock(text=json, search_params=dicto)
+ results = mediawiki.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], u'This is the title étude')
+ self.assertIn('fr.wikipedia.org', results[0]['url'])
+ self.assertIn('This_is_the_title', results[0]['url'])
+ self.assertIn('%C3%A9tude', results[0]['url'])
+ self.assertEqual(results[0]['content'], '')
+
+ json = """
+ {
+ "query-continue": {
+ "search": {
+ "sroffset": 1
+ }
+ },
+ "query": {
+ "searchinfo": {
+ "totalhits": 29721
+ },
+ "search": [
+ ]
+ }
+ }
+ """
+ response = mock.Mock(text=json, search_params=dicto)
+ results = mediawiki.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
+
+ json = """
+ {
+ "query-continue": {
+ "search": {
+ "sroffset": 1
+ }
+ },
+ "query": {
+ }
+ }
+ """
+ response = mock.Mock(text=json, search_params=dicto)
+ results = mediawiki.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
+
+ json = """
+ {"toto":[
+ {"id":200,"name":"Artist Name",
+ "link":"http:\/\/www.mediawiki.com\/artist\/1217","type":"artist"}
+ ]}
+ """
+ response = mock.Mock(text=json, search_params=dicto)
+ results = mediawiki.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/engines/test_openstreetmap.py b/searx/tests/engines/test_openstreetmap.py
new file mode 100644
index 000000000..7b7783f04
--- /dev/null
+++ b/searx/tests/engines/test_openstreetmap.py
@@ -0,0 +1,199 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import openstreetmap
+from searx.testing import SearxTestCase
+
+
+class TestOpenstreetmapEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ params = openstreetmap.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('openstreetmap.org', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, openstreetmap.response, None)
+ self.assertRaises(AttributeError, openstreetmap.response, [])
+ self.assertRaises(AttributeError, openstreetmap.response, '')
+ self.assertRaises(AttributeError, openstreetmap.response, '[]')
+
+ response = mock.Mock(text='{}')
+ self.assertEqual(openstreetmap.response(response), [])
+
+ response = mock.Mock(text='{"data": []}')
+ self.assertEqual(openstreetmap.response(response), [])
+
+ json = """
+ [
+ {
+ "place_id": "127732055",
+ "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright",
+ "osm_type": "relation",
+ "osm_id": "7444",
+ "boundingbox": [
+ "48.8155755",
+ "48.902156",
+ "2.224122",
+ "2.4697602"
+ ],
+ "lat": "48.8565056",
+ "lon": "2.3521334",
+ "display_name": "This is the title",
+ "class": "place",
+ "type": "city",
+ "importance": 0.96893459932191,
+ "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png",
+ "address": {
+ "city": "Paris",
+ "county": "Paris",
+ "state": "Île-de-France",
+ "country": "France",
+ "country_code": "fr"
+ },
+ "geojson": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ 2.224122,
+ 48.854199
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ """
+ response = mock.Mock(text=json)
+ results = openstreetmap.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'https://openstreetmap.org/relation/7444')
+ self.assertIn('coordinates', results[0]['geojson'])
+ self.assertEqual(results[0]['geojson']['coordinates'][0][0][0], 2.224122)
+ self.assertEqual(results[0]['geojson']['coordinates'][0][0][1], 48.854199)
+ self.assertEqual(results[0]['address'], None)
+ self.assertIn('48.8155755', results[0]['boundingbox'])
+ self.assertIn('48.902156', results[0]['boundingbox'])
+ self.assertIn('2.224122', results[0]['boundingbox'])
+ self.assertIn('2.4697602', results[0]['boundingbox'])
+
+ json = """
+ [
+ {
+ "place_id": "127732055",
+ "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright",
+ "osm_type": "relation",
+ "osm_id": "7444",
+ "boundingbox": [
+ "48.8155755",
+ "48.902156",
+ "2.224122",
+ "2.4697602"
+ ],
+ "lat": "48.8565056",
+ "lon": "2.3521334",
+ "display_name": "This is the title",
+ "class": "tourism",
+ "type": "city",
+ "importance": 0.96893459932191,
+ "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png",
+ "address": {
+ "city": "Paris",
+ "county": "Paris",
+ "state": "Île-de-France",
+ "country": "France",
+ "country_code": "fr",
+ "address29": "Address"
+ },
+ "geojson": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ 2.224122,
+ 48.854199
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "place_id": "127732055",
+ "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright",
+ "osm_type": "relation",
+ "osm_id": "7444",
+ "boundingbox": [
+ "48.8155755",
+ "48.902156",
+ "2.224122",
+ "2.4697602"
+ ],
+ "lat": "48.8565056",
+ "lon": "2.3521334",
+ "display_name": "This is the title",
+ "class": "tourism",
+ "type": "city",
+ "importance": 0.96893459932191,
+ "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png",
+ "address": {
+ "city": "Paris",
+ "county": "Paris",
+ "state": "Île-de-France",
+ "country": "France",
+ "postcode": 75000,
+ "country_code": "fr"
+ },
+ "geojson": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ 2.224122,
+ 48.854199
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "place_id": "127732055",
+ "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright",
+ "osm_type": "node",
+ "osm_id": "7444",
+ "boundingbox": [
+ "48.8155755",
+ "48.902156",
+ "2.224122",
+ "2.4697602"
+ ],
+ "lat": "48.8565056",
+ "lon": "2.3521334",
+ "display_name": "This is the title",
+ "class": "tourism",
+ "type": "city",
+ "importance": 0.96893459932191,
+ "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png",
+ "address": {
+ "city": "Paris",
+ "county": "Paris",
+ "state": "Île-de-France",
+ "country": "France",
+ "country_code": "fr",
+ "address29": "Address"
+ }
+ }
+ ]
+ """
+ response = mock.Mock(text=json)
+ results = openstreetmap.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 3)
+ self.assertIn('48.8565056', results[2]['geojson']['coordinates'])
+ self.assertIn('2.3521334', results[2]['geojson']['coordinates'])
diff --git a/searx/tests/engines/test_photon.py b/searx/tests/engines/test_photon.py
new file mode 100644
index 000000000..734497884
--- /dev/null
+++ b/searx/tests/engines/test_photon.py
@@ -0,0 +1,166 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import photon
+from searx.testing import SearxTestCase
+
+
+class TestPhotonEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'all'
+ params = photon.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('photon.komoot.de', params['url'])
+
+ dicto['language'] = 'all'
+ params = photon.request(query, dicto)
+ self.assertNotIn('lang', params['url'])
+
+ dicto['language'] = 'al'
+ params = photon.request(query, dicto)
+ self.assertNotIn('lang', params['url'])
+
+ dicto['language'] = 'fr'
+ params = photon.request(query, dicto)
+ self.assertIn('fr', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, photon.response, None)
+ self.assertRaises(AttributeError, photon.response, [])
+ self.assertRaises(AttributeError, photon.response, '')
+ self.assertRaises(AttributeError, photon.response, '[]')
+
+ response = mock.Mock(text='{}')
+ self.assertEqual(photon.response(response), [])
+
+ response = mock.Mock(text='{"data": []}')
+ self.assertEqual(photon.response(response), [])
+
+ json = """
+ {
+ "features": [
+ {
+ "properties": {
+ "osm_key": "waterway",
+ "extent": [
+ -1.4508446,
+ 51.1614997,
+ -1.4408036,
+ 51.1525635
+ ],
+ "name": "This is the title",
+ "state": "England",
+ "osm_id": 114823817,
+ "osm_type": "W",
+ "osm_value": "river",
+ "city": "Test Valley",
+ "country": "United Kingdom"
+ },
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ -1.4458571,
+ 51.1576661
+ ]
+ }
+ },
+ {
+ "properties": {
+ "osm_key": "place",
+ "street": "Rue",
+ "state": "Ile-de-France",
+ "osm_id": 129211377,
+ "osm_type": "R",
+ "housenumber": "10",
+ "postcode": "75011",
+ "osm_value": "house",
+ "city": "Paris",
+ "country": "France"
+ },
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 2.3725025,
+ 48.8654481
+ ]
+ }
+ },
+ {
+ "properties": {
+ "osm_key": "amenity",
+ "street": "Allée",
+ "name": "Bibliothèque",
+ "state": "Ile-de-France",
+ "osm_id": 1028573132,
+ "osm_type": "N",
+ "postcode": "75001",
+ "osm_value": "library",
+ "city": "Paris",
+ "country": "France"
+ },
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 2.3445634,
+ 48.862494
+ ]
+ }
+ },
+ {
+ "properties": {
+ "osm_key": "amenity",
+ "osm_id": 1028573132,
+ "osm_type": "Y",
+ "postcode": "75001",
+ "osm_value": "library",
+ "city": "Paris",
+ "country": "France"
+ },
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 2.3445634,
+ 48.862494
+ ]
+ }
+ },
+ {
+ }
+ ],
+ "type": "FeatureCollection"
+ }
+ """
+ response = mock.Mock(text=json)
+ results = photon.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 3)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['content'], '')
+ self.assertEqual(results[0]['longitude'], -1.4458571)
+ self.assertEqual(results[0]['latitude'], 51.1576661)
+ self.assertIn(-1.4508446, results[0]['boundingbox'])
+ self.assertIn(51.1614997, results[0]['boundingbox'])
+ self.assertIn(-1.4408036, results[0]['boundingbox'])
+ self.assertIn(51.1525635, results[0]['boundingbox'])
+ self.assertIn('type', results[0]['geojson'])
+ self.assertEqual(results[0]['geojson']['type'], 'Point')
+ self.assertEqual(results[0]['address'], None)
+ self.assertEqual(results[0]['osm']['type'], 'way')
+ self.assertEqual(results[0]['osm']['id'], 114823817)
+ self.assertEqual(results[0]['url'], 'https://openstreetmap.org/way/114823817')
+ self.assertEqual(results[1]['osm']['type'], 'relation')
+ self.assertEqual(results[2]['address']['name'], u'Bibliothèque')
+ self.assertEqual(results[2]['address']['house_number'], None)
+ self.assertEqual(results[2]['address']['locality'], 'Paris')
+ self.assertEqual(results[2]['address']['postcode'], '75001')
+ self.assertEqual(results[2]['address']['country'], 'France')
+ self.assertEqual(results[2]['osm']['type'], 'node')
diff --git a/searx/tests/engines/test_startpage.py b/searx/tests/engines/test_startpage.py
new file mode 100644
index 000000000..07f13ee27
--- /dev/null
+++ b/searx/tests/engines/test_startpage.py
@@ -0,0 +1,140 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import startpage
+from searx.testing import SearxTestCase
+
+
+class TestStartpageEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = startpage.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn('startpage.com', params['url'])
+ self.assertIn('data', params)
+ self.assertIn('query', params['data'])
+ self.assertIn(query, params['data']['query'])
+ self.assertIn('with_language', params['data'])
+ self.assertIn('lang_fr', params['data']['with_language'])
+
+ dicto['language'] = 'all'
+ params = startpage.request(query, dicto)
+ self.assertNotIn('with_language', params['data'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, startpage.response, None)
+ self.assertRaises(AttributeError, startpage.response, [])
+ self.assertRaises(AttributeError, startpage.response, '')
+ self.assertRaises(AttributeError, startpage.response, '[]')
+
+ response = mock.Mock(content='<html></html>')
+ self.assertEqual(startpage.response(response), [])
+
+ html = """
+ <div class='result' style=' *width : auto; *margin-right : 10%;'>
+ <h3>
+ <a href='http://this.should.be.the.link/' id='title_2' name='title_2' >
+ This should be the title
+ </a>
+ <span id='title_stars_2' name='title_stars_2'> </span>
+ </h3>
+ <p class='desc'>
+ This should be the content.
+ </p>
+ <p>
+ <span class='url'>www.speed<b>test</b>.net/fr/
+ </span>
+ -
+ <A class="proxy" id="proxy_link" HREF="https://ixquick-proxy.com/do/spg/proxy?ep=&edata=&ek=&ekdata="
+ class='proxy'>
+ Navigation avec Ixquick Proxy
+ </A>
+ -
+ <A HREF="https://ixquick-proxy.com/do/spg/highlight.pl?l=francais&c=hf&cat=web&q=test&rl=NONE&rid=
+ &hlq=https://startpage.com/do/search&mtabp=-1&mtcmd=process_search&mtlanguage=francais&mtengine0=
+ &mtcat=web&u=http:%2F%2Fwww.speedtest.net%2Ffr%2F" class='proxy'>
+ Mis en surbrillance
+ </A>
+ </p>
+ </div>
+ """
+ response = mock.Mock(content=html)
+ results = startpage.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This should be the title')
+ self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/')
+ self.assertEqual(results[0]['content'], 'This should be the content.')
+
+ html = """
+ <div class='result' style=' *width : auto; *margin-right : 10%;'>
+ <h3>
+ <a href='http://www.google.com/aclk?sa=l&ai=C' id='title_2' name='title_2' >
+ This should be the title
+ </a>
+ <span id='title_stars_2' name='title_stars_2'> </span>
+ </h3>
+ <p class='desc'>
+ This should be the content.
+ </p>
+ <p>
+ <span class='url'>www.speed<b>test</b>.net/fr/
+ </span>
+ -
+ <A class="proxy" id="proxy_link" HREF="https://ixquick-proxy.com/do/spg/proxy?ep=&edata=&ek=&ekdata="
+ class='proxy'>
+ Navigation avec Ixquick Proxy
+ </A>
+ -
+ <A HREF="https://ixquick-proxy.com/do/spg/highlight.pl?l=francais&c=hf&cat=web&q=test&rl=NONE&rid=
+ &hlq=https://startpage.com/do/search&mtabp=-1&mtcmd=process_search&mtlanguage=francais&mtengine0=
+ &mtcat=web&u=http:%2F%2Fwww.speedtest.net%2Ffr%2F" class='proxy'>
+ Mis en surbrillance
+ </A>
+ </p>
+ </div>
+ <div class='result' style=' *width : auto; *margin-right : 10%;'>
+ <h3>
+ <span id='title_stars_2' name='title_stars_2'> </span>
+ </h3>
+ <p class='desc'>
+ This should be the content.
+ </p>
+ <p>
+ <span class='url'>www.speed<b>test</b>.net/fr/
+ </span>
+ </p>
+ </div>
+ <div class='result' style=' *width : auto; *margin-right : 10%;'>
+ <h3>
+ <a href='http://this.should.be.the.link/' id='title_2' name='title_2' >
+ This should be the title
+ </a>
+ <span id='title_stars_2' name='title_stars_2'> </span>
+ </h3>
+ <p>
+ <span class='url'>www.speed<b>test</b>.net/fr/
+ </span>
+ -
+ <A class="proxy" id="proxy_link" HREF="https://ixquick-proxy.com/do/spg/proxy?ep=&edata=&ek=&ekdata="
+ class='proxy'>
+ Navigation avec Ixquick Proxy
+ </A>
+ -
+ <A HREF="https://ixquick-proxy.com/do/spg/highlight.pl?l=francais&c=hf&cat=web&q=test&rl=NONE&rid=
+ &hlq=https://startpage.com/do/search&mtabp=-1&mtcmd=process_search&mtlanguage=francais&mtengine0=
+ &mtcat=web&u=http:%2F%2Fwww.speedtest.net%2Ffr%2F" class='proxy'>
+ Mis en surbrillance
+ </A>
+ </p>
+ </div>
+ """
+ response = mock.Mock(content=html)
+ results = startpage.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['content'], '')
diff --git a/searx/tests/engines/test_subtitleseeker.py b/searx/tests/engines/test_subtitleseeker.py
new file mode 100644
index 000000000..a641601b2
--- /dev/null
+++ b/searx/tests/engines/test_subtitleseeker.py
@@ -0,0 +1,169 @@
+from collections import defaultdict
+import mock
+from searx.engines import subtitleseeker
+from searx.testing import SearxTestCase
+
+
+class TestSubtitleseekerEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ params = subtitleseeker.request(query, dicto)
+ self.assertTrue('url' in params)
+ self.assertTrue(query in params['url'])
+ self.assertTrue('subtitleseeker.com' in params['url'])
+
+ def test_response(self):
+ dicto = defaultdict(dict)
+ dicto['language'] = 'fr_FR'
+ response = mock.Mock(search_params=dicto)
+
+ self.assertRaises(AttributeError, subtitleseeker.response, None)
+ self.assertRaises(AttributeError, subtitleseeker.response, [])
+ self.assertRaises(AttributeError, subtitleseeker.response, '')
+ self.assertRaises(AttributeError, subtitleseeker.response, '[]')
+
+ response = mock.Mock(text='<html></html>', search_params=dicto)
+ self.assertEqual(subtitleseeker.response(response), [])
+
+ html = """
+ <div class="boxRows">
+ <div class="boxRowsInner" style="width:600px;">
+ <img src="http://static.subtitleseeker.com/images/movie.gif"
+ style="width:16px; height:16px;" class="icon">
+ <a href="http://this.is.the.url/"
+ class="blue" title="Title subtitle" >
+ This is the Title
+ </a>
+ <br><br>
+ <span class="f10b grey-dark arial" style="padding:0px 0px 5px 20px">
+ "Alternative Title"
+ </span>
+ </div>
+ <div class="boxRowsInner f12b red" style="width:70px;">
+ 1998
+ </div>
+ <div class="boxRowsInner grey-web f12" style="width:120px;">
+ <img src="http://static.subtitleseeker.com/images/basket_put.png"
+ style="width:16px; height:16px;" class="icon">
+ 1039 Subs
+ </div>
+ <div class="boxRowsInner grey-web f10" style="width:130px;">
+ <img src="http://static.subtitleseeker.com/images/arrow_refresh_small.png"
+ style="width:16px; height:16px;" class="icon">
+ 1 hours ago
+ </div>
+ <div class="clear"></div>
+ </div>
+ """
+ response = mock.Mock(text=html, search_params=dicto)
+ results = subtitleseeker.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the Title')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/French/')
+ self.assertIn('1998', results[0]['content'])
+ self.assertIn('1039 Subs', results[0]['content'])
+ self.assertIn('Alternative Title', results[0]['content'])
+
+ html = """
+ <div class="boxRows">
+ <div class="boxRowsInner" style="width:600px;">
+ <img src="http://static.subtitleseeker.com/images/movie.gif"
+ style="width:16px; height:16px;" class="icon">
+ <a href="http://this.is.the.url/"
+ class="blue" title="Title subtitle" >
+ This is the Title
+ </a>
+ </div>
+ <div class="boxRowsInner f12b red" style="width:70px;">
+ 1998
+ </div>
+ <div class="boxRowsInner grey-web f12" style="width:120px;">
+ <img src="http://static.subtitleseeker.com/images/basket_put.png"
+ style="width:16px; height:16px;" class="icon">
+ 1039 Subs
+ </div>
+ <div class="boxRowsInner grey-web f10" style="width:130px;">
+ <img src="http://static.subtitleseeker.com/images/arrow_refresh_small.png"
+ style="width:16px; height:16px;" class="icon">
+ 1 hours ago
+ </div>
+ <div class="clear"></div>
+ </div>
+ """
+ dicto['language'] = 'all'
+ response = mock.Mock(text=html, search_params=dicto)
+ results = subtitleseeker.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the Title')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/')
+ self.assertIn('1998', results[0]['content'])
+ self.assertIn('1039 Subs', results[0]['content'])
+
+ html = """
+ <div class="boxRows">
+ <div class="boxRowsInner" style="width:600px;">
+ <img src="http://static.subtitleseeker.com/images/movie.gif"
+ style="width:16px; height:16px;" class="icon">
+ <a href="http://this.is.the.url/"
+ class="blue" title="Title subtitle" >
+ This is the Title
+ </a>
+ </div>
+ <div class="boxRowsInner f12b red" style="width:70px;">
+ 1998
+ </div>
+ <div class="boxRowsInner grey-web f12" style="width:120px;">
+ <img src="http://static.subtitleseeker.com/images/basket_put.png"
+ style="width:16px; height:16px;" class="icon">
+ 1039 Subs
+ </div>
+ <div class="boxRowsInner grey-web f10" style="width:130px;">
+ <img src="http://static.subtitleseeker.com/images/arrow_refresh_small.png"
+ style="width:16px; height:16px;" class="icon">
+ 1 hours ago
+ </div>
+ <div class="clear"></div>
+ </div>
+ """
+ subtitleseeker.language = 'English'
+ response = mock.Mock(text=html, search_params=dicto)
+ results = subtitleseeker.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the Title')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/English/')
+ self.assertIn('1998', results[0]['content'])
+ self.assertIn('1039 Subs', results[0]['content'])
+
+ html = """
+ <div class="boxRowsInner" style="width:600px;">
+ <img src="http://static.subtitleseeker.com/images/movie.gif"
+ style="width:16px; height:16px;" class="icon">
+ <a href="http://this.is.the.url/"
+ class="blue" title="Title subtitle" >
+ This is the Title
+ </a>
+ </div>
+ <div class="boxRowsInner f12b red" style="width:70px;">
+ 1998
+ </div>
+ <div class="boxRowsInner grey-web f12" style="width:120px;">
+ <img src="http://static.subtitleseeker.com/images/basket_put.png"
+ style="width:16px; height:16px;" class="icon">
+ 1039 Subs
+ </div>
+ <div class="boxRowsInner grey-web f10" style="width:130px;">
+ <img src="http://static.subtitleseeker.com/images/arrow_refresh_small.png"
+ style="width:16px; height:16px;" class="icon">
+ 1 hours ago
+ </div>
+ """
+ response = mock.Mock(text=html, search_params=dicto)
+ results = subtitleseeker.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/engines/test_twitter.py b/searx/tests/engines/test_twitter.py
new file mode 100644
index 000000000..b444b48ee
--- /dev/null
+++ b/searx/tests/engines/test_twitter.py
@@ -0,0 +1,502 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import twitter
+from searx.testing import SearxTestCase
+
+
+class TestTwitterEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 0
+ dicto['language'] = 'fr_FR'
+ params = twitter.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('twitter.com', params['url'])
+ self.assertIn('cookies', params)
+ self.assertIn('lang', params['cookies'])
+ self.assertIn('fr', params['cookies']['lang'])
+
+ dicto['language'] = 'all'
+ params = twitter.request(query, dicto)
+ self.assertIn('cookies', params)
+ self.assertIn('lang', params['cookies'])
+ self.assertIn('en', params['cookies']['lang'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, twitter.response, None)
+ self.assertRaises(AttributeError, twitter.response, [])
+ self.assertRaises(AttributeError, twitter.response, '')
+ self.assertRaises(AttributeError, twitter.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(twitter.response(response), [])
+
+ html = """
+ <li class="js-stream-item stream-item stream-item expanding-stream-item" data-item-id="563005573290287105"
+ id="stream-item-tweet-563005573290287105" data-item-type="tweet">
+ <div class="tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable
+ js-original-tweet has-cards has-native-media" data-tweet-id="563005573290287105" data-disclosure-type=""
+ data-item-id="563005573290287105" data-screen-name="Jalopnik" data-name="Jalopnik"
+ data-user-id="3060631" data-has-native-media="true" data-has-cards="true" data-card-type="photo"
+ data-expanded-footer="&lt;div class=&quot;js-tweet-details-fixer
+ tweet-details-fixer&quot;&gt;&#10;&#10;&#10;
+ &lt;div class=&quot;cards-media-container js-media-container&quot;&gt;&lt;div
+ data-card-url=&quot;//twitter.com/Jalopnik/status/563005573290287105/photo/1&quot; data-card-type=&quot;
+ photo&quot; class=&quot;cards-base cards-multimedia&quot; data-element-context=&quot;platform_photo_card
+ &quot;&gt;&#10;&#10;&#10; &lt;a class=&quot;media media-thumbnail twitter-timeline-link is-preview
+ &quot; data-url=&quot;https://pbs.twimg.com/media/B9Aylf5IMAAuziP.jpg:large&quot;
+ data-resolved-url-large=&quot;https://pbs.twimg.com/media/B9Aylf5IMAAuziP.jpg:large&quot;
+ href=&quot;//twitter.com/Jalopnik/status/563005573290287105/photo/1&quot;&gt;&#10;
+ &lt;div class=&quot;&quot;&gt;&#10; &lt;img src=&quot;
+ https://pbs.twimg.com/media/B9Aylf5IMAAuziP.jpg&quot;
+ alt=&quot;Embedded image permalink&quot; width=&quot;636&quot; height=&quot;309&quot;&gt;&#10;
+ &lt;/div&gt;&#10;&#10; &lt;/a&gt;&#10;&#10; &lt;div class=&quot;cards-content&quot;&gt;&#10;
+ &lt;div class=&quot;byline&quot;&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10;
+ &#10;&lt;/div&gt;&#10;&#10;&#10;&#10;&#10;&lt;/div&gt;&#10;&#10;&#10;&#10; &lt;div
+ class=&quot;js-machine-translated-tweet-container&quot;&gt;&lt;/div&gt;&#10; &lt;div
+ class=&quot;js-tweet-stats-container tweet-stats-container &quot;&gt;&#10; &lt;/div&gt;&#10;&#10;
+ &lt;div class=&quot;client-and-actions&quot;&gt;&#10; &lt;span class=&quot;metadata&quot;&gt;&#10;
+ &lt;span&gt;5:06 PM - 4 Feb 2015&lt;/span&gt;&#10;&#10; &amp;middot; &lt;a
+ class=&quot;permalink-link js-permalink js-nav&quot; href=&quot;/Jalopnik/status/563005573290287105
+ &quot;tabindex=&quot;-1&quot;&gt;Details&lt;/a&gt;&#10; &#10;&#10; &#10; &#10;
+ &#10;&#10; &lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;/div&gt;&#10;" data-you-follow="false"
+ data-you-block="false">
+ <div class="context">
+ </div>
+ <div class="content">
+ <div class="stream-item-header">
+ <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav"
+ href="/Jalopnik" data-user-id="3060631">
+ <img class="avatar js-action-profile-avatar"
+ src="https://pbs.twimg.com/profile_images/2976430168/5cd4a59_bigger.jpeg" alt="">
+ <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part>
+ Jalopnik
+ </strong>
+ <span>&rlm;</span>
+ <span class="username js-action-profile-name" data-aria-label-part>
+ <s>@</s><b>TitleName</b>
+ </span>
+ </a>
+ <small class="time">
+ <a href="/this.is.the.url"
+ class="tweet-timestamp js-permalink js-nav js-tooltip" title="5:06 PM - 4 Feb 2015" >
+ <span class="u-hiddenVisually" data-aria-label-part="last">17 minutes ago</span>
+ </a>
+ </small>
+ </div>
+ <p class="js-tweet-text tweet-text" lang="en" data-aria-label-part="0">
+ This is the content étude à€
+ <a href="http://t.co/nRWsqQAwBL" rel="nofollow" dir="ltr"
+ data-expanded-url="http://jalo.ps/ReMENu4" class="twitter-timeline-link"
+ target="_blank" title="http://jalo.ps/ReMENu4" >
+ <span class="tco-ellipsis">
+ </span>
+ <span class="invisible">http://</span><span class="js-display-url">link.in.tweet</span>
+ <span class="invisible"></span>
+ <span class="tco-ellipsis">
+ <span class="invisible">&nbsp;</span>
+ </span>
+ </a>
+ <a href="http://t.co/rbFsfeE0l3" class="twitter-timeline-link u-hidden"
+ data-pre-embedded="true" dir="ltr">
+ pic.twitter.com/rbFsfeE0l3
+ </a>
+ </p>
+ <div class="expanded-content js-tweet-details-dropdown">
+ </div>
+ <div class="stream-item-footer">
+ <a class="details with-icn js-details" href="/Jalopnik/status/563005573290287105">
+ <span class="Icon Icon--photo">
+ </span>
+ <b>
+ <span class="expand-stream-item js-view-details">
+ View photo
+ </span>
+ <span class="collapse-stream-item js-hide-details">
+ Hide photo
+ </span>
+ </b>
+ </a>
+ <span class="ProfileTweet-action--reply u-hiddenVisually">
+ <span class="ProfileTweet-actionCount" aria-hidden="true" data-tweet-stat-count="0">
+ <span class="ProfileTweet-actionCountForAria" >0 replies</span>
+ </span>
+ </span>
+ <span class="ProfileTweet-action--retweet u-hiddenVisually">
+ <span class="ProfileTweet-actionCount" data-tweet-stat-count="8">
+ <span class="ProfileTweet-actionCountForAria" data-aria-label-part>8 retweets</span>
+ </span>
+ </span>
+ <span class="ProfileTweet-action--favorite u-hiddenVisually">
+ <span class="ProfileTweet-actionCount" data-tweet-stat-count="14">
+ <span class="ProfileTweet-actionCountForAria" data-aria-label-part>14 favorites</span>
+ </span>
+ </span>
+ <div role="group" aria-label="Tweet actions" class="ProfileTweet-actionList u-cf js-actions">
+ <div class="ProfileTweet-action ProfileTweet-action--reply">
+ <button class="ProfileTweet-actionButton u-textUserColorHover js-actionButton
+ js-actionReply" data-modal="ProfileTweet-reply" type="button" title="Reply">
+ <span class="Icon Icon--reply">
+ </span>
+ <span class="u-hiddenVisually">Reply</span>
+ <span class="ProfileTweet-actionCount u-textUserColorHover
+ ProfileTweet-actionCount--isZero">
+ <span class="ProfileTweet-actionCountForPresentation" aria-hidden="true">
+ </span>
+ </span>
+ </button>
+ </div>
+ <div class="ProfileTweet-action ProfileTweet-action--retweet js-toggleState js-toggleRt">
+ <button class="ProfileTweet-actionButton js-actionButton js-actionRetweet js-tooltip"
+ title="Retweet" data-modal="ProfileTweet-retweet" type="button">
+ <span class="Icon Icon--retweet">
+ </span>
+ <span class="u-hiddenVisually">Retweet</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">8</span>
+ </span>
+ </button>
+ <button class="ProfileTweet-actionButtonUndo js-actionButton js-actionRetweet"
+ data-modal="ProfileTweet-retweet" title="Undo retweet" type="button">
+ <span class="Icon Icon--retweet">
+ </span>
+ <span class="u-hiddenVisually">Retweeted</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">8</span>
+ </span>
+ </button>
+ </div>
+ <div class="ProfileTweet-action ProfileTweet-action--favorite js-toggleState">
+ <button class="ProfileTweet-actionButton js-actionButton js-actionFavorite js-tooltip"
+ title="Favorite" type="button">
+ <span class="Icon Icon--favorite">
+ </span>
+ <span class="u-hiddenVisually">Favorite</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">14</span>
+ </span>
+ </button>
+ <button class="ProfileTweet-actionButtonUndo u-linkClean js-actionButton
+ js-actionFavorite" title="Undo favorite" type="button">
+ <span class="Icon Icon--favorite">
+ </span>
+ <span class="u-hiddenVisually">Favorited</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">
+ 14
+ </span>
+ </span>
+ </button>
+ </div>
+ <div class="ProfileTweet-action ProfileTweet-action--more js-more-ProfileTweet-actions">
+ <div class="dropdown">
+ <button class="ProfileTweet-actionButton u-textUserColorHover dropdown-toggle
+ js-tooltip js-dropdown-toggle" type="button" title="More">
+ <span class="Icon Icon--dots">
+ </span>
+ <span class="u-hiddenVisually">More</span>
+ </button>
+ <div class="dropdown-menu">
+ <div class="dropdown-caret">
+ <div class="caret-outer">
+ </div>
+ <div class="caret-inner">
+ </div>
+ </div>
+ <ul>
+ <li class="share-via-dm js-actionShareViaDM" data-nav="share_tweet_dm">
+ <button type="button" class="dropdown-link">
+ Share via Direct Message
+ </button>
+ </li>
+ <li class="embed-link js-actionEmbedTweet" data-nav="embed_tweet">
+ <button type="button" class="dropdown-link">
+ Embed Tweet
+ </button>
+ </li>
+ <li class="mute-user-item pretty-link">
+ <button type="button" class="dropdown-link">
+ Mute
+ </button>
+ </li>
+ <li class="unmute-user-item pretty-link">
+ <button type="button" class="dropdown-link">
+ Unmute
+ </button>
+ </li>
+ <li class="block-or-report-link js-actionBlockOrReport"
+ data-nav="block_or_report">
+ <button type="button" class="dropdown-link">
+ Block or report
+ </button>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </li>
+ """
+ response = mock.Mock(text=html)
+ results = twitter.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], '@TitleName')
+ self.assertEqual(results[0]['url'], 'https://twitter.com/this.is.the.url')
+ self.assertIn(u'This is the content', results[0]['content'])
+ # self.assertIn(u'This is the content étude à€', results[0]['content'])
+
+ html = """
+ <li class="js-stream-item stream-item stream-item expanding-stream-item" data-item-id="563005573290287105"
+ id="stream-item-tweet-563005573290287105" data-item-type="tweet">
+ <div class="tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable
+ js-original-tweet has-cards has-native-media" data-tweet-id="563005573290287105" data-disclosure-type=""
+ data-item-id="563005573290287105" data-screen-name="Jalopnik" data-name="Jalopnik"
+ data-user-id="3060631" data-has-native-media="true" data-has-cards="true" data-card-type="photo"
+ data-expanded-footer="&lt;div class=&quot;js-tweet-details-fixer
+ tweet-details-fixer&quot;&gt;&#10;&#10;&#10;
+ &lt;div class=&quot;cards-media-container js-media-container&quot;&gt;&lt;div
+ data-card-url=&quot;//twitter.com/Jalopnik/status/563005573290287105/photo/1&quot; data-card-type=&quot;
+ photo&quot; class=&quot;cards-base cards-multimedia&quot; data-element-context=&quot;platform_photo_card
+ &quot;&gt;&#10;&#10;&#10; &lt;a class=&quot;media media-thumbnail twitter-timeline-link is-preview
+ &quot; data-url=&quot;https://pbs.twimg.com/media/B9Aylf5IMAAuziP.jpg:large&quot;
+ data-resolved-url-large=&quot;https://pbs.twimg.com/media/B9Aylf5IMAAuziP.jpg:large&quot;
+ href=&quot;//twitter.com/Jalopnik/status/563005573290287105/photo/1&quot;&gt;&#10;
+ &lt;div class=&quot;&quot;&gt;&#10; &lt;img src=&quot;
+ https://pbs.twimg.com/media/B9Aylf5IMAAuziP.jpg&quot;
+ alt=&quot;Embedded image permalink&quot; width=&quot;636&quot; height=&quot;309&quot;&gt;&#10;
+ &lt;/div&gt;&#10;&#10; &lt;/a&gt;&#10;&#10; &lt;div class=&quot;cards-content&quot;&gt;&#10;
+ &lt;div class=&quot;byline&quot;&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10;
+ &#10;&lt;/div&gt;&#10;&#10;&#10;&#10;&#10;&lt;/div&gt;&#10;&#10;&#10;&#10; &lt;div
+ class=&quot;js-machine-translated-tweet-container&quot;&gt;&lt;/div&gt;&#10; &lt;div
+ class=&quot;js-tweet-stats-container tweet-stats-container &quot;&gt;&#10; &lt;/div&gt;&#10;&#10;
+ &lt;div class=&quot;client-and-actions&quot;&gt;&#10; &lt;span class=&quot;metadata&quot;&gt;&#10;
+ &lt;span&gt;5:06 PM - 4 Feb 2015&lt;/span&gt;&#10;&#10; &amp;middot; &lt;a
+ class=&quot;permalink-link js-permalink js-nav&quot; href=&quot;/Jalopnik/status/563005573290287105
+ &quot;tabindex=&quot;-1&quot;&gt;Details&lt;/a&gt;&#10; &#10;&#10; &#10; &#10;
+ &#10;&#10; &lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;/div&gt;&#10;" data-you-follow="false"
+ data-you-block="false">
+ <div class="context">
+ </div>
+ <div class="content">
+ <div class="stream-item-header">
+ <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav"
+ href="/Jalopnik" data-user-id="3060631">
+ <img class="avatar js-action-profile-avatar"
+ src="https://pbs.twimg.com/profile_images/2976430168/5cd4a59_bigger.jpeg" alt="">
+ <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part>
+ Jalopnik
+ </strong>
+ <span>&rlm;</span>
+ <span class="username js-action-profile-name" data-aria-label-part>
+ <s>@</s><b>TitleName</b>
+ </span>
+ </a>
+ <small class="time">
+ <a href="/this.is.the.url"
+ class="tweet-timestamp js-permalink js-nav js-tooltip" title="5:06 PM - 4 Feb 2015" >
+ <span class="_timestamp js-short-timestamp js-relative-timestamp" data-time="1423065963"
+ data-time-ms="1423065963000" data-long-form="true" aria-hidden="true">
+ 17m
+ </span>
+ <span class="u-hiddenVisually" data-aria-label-part="last">17 minutes ago</span>
+ </a>
+ </small>
+ </div>
+ <p class="js-tweet-text tweet-text" lang="en" data-aria-label-part="0">
+ This is the content étude à€
+ <a href="http://t.co/nRWsqQAwBL" rel="nofollow" dir="ltr"
+ data-expanded-url="http://jalo.ps/ReMENu4" class="twitter-timeline-link"
+ target="_blank" title="http://jalo.ps/ReMENu4" >
+ <span class="tco-ellipsis">
+ </span>
+ <span class="invisible">http://</span><span class="js-display-url">link.in.tweet</span>
+ <span class="invisible"></span>
+ <span class="tco-ellipsis">
+ <span class="invisible">&nbsp;</span>
+ </span>
+ </a>
+ <a href="http://t.co/rbFsfeE0l3" class="twitter-timeline-link u-hidden"
+ data-pre-embedded="true" dir="ltr">
+ pic.twitter.com/rbFsfeE0l3
+ </a>
+ </p>
+ <div class="expanded-content js-tweet-details-dropdown">
+ </div>
+ <div class="stream-item-footer">
+ <a class="details with-icn js-details" href="/Jalopnik/status/563005573290287105">
+ <span class="Icon Icon--photo">
+ </span>
+ <b>
+ <span class="expand-stream-item js-view-details">
+ View photo
+ </span>
+ <span class="collapse-stream-item js-hide-details">
+ Hide photo
+ </span>
+ </b>
+ </a>
+ <span class="ProfileTweet-action--reply u-hiddenVisually">
+ <span class="ProfileTweet-actionCount" aria-hidden="true" data-tweet-stat-count="0">
+ <span class="ProfileTweet-actionCountForAria" >0 replies</span>
+ </span>
+ </span>
+ <span class="ProfileTweet-action--retweet u-hiddenVisually">
+ <span class="ProfileTweet-actionCount" data-tweet-stat-count="8">
+ <span class="ProfileTweet-actionCountForAria" data-aria-label-part>8 retweets</span>
+ </span>
+ </span>
+ <span class="ProfileTweet-action--favorite u-hiddenVisually">
+ <span class="ProfileTweet-actionCount" data-tweet-stat-count="14">
+ <span class="ProfileTweet-actionCountForAria" data-aria-label-part>14 favorites</span>
+ </span>
+ </span>
+ <div role="group" aria-label="Tweet actions" class="ProfileTweet-actionList u-cf js-actions">
+ <div class="ProfileTweet-action ProfileTweet-action--reply">
+ <button class="ProfileTweet-actionButton u-textUserColorHover js-actionButton
+ js-actionReply" data-modal="ProfileTweet-reply" type="button" title="Reply">
+ <span class="Icon Icon--reply">
+ </span>
+ <span class="u-hiddenVisually">Reply</span>
+ <span class="ProfileTweet-actionCount u-textUserColorHover
+ ProfileTweet-actionCount--isZero">
+ <span class="ProfileTweet-actionCountForPresentation" aria-hidden="true">
+ </span>
+ </span>
+ </button>
+ </div>
+ <div class="ProfileTweet-action ProfileTweet-action--retweet js-toggleState js-toggleRt">
+ <button class="ProfileTweet-actionButton js-actionButton js-actionRetweet js-tooltip"
+ title="Retweet" data-modal="ProfileTweet-retweet" type="button">
+ <span class="Icon Icon--retweet">
+ </span>
+ <span class="u-hiddenVisually">Retweet</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">8</span>
+ </span>
+ </button>
+ <button class="ProfileTweet-actionButtonUndo js-actionButton js-actionRetweet"
+ data-modal="ProfileTweet-retweet" title="Undo retweet" type="button">
+ <span class="Icon Icon--retweet">
+ </span>
+ <span class="u-hiddenVisually">Retweeted</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">8</span>
+ </span>
+ </button>
+ </div>
+ <div class="ProfileTweet-action ProfileTweet-action--favorite js-toggleState">
+ <button class="ProfileTweet-actionButton js-actionButton js-actionFavorite js-tooltip"
+ title="Favorite" type="button">
+ <span class="Icon Icon--favorite">
+ </span>
+ <span class="u-hiddenVisually">Favorite</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">14</span>
+ </span>
+ </button>
+ <button class="ProfileTweet-actionButtonUndo u-linkClean js-actionButton
+ js-actionFavorite" title="Undo favorite" type="button">
+ <span class="Icon Icon--favorite">
+ </span>
+ <span class="u-hiddenVisually">Favorited</span>
+ <span class="ProfileTweet-actionCount">
+ <span class="ProfileTweet-actionCountForPresentation">
+ 14
+ </span>
+ </span>
+ </button>
+ </div>
+ <div class="ProfileTweet-action ProfileTweet-action--more js-more-ProfileTweet-actions">
+ <div class="dropdown">
+ <button class="ProfileTweet-actionButton u-textUserColorHover dropdown-toggle
+ js-tooltip js-dropdown-toggle" type="button" title="More">
+ <span class="Icon Icon--dots">
+ </span>
+ <span class="u-hiddenVisually">More</span>
+ </button>
+ <div class="dropdown-menu">
+ <div class="dropdown-caret">
+ <div class="caret-outer">
+ </div>
+ <div class="caret-inner">
+ </div>
+ </div>
+ <ul>
+ <li class="share-via-dm js-actionShareViaDM" data-nav="share_tweet_dm">
+ <button type="button" class="dropdown-link">
+ Share via Direct Message
+ </button>
+ </li>
+ <li class="embed-link js-actionEmbedTweet" data-nav="embed_tweet">
+ <button type="button" class="dropdown-link">
+ Embed Tweet
+ </button>
+ </li>
+ <li class="mute-user-item pretty-link">
+ <button type="button" class="dropdown-link">
+ Mute
+ </button>
+ </li>
+ <li class="unmute-user-item pretty-link">
+ <button type="button" class="dropdown-link">
+ Unmute
+ </button>
+ </li>
+ <li class="block-or-report-link js-actionBlockOrReport"
+ data-nav="block_or_report">
+ <button type="button" class="dropdown-link">
+ Block or report
+ </button>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </li>
+ """
+ response = mock.Mock(text=html)
+ results = twitter.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], '@TitleName')
+ self.assertEqual(results[0]['url'], 'https://twitter.com/this.is.the.url')
+ self.assertIn(u'This is the content', results[0]['content'])
+
+ html = """
+ <li class="b_algo" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO">
+ <div Class="sa_mc">
+ <div class="sb_tlst">
+ <h2>
+ <a href="http://this.should.be.the.link/" h="ID=SERP,5124.1">
+ <strong>This</strong> should be the title</a>
+ </h2>
+ </div>
+ <div class="sb_meta">
+ <cite>
+ <strong>this</strong>.meta.com</cite>
+ <span class="c_tlbxTrg">
+ <span class="c_tlbxH" H="BASE:CACHEDPAGEDEFAULT" K="SERP,5125.1">
+ </span>
+ </span>
+ </div>
+ <p>
+ <strong>This</strong> should be the content.</p>
+ </div>
+ </li>
+ """
+ response = mock.Mock(text=html)
+ results = twitter.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/engines/test_yacy.py b/searx/tests/engines/test_yacy.py
new file mode 100644
index 000000000..f49532cf4
--- /dev/null
+++ b/searx/tests/engines/test_yacy.py
@@ -0,0 +1,96 @@
+from collections import defaultdict
+import mock
+from searx.engines import yacy
+from searx.testing import SearxTestCase
+
+
+class TestYacyEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = yacy.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('localhost', params['url'])
+ self.assertIn('fr', params['url'])
+
+ dicto['language'] = 'all'
+ params = yacy.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertNotIn('lr=lang_', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, yacy.response, None)
+ self.assertRaises(AttributeError, yacy.response, [])
+ self.assertRaises(AttributeError, yacy.response, '')
+ self.assertRaises(AttributeError, yacy.response, '[]')
+
+ response = mock.Mock(text='{}')
+ self.assertEqual(yacy.response(response), [])
+
+ response = mock.Mock(text='{"data": []}')
+ self.assertEqual(yacy.response(response), [])
+
+ json = """
+ {
+ "channels": [
+ {
+ "title": "YaCy P2P-Search for test",
+ "description": "Search for test",
+ "link": "http://search.yacy.de:7001/yacysearch.html?query=test&amp;resource=global&amp;contentdom=0",
+ "image": {
+ "url": "http://search.yacy.de:7001/env/grafics/yacy.png",
+ "title": "Search for test",
+ "link": "http://search.yacy.de:7001/yacysearch.html?query=test&amp;resource=global&amp;contentdom=0"
+ },
+ "totalResults": "249",
+ "startIndex": "0",
+ "itemsPerPage": "5",
+ "searchTerms": "test",
+ "items": [
+ {
+ "title": "This is the title",
+ "link": "http://this.is.the.url",
+ "code": "",
+ "description": "This should be the content",
+ "pubDate": "Sat, 08 Jun 2013 02:00:00 +0200",
+ "size": "44213",
+ "sizename": "43 kbyte",
+ "guid": "lzh_1T_5FP-A",
+ "faviconCode": "XTS4uQ_5FP-A",
+ "host": "www.gamestar.de",
+ "path": "/spiele/city-of-heroes-freedom/47019.html",
+ "file": "47019.html",
+ "urlhash": "lzh_1T_5FP-A",
+ "ranking": "0.20106804"
+ },
+ {
+ "title": "This is the title2",
+ "icon": "/ViewImage.png?maxwidth=96&amp;maxheight=96&amp;code=7EbAbW6BpPOA",
+ "image": "http://image.url/image.png",
+ "cache": "/ViewImage.png?quadratic=&amp;url=http://golem.ivwbox.de/cgi-bin/ivw/CP/G_INET?d=14071378",
+ "url": "http://this.is.the.url",
+ "urlhash": "7EbAbW6BpPOA",
+ "host": "www.golem.de",
+ "width": "-1",
+ "height": "-1"
+ }
+ ]
+ }
+ ]
+ }
+ """
+ response = mock.Mock(text=json)
+ results = yacy.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url')
+ self.assertEqual(results[0]['content'], 'This should be the content')
+ self.assertEqual(results[1]['img_src'], 'http://image.url/image.png')
+ self.assertEqual(results[1]['content'], '')
+ self.assertEqual(results[1]['url'], 'http://this.is.the.url')
+ self.assertEqual(results[1]['title'], 'This is the title2')
diff --git a/searx/tests/engines/test_yahoo.py b/searx/tests/engines/test_yahoo.py
new file mode 100644
index 000000000..e5c78701d
--- /dev/null
+++ b/searx/tests/engines/test_yahoo.py
@@ -0,0 +1,154 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import yahoo
+from searx.testing import SearxTestCase
+
+
+class TestYahooEngine(SearxTestCase):
+
+ def test_parse_url(self):
+ test_url = 'http://r.search.yahoo.com/_ylt=A0LEb9JUSKcAEGRXNyoA;_ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb' +\
+ '2xvA2Jm2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10/RU=https%3a%2f%2fthis.is.the.url%2f/RK=0/RS=' +\
+ 'dtcJsfP4mEeBOjnVfUQ-'
+ url = yahoo.parse_url(test_url)
+ self.assertEqual('https://this.is.the.url/', url)
+
+ test_url = 'http://r.search.yahoo.com/_ylt=A0LElb9JUSKcAEGRXNyoA;_ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb' +\
+ '2xvA2Jm2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10/RU=https%3a%2f%2fthis.is.the.url%2f/RS=' +\
+ 'dtcJsfP4mEeBOjnVfUQ-'
+ url = yahoo.parse_url(test_url)
+ self.assertEqual('https://this.is.the.url/', url)
+
+ test_url = 'https://this.is.the.url/'
+ url = yahoo.parse_url(test_url)
+ self.assertEqual('https://this.is.the.url/', url)
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = yahoo.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('search.yahoo.com', params['url'])
+ self.assertIn('fr', params['url'])
+ self.assertIn('cookies', params)
+ self.assertIn('sB', params['cookies'])
+ self.assertIn('fr', params['cookies']['sB'])
+
+ dicto['language'] = 'all'
+ params = yahoo.request(query, dicto)
+ self.assertIn('cookies', params)
+ self.assertIn('sB', params['cookies'])
+ self.assertIn('en', params['cookies']['sB'])
+ self.assertIn('en', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, yahoo.response, None)
+ self.assertRaises(AttributeError, yahoo.response, [])
+ self.assertRaises(AttributeError, yahoo.response, '')
+ self.assertRaises(AttributeError, yahoo.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(yahoo.response(response), [])
+
+ html = """
+ <div class="res">
+ <div>
+ <h3>
+ <a id="link-1" class="yschttl spt" href="http://r.search.yahoo.com/_ylt=A0LEVzClb9JUSKcAEGRXNyoA;
+ _ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb2xvA2JmMQR2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10
+ /RU=https%3a%2f%2fthis.is.the.url%2f/RK=0/RS=dtcJsfP4mEeBOjnVfUQ-"target="_blank" data-bk="5063.1">
+ <b>This</b> is the title
+ </a>
+ </h3>
+ </div>
+ <span class="url" dir="ltr">www.<b>test</b>.com</span>
+ <div class="abstr">
+ <b>This</b> is the content
+ </div>
+ </div>
+ <div id="satat" data-bns="Yahoo" data-bk="124.1">
+ <h2>Also Try</h2>
+ <table>
+ <tbody>
+ <tr>
+ <td>
+ <a id="srpnat0" class="" href="https://search.yahoo.com/search=rs-bottom" >
+ <span>
+ <b></b>This is <b>the suggestion</b>
+ </span>
+ </a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = yahoo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'https://this.is.the.url/')
+ self.assertEqual(results[0]['content'], 'This is the content')
+ self.assertEqual(results[1]['suggestion'], 'This is the suggestion')
+
+ html = """
+ <div class="res">
+ <div>
+ <h3>
+ <a id="link-1" class="yschttl spt" href="http://r.search.yahoo.com/_ylt=A0LEVzClb9JUSKcAEGRXNyoA;
+ _ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb2xvA2JmMQR2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10
+ /RU=https%3a%2f%2fthis.is.the.url%2f/RK=0/RS=dtcJsfP4mEeBOjnVfUQ-"target="_blank" data-bk="5063.1">
+ <b>This</b> is the title
+ </a>
+ </h3>
+ </div>
+ <span class="url" dir="ltr">www.<b>test</b>.com</span>
+ <div class="abstr">
+ <b>This</b> is the content
+ </div>
+ </div>
+ <div class="res">
+ <div>
+ <h3>
+ <a id="link-1" class="yschttl spt">
+ <b>This</b> is the title
+ </a>
+ </h3>
+ </div>
+ <span class="url" dir="ltr">www.<b>test</b>.com</span>
+ <div class="abstr">
+ <b>This</b> is the content
+ </div>
+ </div>
+ <div class="res">
+ <div>
+ <h3>
+ </h3>
+ </div>
+ <span class="url" dir="ltr">www.<b>test</b>.com</span>
+ <div class="abstr">
+ <b>This</b> is the content
+ </div>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = yahoo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the title')
+ self.assertEqual(results[0]['url'], 'https://this.is.the.url/')
+ self.assertEqual(results[0]['content'], 'This is the content')
+
+ html = """
+ <li class="b_algo" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO">
+ </li>
+ """
+ response = mock.Mock(text=html)
+ results = yahoo.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/engines/test_yahoo_news.py b/searx/tests/engines/test_yahoo_news.py
new file mode 100644
index 000000000..797dc11b7
--- /dev/null
+++ b/searx/tests/engines/test_yahoo_news.py
@@ -0,0 +1,143 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+from datetime import datetime
+import mock
+from searx.engines import yahoo_news
+from searx.testing import SearxTestCase
+
+
+class TestYahooNewsEngine(SearxTestCase):
+
+ def test_request(self):
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ dicto['language'] = 'fr_FR'
+ params = yahoo_news.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertIn(query, params['url'])
+ self.assertIn('news.search.yahoo.com', params['url'])
+ self.assertIn('fr', params['url'])
+ self.assertIn('cookies', params)
+ self.assertIn('sB', params['cookies'])
+ self.assertIn('fr', params['cookies']['sB'])
+
+ dicto['language'] = 'all'
+ params = yahoo_news.request(query, dicto)
+ self.assertIn('cookies', params)
+ self.assertIn('sB', params['cookies'])
+ self.assertIn('en', params['cookies']['sB'])
+ self.assertIn('en', params['url'])
+
+ def test_response(self):
+ self.assertRaises(AttributeError, yahoo_news.response, None)
+ self.assertRaises(AttributeError, yahoo_news.response, [])
+ self.assertRaises(AttributeError, yahoo_news.response, '')
+ self.assertRaises(AttributeError, yahoo_news.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(yahoo_news.response(response), [])
+
+ html = """
+ <div class="res">
+ <div>
+ <h3>
+ <a class="yschttl spt" href="http://this.is.the.url" target="_blank">
+ This is
+ the <b>title</b>...
+ </a>
+ </h3>
+ </div>
+ <span class="url">Business via Yahoo! Finance</span> &nbsp; <span class="timestamp">Feb 03 09:45am</span>
+ <div class="abstr">
+ This is the content
+ </div>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = yahoo_news.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]['title'], 'This is the title...')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/')
+ self.assertEqual(results[0]['content'], 'This is the content')
+
+ html = """
+ <div class="res">
+ <div>
+ <h3>
+ <a class="yschttl spt" href="http://this.is.the.url" target="_blank">
+ This is
+ the <b>title</b>...
+ </a>
+ </h3>
+ </div>
+ <span class="url">Business via Yahoo!</span> &nbsp; <span class="timestamp">2 hours, 22 minutes ago</span>
+ <div class="abstr">
+ This is the content
+ </div>
+ </div>
+ <div class="res">
+ <div>
+ <h3>
+ <a class="yschttl spt" href="http://this.is.the.url" target="_blank">
+ This is
+ the <b>title</b>...
+ </a>
+ </h3>
+ </div>
+ <span class="url">Business via Yahoo!</span> &nbsp; <span class="timestamp">22 minutes ago</span>
+ <div class="abstr">
+ This is the content
+ </div>
+ </div>
+ <div class="res">
+ <div>
+ <h3>
+ <a class="yschttl spt" href="http://this.is.the.url" target="_blank">
+ This is
+ the <b>title</b>...
+ </a>
+ </h3>
+ </div>
+ <span class="url">Business via Yahoo!</span> &nbsp; <span class="timestamp">Feb 03 09:45am 1900</span>
+ <div class="abstr">
+ This is the content
+ </div>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = yahoo_news.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 3)
+ self.assertEqual(results[0]['title'], 'This is the title...')
+ self.assertEqual(results[0]['url'], 'http://this.is.the.url/')
+ self.assertEqual(results[0]['content'], 'This is the content')
+ self.assertEqual(results[2]['publishedDate'].year, datetime.now().year)
+
+ html = """
+ <li class="b_algo" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO">
+ <div Class="sa_mc">
+ <div class="sb_tlst">
+ <h2>
+ <a href="http://this.should.be.the.link/" h="ID=SERP,5124.1">
+ <strong>This</strong> should be the title</a>
+ </h2>
+ </div>
+ <div class="sb_meta">
+ <cite>
+ <strong>this</strong>.meta.com</cite>
+ <span class="c_tlbxTrg">
+ <span class="c_tlbxH" H="BASE:CACHEDPAGEDEFAULT" K="SERP,5125.1">
+ </span>
+ </span>
+ </div>
+ <p>
+ <strong>This</strong> should be the content.</p>
+ </div>
+ </li>
+ """
+ response = mock.Mock(text=html)
+ results = yahoo_news.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 0)
diff --git a/searx/tests/test_engines.py b/searx/tests/test_engines.py
index 651da6dc2..9b1c12cb1 100644
--- a/searx/tests/test_engines.py
+++ b/searx/tests/test_engines.py
@@ -3,25 +3,39 @@ from searx.tests.engines.test_bing_images import * # noqa
from searx.tests.engines.test_bing_news import * # noqa
from searx.tests.engines.test_blekko_images import * # noqa
from searx.tests.engines.test_btdigg import * # noqa
+from searx.tests.engines.test_currency_convert import * # noqa
from searx.tests.engines.test_dailymotion import * # noqa
from searx.tests.engines.test_deezer import * # noqa
from searx.tests.engines.test_deviantart import * # noqa
from searx.tests.engines.test_digg import * # noqa
+from searx.tests.engines.test_duckduckgo import * # noqa
+from searx.tests.engines.test_duckduckgo_definitions import * # noqa
from searx.tests.engines.test_dummy import * # noqa
+from searx.tests.engines.test_faroo import * # noqa
from searx.tests.engines.test_flickr import * # noqa
from searx.tests.engines.test_flickr_noapi import * # noqa
from searx.tests.engines.test_gigablast import * # noqa
from searx.tests.engines.test_github import * # noqa
-from searx.tests.engines.test_www1x import * # noqa
+from searx.tests.engines.test_google import * # noqa
from searx.tests.engines.test_google_images import * # noqa
from searx.tests.engines.test_google_news import * # noqa
from searx.tests.engines.test_kickass import * # noqa
+from searx.tests.engines.test_mediawiki import * # noqa
from searx.tests.engines.test_mixcloud import * # noqa
+from searx.tests.engines.test_openstreetmap import * # noqa
+from searx.tests.engines.test_photon import * # noqa
from searx.tests.engines.test_piratebay import * # noqa
from searx.tests.engines.test_searchcode_code import * # noqa
from searx.tests.engines.test_searchcode_doc import * # noqa
from searx.tests.engines.test_soundcloud import * # noqa
from searx.tests.engines.test_stackoverflow import * # noqa
+from searx.tests.engines.test_startpage import * # noqa
+from searx.tests.engines.test_subtitleseeker import * # noqa
+from searx.tests.engines.test_twitter import * # noqa
from searx.tests.engines.test_vimeo import * # noqa
+from searx.tests.engines.test_www1x import * # noqa
from searx.tests.engines.test_www500px import * # noqa
+from searx.tests.engines.test_yacy import * # noqa
+from searx.tests.engines.test_yahoo import * # noqa
from searx.tests.engines.test_youtube import * # noqa
+from searx.tests.engines.test_yahoo_news import * # noqa
diff --git a/searx/translations/de/LC_MESSAGES/messages.mo b/searx/translations/de/LC_MESSAGES/messages.mo
index d38001865..265f46788 100644
--- a/searx/translations/de/LC_MESSAGES/messages.mo
+++ b/searx/translations/de/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/de/LC_MESSAGES/messages.po b/searx/translations/de/LC_MESSAGES/messages.po
index 6c6a53da8..056bf8167 100644
--- a/searx/translations/de/LC_MESSAGES/messages.po
+++ b/searx/translations/de/LC_MESSAGES/messages.po
@@ -1,17 +1,17 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# German translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
-# pointhi, 2014
+# pointhi, 2014-2015
# rike, 2014
# stf <stefan.marsiske@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-12-27 10:30+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 17:41+0000\n"
"Last-Translator: pointhi\n"
"Language-Team: German "
"(http://www.transifex.com/projects/p/searx/language/de/)\n"
@@ -21,127 +21,238 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "Dateien"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "Allgemein"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "Musik"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "Soziale Medien"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "Bilder"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "Videos"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "Neuigkeiten"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "Karte"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "vor {minutes} Minute(n)"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Ladezeit (sek)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Trefferanzahl"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Punkte"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Punkte pro Treffer"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Fehler"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "Über uns"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "Einstellungen"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "Über uns"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Einstellungen"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Standardkategorien"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Suchsprache"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Automatisch"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Oberflächensprache"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Autovervollständigung"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr "Bilder Proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr "Aktiviert"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Methode"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr "Sichere Suche"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr "Streng"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr "Moderat"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr "Keine"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Designs"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Farbe"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blau (Standard)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violett"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Grün"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cyan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Orange"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rot"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Aktuell benutzte Suchmaschinen"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Suchmaschinenname"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Kategorie"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Erlauben"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Blockieren"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
@@ -149,9 +260,9 @@ msgstr ""
"Diese Informationen werden in Cookies auf Ihrem Rechner gespeichert, "
"damit wir keine Ihrer persönlichen Daten speichern müssen."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
@@ -159,51 +270,56 @@ msgstr ""
"Diese Cookies dienen einzig Ihrem Komfort. Wir verwenden sie nicht, um "
"Sie zu überwachen."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "Speichern"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "Zurück"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "Such-URL"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Ergebnisse herunterladen"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "Antworten"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Vorschläge"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "vorherige Seite"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "nächste Seite"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Suche nach..."
@@ -212,53 +328,86 @@ msgstr "Suche nach..."
msgid "Engine stats"
msgstr "Suchmaschinenstatistiken"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr "ursprüngliche Seite"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr "magnet Link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr "torrent Datei"
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
msgstr "klicke auf die Lupe, um die Suche zu starten"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr "Antworten"
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr "Powered by"
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "eine privatsphären-respektierende, hackbare Metasuchmaschine"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr "Navigation umschalten"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "Im Cache"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "Startseite"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Navigation umschalten"
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr "Allgemein"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr "Suchmaschinen"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr "welche Sprache bevorzugst du für die Suche?"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr "ändere die Sprache des Layouts"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr "zeige Vorschläge während der Eingabe an"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr "tunnel Bilder durch searx"
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
@@ -268,27 +417,32 @@ msgstr ""
"href=\"https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-"
"Anfragemethoden\" rel=\"external\">lerne mehr über Anfragemethoden</a>"
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr "ändere das Aussehen von searx"
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr "Suchergebnisse"
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr "Links"
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr "Suche starten"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr "Suchfilter anzeigen"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr "Suchfilter verstecken"
@@ -353,96 +507,74 @@ msgstr "Oh nein!"
msgid "Something went wrong."
msgstr "Irgendetwas ist falsch gelaufen."
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr "Im Cache"
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
-msgstr ""
+msgstr "Medien anzeigen"
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
-msgstr ""
+msgstr "Medien verstecken"
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr "Bild ansehen"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr "Seite besuchen"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr "Karte anzeigen"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr "Karte verstecken"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr "Details anzeigen"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr "Details verstecken"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr "Seeder"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr "Dateigröße"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr "Leecher"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
-msgstr ""
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr "Bytes"
-msgid "Localization"
-msgstr "Übersetzung"
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid "No"
-msgstr "Nein"
-
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "Dateien"
-
-msgid "general"
-msgstr "Allgemein"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr "kiB"
-msgid "music"
-msgstr "Musik"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr "MiB"
-msgid "social media"
-msgstr "Soziale Medien"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr "GiB"
-msgid "images"
-msgstr "Bilder"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr "TiB"
-msgid "videos"
-msgstr "Videos"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr "Anzahl der Dateien"
-msgid "it"
-msgstr "IT"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr "Video anzeigen"
-msgid "news"
-msgstr "Neuigkeiten"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr "Video verstecken"
-msgid "map"
-msgstr "Karte"
+#~ msgid "Filter explicite content"
+#~ msgstr "explizite Inhalte filtern"
diff --git a/searx/translations/en/LC_MESSAGES/messages.mo b/searx/translations/en/LC_MESSAGES/messages.mo
index c3099bf24..f1e013b35 100644
--- a/searx/translations/en/LC_MESSAGES/messages.mo
+++ b/searx/translations/en/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/en/LC_MESSAGES/messages.po b/searx/translations/en/LC_MESSAGES/messages.po
index cd807e6ac..eba5c86b2 100644
--- a/searx/translations/en/LC_MESSAGES/messages.po
+++ b/searx/translations/en/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: en <LL@li.org>\n"
@@ -17,185 +17,301 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr ""
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr ""
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr ""
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr ""
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr ""
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr ""
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr ""
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr ""
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr ""
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr ""
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr ""
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr ""
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr ""
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr ""
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
+msgid "preferences"
msgstr ""
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
-msgid "preferences"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
msgstr ""
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr ""
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr ""
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr ""
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr ""
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr ""
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr ""
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr ""
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
-msgid "Themes"
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
msgstr ""
#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
+msgid "Themes"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr ""
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr ""
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr ""
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr ""
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr ""
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr ""
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr ""
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr ""
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr ""
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr ""
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr ""
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr ""
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr ""
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr ""
@@ -204,80 +320,118 @@ msgstr ""
msgid "Engine stats"
msgstr ""
-#: searx/templates/default/categories.html:8
-msgid "Click on the magnifier to perform search"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
msgstr ""
-#: searx/templates/default/results.html:34
-msgid "Answers"
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
msgstr ""
-#: searx/templates/oscar/base.html:69
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
+#: searx/templates/default/categories.html:8
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
msgstr ""
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr ""
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr ""
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr ""
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr ""
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr ""
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr ""
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr ""
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
msgstr ""
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr ""
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr ""
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr ""
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr ""
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr ""
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr ""
@@ -339,96 +493,80 @@ msgstr ""
msgid "Something went wrong."
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr ""
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
msgstr ""
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
msgstr ""
-msgid "Localization"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
msgstr ""
-msgid "Yes"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
msgstr ""
-msgid "No"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
msgstr ""
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr ""
-
-msgid "general"
-msgstr ""
-
-msgid "music"
-msgstr ""
-
-msgid "social media"
-msgstr ""
-
-msgid "images"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
msgstr ""
-msgid "videos"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
msgstr ""
-msgid "it"
-msgstr ""
+#~ msgid "Localization"
+#~ msgstr ""
-msgid "news"
-msgstr ""
+#~ msgid "Yes"
+#~ msgstr ""
-msgid "map"
-msgstr ""
+#~ msgid "No"
+#~ msgstr ""
diff --git a/searx/translations/es/LC_MESSAGES/messages.mo b/searx/translations/es/LC_MESSAGES/messages.mo
index 8a36374f6..6089ea6d9 100644
--- a/searx/translations/es/LC_MESSAGES/messages.mo
+++ b/searx/translations/es/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/es/LC_MESSAGES/messages.po b/searx/translations/es/LC_MESSAGES/messages.po
index 6f336bf11..866840e06 100644
--- a/searx/translations/es/LC_MESSAGES/messages.po
+++ b/searx/translations/es/LC_MESSAGES/messages.po
@@ -1,16 +1,16 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# Spanish translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
-# Alejandro León Aznar, 2014
+# Alejandro León Aznar, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-11-26 20:38+0000\n"
-"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-11 12:51+0000\n"
+"Last-Translator: Alejandro León Aznar\n"
"Language-Team: Spanish "
"(http://www.transifex.com/projects/p/searx/language/es/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -19,127 +19,238 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "Archivos"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "General"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "Música"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr ""
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "Imágenes"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr ""
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "TIC"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "noticias"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "hace {minutes} minuto(s)"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Tiempo de carga (segundos)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Número de resultados"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Puntuaciones"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Puntuaciones por resultado"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Errores"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "acerca de"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "preferencias"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "acerca de"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Preferencias"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Categorías predeterminadas"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Buscar idioma"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Automático"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Idioma de la interfaz"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Autocompletar"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr "Imagen proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr "Activado"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Método"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr "Búsqueda segura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr "Riguroso"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr "Ninguno"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Temas"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Color"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Azul (predeterminado)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violeta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cian"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Naranja"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rojo"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Motores de búsqueda actualmente en uso"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Nombre del motor de búsqueda"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Categoría"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Permitir"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Bloquear"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
@@ -147,9 +258,9 @@ msgstr ""
"Esta configuración se guarda en sus cookies, lo que nos permite no "
"almacenar dicha información sobre usted."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
@@ -157,51 +268,56 @@ msgstr ""
"Estas cookies son para su propia comodidad, no las utilizamos para "
"rastrearle."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "Guardar"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "Atrás"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "Buscar URL"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Descargar resultados"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "Respuestas"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Sugerencias"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "Página anterior"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "Página siguiente"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Buscar..."
@@ -210,225 +326,252 @@ msgstr "Buscar..."
msgid "Engine stats"
msgstr "Estadísticas del motor de búsqueda"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr "contexto original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Fuente"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Descargador"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr "magnet link (enlace sin archivo)"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr "archivo torrent"
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
-msgstr ""
+msgstr "Haz clic en la lupa para realizar la búsqueda"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr ""
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
-msgstr ""
+msgstr "Creado por"
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr ""
+msgstr "un metabuscador hackeable que respeta la privacidad"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr ""
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "en caché"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
-msgstr ""
+msgstr "inicio"
+
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Cambiar navegación"
-#: searx/templates/oscar/preferences.html:11
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
-msgstr ""
+msgstr "General"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
-msgstr ""
+msgstr "Motores"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
-msgstr ""
+msgstr "¿Qué idioma prefieres para la búsqueda?"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
-msgstr ""
+msgstr "Cambiar idioma de la interfaz"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
-msgstr ""
+msgstr "Buscar mientras escribes"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr "Filtrando resultados de imágenes en searx"
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
msgstr ""
+"Modifica cómo se envian los formularios <a "
+"href=\"http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9todos_de_petici.C3.B3n\""
+" rel=\"external\">más información sobre métodos de peticiones</a>"
-#: searx/templates/oscar/preferences.html:84
-msgid "Change searx layout"
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
msgstr ""
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/preferences.html:103
+msgid "Change searx layout"
+msgstr "Cambiar aspecto de searx"
+
+#: searx/templates/oscar/results.html:7
msgid "Search results"
-msgstr ""
+msgstr "Buscar"
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
-msgstr ""
+msgstr "Enlaces"
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
-msgstr ""
+msgstr "Comenzar búsqueda"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
-msgstr ""
+msgstr "Mostrar filtros de búsqueda"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
-msgstr ""
+msgstr "Ocultar filtros de búsqueda"
#: searx/templates/oscar/stats.html:2
msgid "stats"
-msgstr ""
+msgstr "estadísitcas"
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/no_results.html:5
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
-msgstr ""
+msgstr "Cerrar"
#: searx/templates/oscar/messages/first_time.html:6
#: searx/templates/oscar/messages/no_data_available.html:3
msgid "Heads up!"
-msgstr ""
+msgstr "¡Atención!"
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using searx first time."
-msgstr ""
+msgstr "Parece que estás usando searx por primera vez."
#: searx/templates/oscar/messages/js_disabled.html:2
msgid "Warning!"
-msgstr ""
+msgstr "¡Cuidado!"
#: searx/templates/oscar/messages/js_disabled.html:3
msgid "Please enable JavaScript to use full functionality of this site."
-msgstr ""
+msgstr "Por favor, activa JavaScript para poder usar esta página al 100%."
#: searx/templates/oscar/messages/no_data_available.html:4
msgid "There is currently no data available. "
-msgstr ""
+msgstr "Actualmente no hay datos disponibles."
#: searx/templates/oscar/messages/no_results.html:7
msgid "Sorry!"
-msgstr ""
+msgstr "¡Lo siento!"
#: searx/templates/oscar/messages/no_results.html:8
msgid ""
"we didn't find any results. Please use another query or search in more "
"categories."
msgstr ""
+"No encontramos nada. Por favor, formule su búsqueda de otra forma o "
+"busque en más categorías."
#: searx/templates/oscar/messages/save_settings_successfull.html:7
msgid "Well done!"
-msgstr ""
+msgstr "¡Bien hecho!"
#: searx/templates/oscar/messages/save_settings_successfull.html:8
msgid "Settings saved successfully."
-msgstr ""
+msgstr "Configuración guardada correctamente."
#: searx/templates/oscar/messages/unknow_error.html:7
msgid "Oh snap!"
-msgstr ""
+msgstr "¡Mecachis!"
#: searx/templates/oscar/messages/unknow_error.html:8
msgid "Something went wrong."
-msgstr ""
+msgstr "Algo ha ido mal."
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
-msgstr ""
+msgstr "mostrar multimedia"
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
-msgstr ""
+msgstr "ocultar multimedia"
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
-msgstr ""
+msgstr "Obtener imagen"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
-msgstr ""
+msgstr "Ver fuente"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
-msgstr ""
+msgstr "mostrar mapa"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
-msgstr ""
+msgstr "ocultar mapa"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
-msgstr ""
+msgstr "ver detalles"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
-msgstr ""
+msgstr "ocultar detalles"
-msgid "Localization"
-msgstr ""
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr "Tamaño de archivo"
-msgid "Yes"
-msgstr ""
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr "Bytes"
-msgid "No"
-msgstr ""
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr "KiB"
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "Archivos"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr "MiB"
-msgid "general"
-msgstr "General"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr "GiB"
-msgid "music"
-msgstr "Música"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr "TiB"
-msgid "images"
-msgstr "Imágenes"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr "Número de archivos"
-msgid "it"
-msgstr "TIC"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr "mostrar vídeo"
-msgid "news"
-msgstr "noticias"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr "ocultar video"
-msgid "map"
-msgstr "mapa"
+#~ msgid "Filter explicite content"
+#~ msgstr "Filtrar contenido explícito"
diff --git a/searx/translations/fr/LC_MESSAGES/messages.mo b/searx/translations/fr/LC_MESSAGES/messages.mo
index 37507f2f4..3944fd77e 100644
--- a/searx/translations/fr/LC_MESSAGES/messages.mo
+++ b/searx/translations/fr/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/fr/LC_MESSAGES/messages.po b/searx/translations/fr/LC_MESSAGES/messages.po
index 6afff3871..e17ecbad0 100644
--- a/searx/translations/fr/LC_MESSAGES/messages.po
+++ b/searx/translations/fr/LC_MESSAGES/messages.po
@@ -1,18 +1,17 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# French translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
-# Cqoicebordel <david.barouh@wanadoo.fr>, 2014
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+# Cqoicebordel <david.barouh@wanadoo.fr>, 2014-2015
# rike, 2014
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-12-14 21:00+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 17:01+0000\n"
"Last-Translator: Cqoicebordel <david.barouh@wanadoo.fr>\n"
"Language-Team: French "
"(http://www.transifex.com/projects/p/searx/language/fr/)\n"
@@ -22,127 +21,238 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "fichiers"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "général"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "musique"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "réseaux sociaux"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "images"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "vidéos"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "informatique"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "actus"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "carte"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "il y a {minutes} minute(s)"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "il y a {hours} heure(s), {minutes} minute(s)"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Chargement de la page (sec)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Nombre de résultats"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Score"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Score par résultat"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Erreurs"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "À propos"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "préférences"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "À propos"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Préférences"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Catégories par défaut"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Langue de recherche"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Automatique"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Langue de l'interface"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Complétion automatique"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr "Proxy d'images"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr "Activé"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Méthode"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr "Recherche sécurisée"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr "Stricte"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr "Moyen"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr "Pas du tout"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Thème"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Couleur"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Bleu (défaut)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violet"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Vert"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cyan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Orange"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rouge"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Moteurs de recherche actuellement utilisés"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Nom du moteur"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Catégorie"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Autoriser"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Bloquer"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
@@ -150,9 +260,9 @@ msgstr ""
"Ces paramètres sont stockés dans vos cookies ; ceci nous permet de ne pas"
" collecter vos données."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
@@ -160,51 +270,56 @@ msgstr ""
"Ces cookies existent pour votre confort d'utilisation, nous ne les "
"utilisons pas pour vous espionner."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "enregistrer"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "retour"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "URL de recherche"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Télécharger les résultats"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "Réponses"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Suggestions"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "page précédente"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "page suivante"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Rechercher..."
@@ -213,53 +328,86 @@ msgstr "Rechercher..."
msgid "Engine stats"
msgstr "Statistiques du moteur"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr "contexte original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Sources"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Téléchargeurs"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr "lien magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr "fichier torrent"
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
msgstr "Cliquez sur la loupe pour effectuer une recherche"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr "Réponses"
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr "Powered by"
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "un meta-moteur de recherche hackable et respectueux de la vie privée"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr "Afficher/Masquer la navigation"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "en cache"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "accueil"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Afficher/Masquer la navigation"
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr "Général"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr "Moteurs"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr "Dans quelle langue préférez-vous effectuer la recherche ?"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr "Changer la langue d'affichage"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr "Chercher au fil de la saisie"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr "Proxifier les images de résultats à travers searx"
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
@@ -269,27 +417,32 @@ msgstr ""
"href=\"https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9thodes\""
" rel=\"external\">en savoir plus sur les méthodes HTTP</a>"
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr "Modifier l'affichage de searx"
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr "Résultats de recherche"
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr "Liens"
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr "Lancer une recherche"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr "Afficher les filtres de recherche"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr "Cacher les filtres de recherche"
@@ -355,96 +508,74 @@ msgstr "Oups !"
msgid "Something went wrong."
msgstr "Il y a un problème."
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr "en cache"
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr "afficher le média"
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr "cacher le media"
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr "Voir l'image"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr "Voir le source"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr "afficher la carte"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr "cacher la carte"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr "afficher les détails"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr "cacher les détails"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr "Sources"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr "Taille de fichier"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr "Téléchargeurs"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr "octets"
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
-msgstr "afficher la vidéo"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
-msgstr "cacher la vidéo"
-
-msgid "Localization"
-msgstr "Localisation"
-
-msgid "Yes"
-msgstr "Oui"
-
-msgid "No"
-msgstr "Non"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr "kio"
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "fichiers"
-
-msgid "general"
-msgstr "général"
-
-msgid "music"
-msgstr "musique"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr "Mio"
-msgid "social media"
-msgstr "réseaux sociaux"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr "Gio"
-msgid "images"
-msgstr "images"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr "Tio"
-msgid "videos"
-msgstr "vidéos"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr "Nombre de fichiers"
-msgid "it"
-msgstr "informatique"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr "afficher la vidéo"
-msgid "news"
-msgstr "actus"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr "cacher la vidéo"
-msgid "map"
-msgstr "carte"
+#~ msgid "Filter explicite content"
+#~ msgstr "Filtrer le contenu explicite"
diff --git a/searx/translations/he/LC_MESSAGES/messages.mo b/searx/translations/he/LC_MESSAGES/messages.mo
new file mode 100644
index 000000000..e0f26c913
--- /dev/null
+++ b/searx/translations/he/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/he/LC_MESSAGES/messages.po b/searx/translations/he/LC_MESSAGES/messages.po
new file mode 100644
index 000000000..83723f9d4
--- /dev/null
+++ b/searx/translations/he/LC_MESSAGES/messages.po
@@ -0,0 +1,568 @@
+# Translations template for PROJECT.
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# GenghisKhan <genghiskhan@gmx.ca>, 2015
+# GenghisKhan <genghiskhan@gmx.ca>, 2015
+# pointhi, 2014
+# rike, 2014
+# stf <stefan.marsiske@gmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-11 13:31+0000\n"
+"Last-Translator: pointhi\n"
+"Language-Team: Hebrew (http://www.transifex.com/projects/p/searx/language/he/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+"Language: he\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/webapp.py:100
+msgid "files"
+msgstr "קבצים"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "כללי"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "מוזיקה"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "מדיה חברתית"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "תמונות"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "סרטונים"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "חדשות"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "מפה"
+
+#: searx/webapp.py:361
+msgid "{minutes} minute(s) ago"
+msgstr "לפני {minutes} דקות"
+
+#: searx/webapp.py:363
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "לפני {hours} שעות, {minutes} דקות"
+
+#: searx/engines/__init__.py:182
+msgid "Page loads (sec)"
+msgstr "עומס עמוד (שניות)"
+
+#: searx/engines/__init__.py:186
+msgid "Number of results"
+msgstr "מספר תוצאות"
+
+#: searx/engines/__init__.py:190
+msgid "Scores"
+msgstr "דירוג"
+
+#: searx/engines/__init__.py:194
+msgid "Scores per result"
+msgstr "דירוג לכל תוצאה"
+
+#: searx/engines/__init__.py:198
+msgid "Errors"
+msgstr "שגיאות"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
+msgid "preferences"
+msgstr "העדפות"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "אודות"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/default/preferences.html:5
+#: searx/templates/oscar/preferences.html:12
+msgid "Preferences"
+msgstr "העדפות"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/default/preferences.html:9
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
+msgid "Default categories"
+msgstr "קטגוריות ברירת מחדל"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
+msgid "Search language"
+msgstr "שפת חיפוש"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
+msgid "Automatic"
+msgstr "אוטומטי"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
+msgid "Interface language"
+msgstr "שפת ממשק"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
+msgid "Autocomplete"
+msgstr "השלמה אוטומטית"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr "proxy תמונה"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr "מאופשר"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr "מנוטרל"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
+msgid "Method"
+msgstr "שיטה"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr "חיפוש בטוח"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr "מחמיר"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr "מתון"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr "בלי"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
+msgid "Themes"
+msgstr "מוטיבים"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "צבע"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "כחול (שגרתי)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "סגול"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "ירוק"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "ציאן"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "כתום"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "אדום"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
+msgid "Currently used search engines"
+msgstr "מנועי חיפוש שבשימוש עתה"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
+msgid "Engine name"
+msgstr "שם מנוע"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
+msgid "Category"
+msgstr "קטגוריה"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
+msgid "Allow"
+msgstr "התר"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
+msgid "Block"
+msgstr "חסום"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "הגדרות אלו הינן מאוחסנות בתוך העוגיות שלך, אלו מאפשרות לנו לא לאחסן את מידע זה אודותייך."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "עוגיות אלו משרתות את נוחיותך הבלעדית, אנחנו לא משתמשים בהן כדי לעקוב אחריך."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
+msgid "save"
+msgstr "שמור"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
+msgid "back"
+msgstr "אחורה"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
+msgid "Search URL"
+msgstr "URL חיפוש"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
+msgid "Download results"
+msgstr "הורדת תוצאות"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "תשובות"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
+msgid "Suggestions"
+msgstr "הצעות"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
+msgid "previous page"
+msgstr "עמוד קודם"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
+msgid "next page"
+msgstr "עמוד הבא"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
+#: searx/templates/oscar/search_full.html:9
+msgid "Search for..."
+msgstr "חיפוש..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
+#: searx/templates/oscar/stats.html:5
+msgid "Engine stats"
+msgstr "סטטיסטיקות מנוע"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr "הקשר מקורי"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "זורע"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "יונק"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr "קישור magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr "קובץ torrent"
+
+#: searx/templates/default/categories.html:8
+msgid "Click on the magnifier to perform search"
+msgstr "לחצו על הזכוכית מגדלת כדי לבצע חיפוש"
+
+#: searx/templates/oscar/base.html:74
+msgid "Powered by"
+msgstr ""
+
+#: searx/templates/oscar/base.html:74
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "מוטמן"
+
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
+msgid "home"
+msgstr "בית"
+
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Toggle ניווט"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
+msgid "General"
+msgstr "כללי"
+
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
+msgid "Engines"
+msgstr "מנועים"
+
+#: searx/templates/oscar/preferences.html:43
+msgid "What language do you prefer for search?"
+msgstr "איזו שפה אתם מעדיפים לצורך חיפוש?"
+
+#: searx/templates/oscar/preferences.html:54
+msgid "Change the language of the layout"
+msgstr "שינוי שפת הממשק"
+
+#: searx/templates/oscar/preferences.html:64
+msgid "Find stuff as you type"
+msgstr "מציאת דברים בזמן הקלדה"
+
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr "Proxying תוצאות תמונה מבעד searx"
+
+#: searx/templates/oscar/preferences.html:84
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "שינוי האופן בו טפסים נשלחים, <a href=\"http://he.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">למדו עוד אודות שיטות בקשה (request methods)</a>"
+
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
+msgid "Change searx layout"
+msgstr "שינוי ממשק searx"
+
+#: searx/templates/oscar/results.html:7
+msgid "Search results"
+msgstr "תוצאות חיפוש"
+
+#: searx/templates/oscar/results.html:105
+msgid "Links"
+msgstr "קישורים"
+
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
+msgid "Start search"
+msgstr "התחל חיפוש"
+
+#: searx/templates/oscar/search_full.html:15
+msgid "Show search filters"
+msgstr "הצג מסנני חיפוש"
+
+#: searx/templates/oscar/search_full.html:15
+msgid "Hide search filters"
+msgstr "הסתר מסנני חיפוש"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "סטטיסטיקות"
+
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/no_results.html:5
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "סגור"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "זהירות!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "נראה כי אתם משתמשים ב-searx בפעם הראשונה."
+
+#: searx/templates/oscar/messages/js_disabled.html:2
+msgid "Warning!"
+msgstr "אזהרה!"
+
+#: searx/templates/oscar/messages/js_disabled.html:3
+msgid "Please enable JavaScript to use full functionality of this site."
+msgstr "אנא אפשרו JavaScript כדי לנצל תפקודיות מלאה של אתר זה."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "אין כעת מידע זמין. "
+
+#: searx/templates/oscar/messages/no_results.html:7
+msgid "Sorry!"
+msgstr "מצטערים!"
+
+#: searx/templates/oscar/messages/no_results.html:8
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "לא מצאנו תוצאות. אנא נסו שאילתא אחרת או חפשו בתוך יותר קטגוריות."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "כל הכבוד!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "הגדרות נשמרו בהצלחה."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "אבוי!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "משהו השתבש."
+
+#: searx/templates/oscar/result_templates/default.html:7
+msgid "show media"
+msgstr "הצג מדיה"
+
+#: searx/templates/oscar/result_templates/default.html:7
+msgid "hide media"
+msgstr "הסתר מדיה"
+
+#: searx/templates/oscar/result_templates/images.html:23
+msgid "Get image"
+msgstr "השג תמונה"
+
+#: searx/templates/oscar/result_templates/images.html:24
+msgid "View source"
+msgstr "צפה במקור"
+
+#: searx/templates/oscar/result_templates/map.html:7
+msgid "show map"
+msgstr "הצג מפה"
+
+#: searx/templates/oscar/result_templates/map.html:7
+msgid "hide map"
+msgstr "הסתר מפה"
+
+#: searx/templates/oscar/result_templates/map.html:11
+msgid "show details"
+msgstr "הצג פרטים"
+
+#: searx/templates/oscar/result_templates/map.html:11
+msgid "hide details"
+msgstr "הסתר פרטים"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr "גודל קובץ"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr "בייטים"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr "קי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr "מי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr "גי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr "טי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr "מספר קבצים"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr "הצג וידאו"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr "הסתר וידאו"
diff --git a/searx/translations/hu/LC_MESSAGES/messages.mo b/searx/translations/hu/LC_MESSAGES/messages.mo
index f4d56666f..45c7aa508 100644
--- a/searx/translations/hu/LC_MESSAGES/messages.mo
+++ b/searx/translations/hu/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/hu/LC_MESSAGES/messages.po b/searx/translations/hu/LC_MESSAGES/messages.po
index 16f021740..38ed56893 100644
--- a/searx/translations/hu/LC_MESSAGES/messages.po
+++ b/searx/translations/hu/LC_MESSAGES/messages.po
@@ -1,16 +1,15 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# Hungarian translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
-# Adam Tauber <asciimoo@gmail.com>, 2014
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+# Adam Tauber <asciimoo@gmail.com>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-12-22 16:11+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 17:21+0000\n"
"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Hungarian "
"(http://www.transifex.com/projects/p/searx/language/hu/)\n"
@@ -20,135 +19,246 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "fájlok"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "általános"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "zene"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "közösségi média"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "képek"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "videók"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "hírek"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "térkép"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "{minutes} perce"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} óra, {minutes} perce"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Válaszidők (sec)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Találatok száma"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Pontszámok"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Pontszámok találatonként"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Hibák"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "rólunk"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "beállítások"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "rólunk"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Beállítások"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Alapértelmezett kategóriák"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Keresés nyelve"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Automatikus"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Felület nyelve"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Automatikus kiegészítés"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr "Kép proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr "Engedélyez"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr "Inaktivál"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Method"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr "Felnőtt tartalom szűrés"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr "Erős"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr "Enyhe"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr "Nincs"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Megjelenés"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Szín"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Kék"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Ibolya"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zöld"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Türkisz"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Narancs"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Piros"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Jelenleg használt keresők"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Kereső neve"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Kategória"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Engedélyezés"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Tiltás"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
@@ -156,51 +266,56 @@ msgstr ""
"Ezek a cookie-k csak kényelmi funkciókat látnak el, nem használjuk a "
"felhasználók követésére."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "mentés"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "vissza"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "Keresési URL"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Találatok letöltése"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "Válaszok"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Javaslatok"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "előző oldal"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "következő oldal"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Keresés..."
@@ -209,53 +324,86 @@ msgstr "Keresés..."
msgid "Engine stats"
msgstr "Kereső statisztikák"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr "eredeti kontextus"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr "magnet link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr "torrent fájl"
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
msgstr "A nagyítóra kattintva indítható a keresés"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr "Válaszok"
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr "Az oldalt kiszolgálja: "
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "egy privátszféra tisztelő, könnyen módosítható metakereső"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr "Navigáció megjelenítés"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "tárolt"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "főoldal"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Navigáció megjelenítés"
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr "Általános"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr "Kereső motorok"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr "Preferált keresési nyelv"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr "Felület nyelve"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr "Autómatikus kereső kifejezés kiegészítés"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr "Kép találatok betöltése searx-ön keresztül"
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
@@ -265,27 +413,32 @@ msgstr ""
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">bővebben</a>)"
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr "Megjelenés"
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr "Keresési eredmények"
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr "Linkek"
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr "Keresés indítása"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr "Keresési szűrők megjelenítése"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr "Keresési szűrők elrejtése"
@@ -347,96 +500,74 @@ msgstr "Oh!"
msgid "Something went wrong."
msgstr "Hiba történt"
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr "tárolt"
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
-msgstr ""
+msgstr "médium mutatása"
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
-msgstr ""
+msgstr "médium elrejtése"
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr "Kép megjelenítése"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr "Forrás megtekintése"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr "Térkép"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr "Térkép elrejtése"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr "Részletek"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr "Részletek elrejtése"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr "Seeder"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr "Fájl méret"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr "Leecher"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
-msgstr ""
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr "Byte"
-msgid "Localization"
-msgstr "Nyelv"
-
-msgid "Yes"
-msgstr "Igen"
-
-msgid "No"
-msgstr "Nem"
-
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "fájlok"
-
-msgid "general"
-msgstr "általános"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr "kiB"
-msgid "music"
-msgstr "zene"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr "MiB"
-msgid "social media"
-msgstr "közösségi média"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr "GiB"
-msgid "images"
-msgstr "képek"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr "TiB"
-msgid "videos"
-msgstr "videók"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr "Fájlok száma"
-msgid "it"
-msgstr "it"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr "video mutatása"
-msgid "news"
-msgstr "hírek"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr "video elrejtése"
-msgid "map"
-msgstr "térkép"
+#~ msgid "Filter explicite content"
+#~ msgstr "Tartalom szűrés"
diff --git a/searx/translations/it/LC_MESSAGES/messages.mo b/searx/translations/it/LC_MESSAGES/messages.mo
index ce22605ae..dac396304 100644
--- a/searx/translations/it/LC_MESSAGES/messages.mo
+++ b/searx/translations/it/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/it/LC_MESSAGES/messages.po b/searx/translations/it/LC_MESSAGES/messages.po
index 3a49ca7fe..ba594d4ae 100644
--- a/searx/translations/it/LC_MESSAGES/messages.po
+++ b/searx/translations/it/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# Italian translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-11-26 20:38+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 16:50+0000\n"
"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Italian "
"(http://www.transifex.com/projects/p/searx/language/it/)\n"
@@ -19,127 +19,238 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "documenti"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "generale"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "musica"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr ""
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "immagini"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr ""
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "notizie"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "mappe"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "di {minutes} minuti fa"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "di {ore} h e {minutes} minuti fa"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr " Caricamento della pagina (secondi)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Risultati ottenuti"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Punteggio"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Punteggio per risultato"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Errori"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "informazioni"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "preferenze"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "informazioni"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Preferenze"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Categorie predefinite"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Lingua di ricerca"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Automatico"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Linguaggio dell'interfaccia"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Completamento automatico"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Metodo"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Grafica"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Motori di ricerca attualmente in uso"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Nome del motore"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Categoria"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Autorizza"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Blocca"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
@@ -147,9 +258,9 @@ msgstr ""
"Queste impostazioni sono salvate nei tuoi cookie, consentendoci di non "
"conservare dati su di te."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
@@ -157,51 +268,56 @@ msgstr ""
"I cookie sono funzionali ad un servizio migliore. Non usiamo i cookie per"
" sorvegliarti."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "salva"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "indietro"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "URL della ricerca"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Scarica i risultati"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr ""
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Suggerimenti"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "pagina precedente"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "pagina successiva"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Cerca…"
@@ -210,80 +326,118 @@ msgstr "Cerca…"
msgid "Engine stats"
msgstr "Statistiche dei motori"
-#: searx/templates/default/categories.html:8
-msgid "Click on the magnifier to perform search"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
msgstr ""
-#: searx/templates/default/results.html:34
-msgid "Answers"
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
msgstr ""
-#: searx/templates/oscar/base.html:69
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
+#: searx/templates/default/categories.html:8
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
msgstr ""
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr ""
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr ""
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr ""
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr ""
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr ""
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr ""
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr ""
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
msgstr ""
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr ""
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr ""
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr ""
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr ""
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr ""
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr ""
@@ -345,90 +499,74 @@ msgstr ""
msgid "Something went wrong."
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr ""
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
msgstr ""
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
msgstr ""
-msgid "Localization"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
msgstr ""
-msgid "Yes"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
msgstr ""
-msgid "No"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
msgstr ""
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "documenti"
-
-msgid "general"
-msgstr "generale"
-
-msgid "music"
-msgstr "musica"
-
-msgid "images"
-msgstr "immagini"
-
-msgid "it"
-msgstr "it"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr ""
-msgid "news"
-msgstr "notizie"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr ""
-msgid "map"
-msgstr "mappe"
+#~ msgid "Filter explicite content"
+#~ msgstr ""
diff --git a/searx/translations/ja/LC_MESSAGES/messages.mo b/searx/translations/ja/LC_MESSAGES/messages.mo
index 0b25be7a6..6868cb7df 100644
--- a/searx/translations/ja/LC_MESSAGES/messages.mo
+++ b/searx/translations/ja/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/ja/LC_MESSAGES/messages.po b/searx/translations/ja/LC_MESSAGES/messages.po
index c91fd1f8f..d3350cdd3 100644
--- a/searx/translations/ja/LC_MESSAGES/messages.po
+++ b/searx/translations/ja/LC_MESSAGES/messages.po
@@ -1,17 +1,16 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# Japanese translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
-# pointhi, 2014
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+# pointhi, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-11-26 20:38+0000\n"
-"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 17:31+0000\n"
+"Last-Translator: pointhi\n"
"Language-Team: Japanese "
"(http://www.transifex.com/projects/p/searx/language/ja/)\n"
"Plural-Forms: nplurals=1; plural=0\n"
@@ -20,185 +19,301 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "ファイル"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "ウェブ"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "音楽"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr ""
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "画像"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr ""
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "情報技術"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "ニュース"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "地図"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "{minutes}分前"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours}時間と{minutes}分前"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr ""
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr ""
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "エラー"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "に関する"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "設定"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "に関する"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "設定"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr ""
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "検索の言語"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr ""
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "界面の言語"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr ""
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr ""
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
-msgid "Themes"
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
msgstr ""
#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
+msgid "Themes"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "色"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "青色 (初期設定)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "菫色"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "緑色"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "シアン色"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "朽葉色"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "赤色"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr ""
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr ""
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "カテゴリー"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr ""
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr ""
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "保存"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "バック"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr ""
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "ダウンロードの結果"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr ""
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "提案"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "前のページ"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "次のページ"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "検索する..."
@@ -207,80 +322,118 @@ msgstr "検索する..."
msgid "Engine stats"
msgstr ""
-#: searx/templates/default/categories.html:8
-msgid "Click on the magnifier to perform search"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
msgstr ""
-#: searx/templates/default/results.html:34
-msgid "Answers"
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
+#: searx/templates/default/categories.html:8
+msgid "Click on the magnifier to perform search"
msgstr ""
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
msgstr ""
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "スタートページ"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr ""
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr ""
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr ""
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr ""
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr ""
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr ""
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
msgstr ""
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr ""
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr ""
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr ""
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr ""
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr ""
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr ""
@@ -342,90 +495,74 @@ msgstr ""
msgid "Something went wrong."
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr ""
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr ""
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr ""
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
msgstr ""
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
msgstr ""
-msgid "Localization"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
msgstr ""
-msgid "Yes"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
msgstr ""
-msgid "No"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
msgstr ""
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "ファイル"
-
-msgid "general"
-msgstr "ウェブ"
-
-msgid "music"
-msgstr "音楽"
-
-msgid "images"
-msgstr "画像"
-
-msgid "it"
-msgstr "情報技術"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr ""
-msgid "news"
-msgstr "ニュース"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr ""
-msgid "map"
-msgstr "地図"
+#~ msgid "Filter explicite content"
+#~ msgstr ""
diff --git a/searx/translations/nl/LC_MESSAGES/messages.mo b/searx/translations/nl/LC_MESSAGES/messages.mo
index df5e7f45b..e03facda4 100644
--- a/searx/translations/nl/LC_MESSAGES/messages.mo
+++ b/searx/translations/nl/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/nl/LC_MESSAGES/messages.po b/searx/translations/nl/LC_MESSAGES/messages.po
index e3be7a90e..681c925df 100644
--- a/searx/translations/nl/LC_MESSAGES/messages.po
+++ b/searx/translations/nl/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# Dutch translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-12-11 13:50+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 16:50+0000\n"
"Last-Translator: André Koot <meneer@tken.net>\n"
"Language-Team: Dutch "
"(http://www.transifex.com/projects/p/searx/language/nl/)\n"
@@ -19,127 +19,238 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "bestanden"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "algemeen"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "muziek"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "social media"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "afbeeldingen"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "video's"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "nieuws"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "kaart"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "{minutes} min geleden"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} uur, {minutes} min geleden"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Pagina laadt (sec)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Aantal zoekresultaten"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Scores"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Scores per zoekresultaat"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Fouten"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "over"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "voorkeuren"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "over"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Voorkeuren"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Standaardcategorieën"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Zoektaal"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Automatisch"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Interfacetaal"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Auto-aanvullen"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Methode"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Thema's"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Momenteel gebruikte zoekmachines"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Naam zoekmachine"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Categorie"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Toestaan"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Blokkeren"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
@@ -147,9 +258,9 @@ msgstr ""
"Deze instellingen worden bewaard in je cookies. Hierdoor hoeven wij niets"
" over jou te bewaren."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
@@ -157,51 +268,56 @@ msgstr ""
"Deze cookies zijn alleen voor je eigen gemak, we gebruiken deze cookies "
"niet om je te volgen."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "bewaren"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "terug"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "Zoek URL"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Downloaden zoekresultaten"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "Antwoorden"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Suggesties"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "vorige pagina"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "volgende pagina"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Zoeken naar..."
@@ -210,53 +326,86 @@ msgstr "Zoeken naar..."
msgid "Engine stats"
msgstr "Zoekmachinestatistieken"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Aanbieder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Ophaler"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
msgstr "Klik op het vergrootglas om te zoeken"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr "Antwoorden"
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr "Powered by"
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "een privacy eerbiedigende, aanpasbare metazoekmachine"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr "Omschakelen navigatie"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "gecached"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "thuis"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Omschakelen navigatie"
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr "Algemeen"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr "Zoekmachines"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr "Welke taal wil je gebruiken voor het zoeken?"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr "Wijzig de taal van de layout"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr "Zoek tijdens het typen"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
@@ -266,27 +415,32 @@ msgstr ""
"href=\"http://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-"
"requests\" rel=\"external\">lees meer over request methodes</a>"
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr "Wijzig searx layout"
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr "Zoekresultaten"
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr "Links"
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr "Start zoeken"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr "Toon zoekfilters"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr "Verberg zoekfilters"
@@ -350,96 +504,74 @@ msgstr "Verdraaid!"
msgid "Something went wrong."
msgstr "Er ging iets fout."
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr "gecached"
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr "Toon afbeelding"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr "Bekijk bron"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr "toon kaart"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr "verberg kaart"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr "toon details"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr "verberg details"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr "Aanbieder"
-
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr "Ophaler"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
msgstr ""
-msgid "Localization"
-msgstr "Vertaling"
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid "No"
-msgstr "Nee"
-
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "bestanden"
-
-msgid "general"
-msgstr "algemeen"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr ""
-msgid "music"
-msgstr "muziek"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr ""
-msgid "social media"
-msgstr "social media"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr ""
-msgid "images"
-msgstr "afbeeldingen"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr ""
-msgid "videos"
-msgstr "video's"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr ""
-msgid "it"
-msgstr "it"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr ""
-msgid "news"
-msgstr "nieuws"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr ""
-msgid "map"
-msgstr "kaart"
+#~ msgid "Filter explicite content"
+#~ msgstr ""
diff --git a/searx/translations/ru/LC_MESSAGES/messages.mo b/searx/translations/ru/LC_MESSAGES/messages.mo
index de4e8c5d4..b03eee4ff 100644
--- a/searx/translations/ru/LC_MESSAGES/messages.mo
+++ b/searx/translations/ru/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/ru/LC_MESSAGES/messages.po b/searx/translations/ru/LC_MESSAGES/messages.po
index 7badde73f..4b75e3625 100644
--- a/searx/translations/ru/LC_MESSAGES/messages.po
+++ b/searx/translations/ru/LC_MESSAGES/messages.po
@@ -1,203 +1,324 @@
-# English translations for PROJECT.
-# Copyright (C) 2014 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-#
+# Russian translations for .
+# Copyright (C) 2015 ORGANIZATION
+# This file is distributed under the same license as the project.
+#
# Translators:
# dimqua <dimqua@riseup.net>, 2015
msgid ""
msgstr ""
-"Project-Id-Version: searx\n"
+"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2014-12-27 14:39+0100\n"
-"PO-Revision-Date: 2015-01-19 17:32+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 17:01+0000\n"
"Last-Translator: dimqua <dimqua@riseup.net>\n"
-"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/searx/language/ru_RU/)\n"
+"Language-Team: Russian (Russia) "
+"(http://www.transifex.com/projects/p/searx/language/ru_RU/)\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-"Language: ru_RU\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: searx/webapp.py:247
+#: searx/webapp.py:100
+msgid "files"
+msgstr "файлы"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "общие"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "музыка"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "соцсети"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "картинки"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "видео"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "новости"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "карта"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "{minutes} минут назад"
-#: searx/webapp.py:249
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} час, {minutes} минут назад"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Время загрузки (сек)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Число результатов"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr "Попаданий"
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr "Попаданий за результат"
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Ошибок"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "о сайте"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "опции"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "о сайте"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Опции"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Категории по-умолчанию"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Язык поиска"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Выбирать автоматически"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Язык интерфейса"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Авто-подсказки"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Метод"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Темы"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Используемые поисковые движки"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Имя движка"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Категория"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "Разрешить"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Блокировать"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
-"These settings are stored in your cookies, this allows us not to store this "
-"data about you."
-msgstr "Настройки хранятся в ваших cookies-файлах, что позволяет нам не хранить эти сведения о Вас."
+"These settings are stored in your cookies, this allows us not to store "
+"this data about you."
+msgstr ""
+"Настройки хранятся в ваших cookies-файлах, что позволяет нам не хранить "
+"эти сведения о Вас."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
-msgstr "Данные cookies применяются для вашего удобства, мы не используем их, чтобы отслеживать Вас."
+msgstr ""
+"Данные cookies применяются для вашего удобства, мы не используем их, "
+"чтобы отслеживать Вас."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "сохранить"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "назад"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:83
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "Ссылка на поиск"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:88
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Загрузить результаты"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:63
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr "Ответы"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Предложения"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:37
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "предыдущая стр."
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:45
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "следующая стр. "
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Искать..."
@@ -206,81 +327,121 @@ msgstr "Искать..."
msgid "Engine stats"
msgstr "Статистика движков"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Сидер"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Личер"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
msgstr "Нажмите на лупу, чтобы выполнить поиск"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr "Ответы"
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr "Используется"
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "свободный движок метапоиска, уважающий вашу приватность"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr "Переключить навигацию"
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "в архиве"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "главная"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr "Переключить навигацию"
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr "Общие"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr "Движки"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr "На каком языке вы предпочитаете искать?"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr "Изменить язык сайта"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr "Поисковые предложения при наборе"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
-msgstr "Изменяет способ отправки запросов, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">более подробно о методах запросов</a>"
+msgstr ""
+"Изменяет способ отправки запросов, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">более подробно о методах запросов</a>"
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr "Изменить тему сайта"
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr "Результаты поиска"
-#: searx/templates/oscar/results.html:78
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr "Ссылки"
#: searx/templates/oscar/search.html:6
-#: searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr "Начать поиск"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr "Показать фильтры поиска"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr "Скрыть фильтры поиска"
@@ -324,7 +485,9 @@ msgstr "Сожалеем!"
msgid ""
"we didn't find any results. Please use another query or search in more "
"categories."
-msgstr "результатов не найдено. Попробуйте другой запрос или выберете больше категорий."
+msgstr ""
+"результатов не найдено. Попробуйте другой запрос или выберете больше "
+"категорий."
#: searx/templates/oscar/messages/save_settings_successfull.html:7
msgid "Well done!"
@@ -342,95 +505,74 @@ msgstr "Вот чёрт!"
msgid "Something went wrong."
msgstr "Что-то пошло не так."
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr "в архиве"
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr "показать медиа"
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr "скрыть медиа"
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr "Скачать изображение"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr "Посмотреть источник"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr "показать карту"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr "скрыть карту"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr "показать подробности"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr "скрыть подробности"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr "Сидер"
-
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr "Личер"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
-msgstr "показать видео"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
-msgstr "скрыть видео"
-
-msgid "Localization"
-msgstr "Локализация"
-
-msgid "Yes"
-msgstr "Да"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr ""
-msgid "No"
-msgstr "Нет"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr ""
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "файлы"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr ""
-msgid "general"
-msgstr "общие"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr ""
-msgid "music"
-msgstr "музыка"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr ""
-msgid "social media"
-msgstr "соцсети"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr ""
-msgid "images"
-msgstr "картинки"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr ""
-msgid "videos"
-msgstr "видео"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr "показать видео"
-msgid "it"
-msgstr "it"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr "скрыть видео"
-msgid "news"
-msgstr "новости"
+#~ msgid "Filter explicite content"
+#~ msgstr ""
-msgid "map"
-msgstr "карта"
diff --git a/searx/translations/tr/LC_MESSAGES/messages.mo b/searx/translations/tr/LC_MESSAGES/messages.mo
index 2ea370523..ce447a3f7 100644
--- a/searx/translations/tr/LC_MESSAGES/messages.mo
+++ b/searx/translations/tr/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/tr/LC_MESSAGES/messages.po b/searx/translations/tr/LC_MESSAGES/messages.po
index 22190141e..951cdb34c 100644
--- a/searx/translations/tr/LC_MESSAGES/messages.po
+++ b/searx/translations/tr/LC_MESSAGES/messages.po
@@ -1,16 +1,15 @@
-# English translations for .
-# Copyright (C) 2014 ORGANIZATION
+# Turkish translations for .
+# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the project.
#
# Translators:
# Caner Başaran <basaran.caner@gmail.com>, 2014
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-05 20:54+0100\n"
-"PO-Revision-Date: 2014-12-28 08:20+0000\n"
+"POT-Creation-Date: 2015-02-11 14:09+0100\n"
+"PO-Revision-Date: 2015-02-10 16:50+0000\n"
"Last-Translator: Caner Başaran <basaran.caner@gmail.com>\n"
"Language-Team: Turkish "
"(http://www.transifex.com/projects/p/searx/language/tr/)\n"
@@ -20,127 +19,238 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
-#: searx/webapp.py:263
+#: searx/webapp.py:100
+msgid "files"
+msgstr "dosyalar"
+
+#: searx/webapp.py:101
+msgid "general"
+msgstr "genel"
+
+#: searx/webapp.py:102
+msgid "music"
+msgstr "müzik"
+
+#: searx/webapp.py:103
+msgid "social media"
+msgstr "sosyal medya"
+
+#: searx/webapp.py:104
+msgid "images"
+msgstr "görseller"
+
+#: searx/webapp.py:105
+msgid "videos"
+msgstr "videolar"
+
+#: searx/webapp.py:106
+msgid "it"
+msgstr "bilişim"
+
+#: searx/webapp.py:107
+msgid "news"
+msgstr "haberler"
+
+#: searx/webapp.py:108
+msgid "map"
+msgstr "harita"
+
+#: searx/webapp.py:361
msgid "{minutes} minute(s) ago"
msgstr "{minutes} dakika() önce"
-#: searx/webapp.py:265
+#: searx/webapp.py:363
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} saat(), {minutes} dakika() önce"
-#: searx/engines/__init__.py:179
+#: searx/engines/__init__.py:182
msgid "Page loads (sec)"
msgstr "Yüklenen sayfa (sn)"
-#: searx/engines/__init__.py:183
+#: searx/engines/__init__.py:186
msgid "Number of results"
msgstr "Sonuç sayısı"
-#: searx/engines/__init__.py:187
+#: searx/engines/__init__.py:190
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:191
+#: searx/engines/__init__.py:194
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:195
+#: searx/engines/__init__.py:198
msgid "Errors"
msgstr "Hatalar"
-#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
-#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
-msgid "about"
-msgstr "hakkında"
-
-#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
-#: searx/templates/oscar/navbar.html:17
-#: searx/templates/oscar/preferences.html:2
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
msgid "preferences"
msgstr "tercihler"
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+msgid "about"
+msgstr "hakkında"
+
#: searx/templates/courgette/preferences.html:5
#: searx/templates/default/preferences.html:5
-#: searx/templates/oscar/preferences.html:6
+#: searx/templates/oscar/preferences.html:12
msgid "Preferences"
msgstr "Tercihler"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/default/preferences.html:9
-#: searx/templates/oscar/preferences.html:24
+#: searx/templates/oscar/preferences.html:34
+#: searx/templates/oscar/preferences.html:36
msgid "Default categories"
msgstr "Öntanımlı kategoriler"
-#: searx/templates/courgette/preferences.html:15
-#: searx/templates/default/preferences.html:15
-#: searx/templates/oscar/preferences.html:30
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:42
msgid "Search language"
msgstr "Arama dili"
-#: searx/templates/courgette/preferences.html:18
-#: searx/templates/default/preferences.html:18
-#: searx/templates/oscar/preferences.html:33
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:46
msgid "Automatic"
msgstr "Otomatik"
-#: searx/templates/courgette/preferences.html:26
-#: searx/templates/default/preferences.html:26
-#: searx/templates/oscar/preferences.html:42
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:53
msgid "Interface language"
msgstr "Arayüz dili"
-#: searx/templates/courgette/preferences.html:36
-#: searx/templates/default/preferences.html:36
-#: searx/templates/oscar/preferences.html:53
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:63
msgid "Autocomplete"
msgstr "Otomatik tamamlama"
-#: searx/templates/courgette/preferences.html:47
-#: searx/templates/default/preferences.html:47
-#: searx/templates/oscar/preferences.html:66
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:74
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:78
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:79
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:83
msgid "Method"
msgstr "Sorgu gönderim yöntemi"
-#: searx/templates/courgette/preferences.html:56
-#: searx/templates/default/preferences.html:56
-#: searx/templates/oscar/preferences.html:76
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:92
+msgid "SafeSearch"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:96
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:97
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:98
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:102
msgid "Themes"
msgstr "Temalar"
-#: searx/templates/courgette/preferences.html:66
-#: searx/templates/default/preferences.html:66
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
msgid "Currently used search engines"
msgstr "Şu anda kullanılan arama motorları"
-#: searx/templates/courgette/preferences.html:70
-#: searx/templates/default/preferences.html:70
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
msgid "Engine name"
msgstr "Motor adı"
-#: searx/templates/courgette/preferences.html:71
-#: searx/templates/default/preferences.html:71
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
msgid "Category"
msgstr "Türü"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:83
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:83
-#: searx/templates/oscar/preferences.html:118
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/preferences.html:145
msgid "Allow"
msgstr "İzin ver"
-#: searx/templates/courgette/preferences.html:72
-#: searx/templates/courgette/preferences.html:84
-#: searx/templates/default/preferences.html:72
-#: searx/templates/default/preferences.html:84
-#: searx/templates/oscar/preferences.html:117
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/preferences.html:144
msgid "Block"
msgstr "Engelle"
-#: searx/templates/courgette/preferences.html:92
-#: searx/templates/default/preferences.html:92
-#: searx/templates/oscar/preferences.html:132
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
@@ -148,59 +258,64 @@ msgstr ""
"Ayarlar çerezlerinizde saklanır. Verdiğiniz izinler, sizin hakkınızda "
"veri saklamak için değil."
-#: searx/templates/courgette/preferences.html:94
-#: searx/templates/default/preferences.html:94
-#: searx/templates/oscar/preferences.html:134
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:163
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Bu çerezler size kolaylık sağlar. Sizi takip etmek için kullanılmaz."
-#: searx/templates/courgette/preferences.html:97
-#: searx/templates/default/preferences.html:97
-#: searx/templates/oscar/preferences.html:137
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:166
msgid "save"
msgstr "kaydet"
-#: searx/templates/courgette/preferences.html:98
-#: searx/templates/default/preferences.html:98
-#: searx/templates/oscar/preferences.html:138
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:167
msgid "back"
msgstr "geri"
#: searx/templates/courgette/results.html:12
-#: searx/templates/default/results.html:12
-#: searx/templates/oscar/results.html:87
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
msgid "Search URL"
msgstr "Arama Bağlantısı"
#: searx/templates/courgette/results.html:16
-#: searx/templates/default/results.html:16
-#: searx/templates/oscar/results.html:92
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
msgid "Download results"
msgstr "Arama sonuçlarını indir"
#: searx/templates/courgette/results.html:34
-#: searx/templates/default/results.html:42
-#: searx/templates/oscar/results.html:67
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr ""
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
msgid "Suggestions"
msgstr "Öneriler"
-#: searx/templates/courgette/results.html:62
-#: searx/templates/default/results.html:78
-#: searx/templates/oscar/results.html:41
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
msgid "previous page"
msgstr "önceki sayfa"
-#: searx/templates/courgette/results.html:73
-#: searx/templates/default/results.html:89
-#: searx/templates/oscar/results.html:49
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
msgid "next page"
msgstr "sonraki sayfa"
#: searx/templates/courgette/search.html:3
#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
-#: searx/templates/oscar/search_full.html:5
+#: searx/templates/oscar/search_full.html:9
msgid "Search for..."
msgstr "Aramak için..."
@@ -209,55 +324,88 @@ msgstr "Aramak için..."
msgid "Engine stats"
msgstr "Arama motoru istatistikleri"
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+msgid "original context"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr "Besleyenler"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr "Sömürenler"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
#: searx/templates/default/categories.html:8
msgid "Click on the magnifier to perform search"
msgstr "Arama yapmak için büyütece tıklayın"
-#: searx/templates/default/results.html:34
-msgid "Answers"
-msgstr ""
-
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "Powered by"
msgstr "Gücümün kaynağı"
-#: searx/templates/oscar/base.html:69
+#: searx/templates/oscar/base.html:74
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
"kişisel gizliliğe saygılı ve merak edenlerin kurcalayabildiği bir meta "
"arama motoru"
-#: searx/templates/oscar/navbar.html:6
-msgid "Toggle navigation"
-msgstr ""
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr "önbellek"
-#: searx/templates/oscar/navbar.html:15
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
msgid "home"
msgstr "anasayfa"
-#: searx/templates/oscar/preferences.html:11
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr ""
+
#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:23
msgid "General"
msgstr "Genel"
-#: searx/templates/oscar/preferences.html:12
-#: searx/templates/oscar/preferences.html:99
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:124
msgid "Engines"
msgstr "Motorlar"
-#: searx/templates/oscar/preferences.html:39
+#: searx/templates/oscar/preferences.html:43
msgid "What language do you prefer for search?"
msgstr "Arama için hangi dili tercih edersiniz?"
-#: searx/templates/oscar/preferences.html:50
+#: searx/templates/oscar/preferences.html:54
msgid "Change the language of the layout"
msgstr "Yerleşim düzeninin dilini değiştir"
-#: searx/templates/oscar/preferences.html:63
+#: searx/templates/oscar/preferences.html:64
msgid "Find stuff as you type"
msgstr "Leb demeden leblebiyi anlasın"
-#: searx/templates/oscar/preferences.html:73
+#: searx/templates/oscar/preferences.html:75
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:84
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
@@ -267,27 +415,32 @@ msgstr ""
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">istek yöntemleri hakkında daha fazla bilgi</a>"
-#: searx/templates/oscar/preferences.html:84
+#: searx/templates/oscar/preferences.html:93
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:103
msgid "Change searx layout"
msgstr "searx yerleşim düzenini değiştir"
-#: searx/templates/oscar/results.html:6
+#: searx/templates/oscar/results.html:7
msgid "Search results"
msgstr "Arama sonuçları"
-#: searx/templates/oscar/results.html:82
+#: searx/templates/oscar/results.html:105
msgid "Links"
msgstr "Bağlantılar"
-#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
msgid "Start search"
msgstr "Aramayı başlat"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Show search filters"
msgstr "Arama filtrelerini göster"
-#: searx/templates/oscar/search_full.html:11
+#: searx/templates/oscar/search_full.html:15
msgid "Hide search filters"
msgstr "Arama filtrelerini gizle"
@@ -353,96 +506,74 @@ msgstr "Tüh tüh!"
msgid "Something went wrong."
msgstr "Bazı bazı şeylerde problem olmuş."
-#: searx/templates/oscar/result_templates/default.html:6
-#: searx/templates/oscar/result_templates/map.html:7
-#: searx/templates/oscar/result_templates/torrent.html:6
-#: searx/templates/oscar/result_templates/videos.html:6
-msgid "cached"
-msgstr "önbellek"
-
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "show media"
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:9
+#: searx/templates/oscar/result_templates/default.html:7
msgid "hide media"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:21
+#: searx/templates/oscar/result_templates/images.html:23
msgid "Get image"
msgstr "Görseli indir"
-#: searx/templates/oscar/result_templates/images.html:22
+#: searx/templates/oscar/result_templates/images.html:24
msgid "View source"
msgstr "Kaynağı göster"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "show map"
msgstr "haritayı göster"
-#: searx/templates/oscar/result_templates/map.html:10
+#: searx/templates/oscar/result_templates/map.html:7
msgid "hide map"
msgstr "haritayı gizle"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "show details"
msgstr "ayrıntıları göster"
-#: searx/templates/oscar/result_templates/map.html:14
+#: searx/templates/oscar/result_templates/map.html:11
msgid "hide details"
msgstr "ayrıntıları gizle"
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Seeder"
-msgstr "Besleyenler"
-
-#: searx/templates/oscar/result_templates/torrent.html:8
-msgid "Leecher"
-msgstr "Sömürenler"
-
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "show video"
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
msgstr ""
-#: searx/templates/oscar/result_templates/videos.html:9
-msgid "hide video"
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
msgstr ""
-msgid "Localization"
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
msgstr ""
-msgid "Yes"
-msgstr "Evet"
-
-msgid "No"
-msgstr "Hayır"
-
-# categories - manually added
-# TODO - automatically add
-msgid "files"
-msgstr "dosyalar"
-
-msgid "general"
-msgstr "genel"
-
-msgid "music"
-msgstr "müzik"
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr ""
-msgid "social media"
-msgstr "sosyal medya"
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr ""
-msgid "images"
-msgstr "görseller"
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr ""
-msgid "videos"
-msgstr "videolar"
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr ""
-msgid "it"
-msgstr "bilişim"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr ""
-msgid "news"
-msgstr "haberler"
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr ""
-msgid "map"
-msgstr "harita"
+#~ msgid "Filter explicite content"
+#~ msgstr ""
diff --git a/searx/webapp.py b/searx/webapp.py
index 2394aacfe..b12a08db5 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -97,6 +97,16 @@ for indice, theme in enumerate(themes):
cookie_max_age = 60 * 60 * 24 * 365 * 5 # 5 years
+_category_names = (gettext('files'),
+ gettext('general'),
+ gettext('music'),
+ gettext('social media'),
+ gettext('images'),
+ gettext('videos'),
+ gettext('it'),
+ gettext('news'),
+ gettext('map'))
+
@babel.localeselector
def get_locale():
@@ -402,7 +412,6 @@ def about():
"""Render about page"""
return render(
'about.html',
- rtl=False,
)
diff --git a/utils/update-translations.sh b/utils/update-translations.sh
index 2f9ab218f..00e7fb1e0 100755
--- a/utils/update-translations.sh
+++ b/utils/update-translations.sh
@@ -10,8 +10,6 @@ SEARX_DIR='searx'
pybabel extract -F babel.cfg -o messages.pot $SEARX_DIR
for f in `ls $SEARX_DIR'/translations/'`; do
pybabel update -N -i messages.pot -d $SEARX_DIR'/translations/' -l $f
- # TODO - need to fix category translations
- sed -i 's/#~ //' $SEARX_DIR'/translations/'$f'/LC_MESSAGES/messages.po'
done
echo '[!] update done, edit .po files if required and run pybabel compile -d searx/translations/'