diff options
163 files changed, 4736 insertions, 1326 deletions
diff --git a/.gitignore b/.gitignore index 760b1a8f3..105f0191b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,24 +5,13 @@ env robot_log.html robot_output.xml robot_report.html +test_basic/ setup.cfg *.pyc */*.pyc *~ -bin/ -build/ -coverage/ -develop-eggs/ -dist/ -eggs/ -include/ -lib/ -local/ -parts/ -searx.egg-info/ -var/ node_modules/ .tx/ diff --git a/.travis.yml b/.travis.yml index be6683510..d0bc35094 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,16 +11,16 @@ before_install: - "export DISPLAY=:99.0" - "sh -e /etc/init.d/xvfb start" - npm install -g less grunt-cli - - ( cd searx/static/themes/oscar;npm install ) + - ( cd searx/static/themes/oscar;npm install; cd - ) install: - - "make" + - ./manage.sh update_dev_packages - pip install coveralls script: - - "make flake8" - - "make robot" - - "make styles" - - "make grunt" - - make coverage + - ./manage.sh pep8_check + - ./manage.sh styles + - ./manage.sh grunt_build + - ./manage.sh py_test_coverage + - ./manage.sh robot_tests after_success: coveralls notifications: diff --git a/Dockerfile b/Dockerfile index 543c74d0e..387669bc5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,54 @@ -FROM python:2.7-slim +FROM alpine:3.3 +MAINTAINER searx <https://github.com/asciimoo/searx> +LABEL description "A privacy-respecting, hackable metasearch engine." -WORKDIR /app +ENV BASE_URL=False IMAGE_PROXY=False +EXPOSE 8888 +WORKDIR /usr/local/searx +CMD ["/usr/bin/tini","--","/usr/local/searx/run.sh"] -RUN useradd searx +RUN adduser -D -h /usr/local/searx -s /bin/sh searx searx \ + && echo '#!/bin/sh' >> run.sh \ + && echo 'sed -i "s|base_url : False|base_url : $BASE_URL|g" searx/settings.yml' >> run.sh \ + && echo 'sed -i "s/image_proxy : False/image_proxy : $IMAGE_PROXY/g" searx/settings.yml' >> run.sh \ + && echo 'sed -i "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml' >> run.sh \ + && echo 'python searx/webapp.py' >> run.sh \ + && chmod +x run.sh -EXPOSE 5000 -CMD ["/usr/local/bin/uwsgi", "--uid", "searx", "--gid", "searx", "--http", ":5000", "-w", "searx.webapp"] +COPY requirements.txt ./requirements.txt -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - zlib1g-dev libxml2-dev libxslt1-dev libffi-dev build-essential \ - libssl-dev openssl && \ - rm -rf /var/lib/apt/lists/* +RUN echo "@commuedge http://nl.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \ + && apk -U add \ + build-base \ + python \ + python-dev \ + py-pip \ + libxml2 \ + libxml2-dev \ + libxslt \ + libxslt-dev \ + libffi-dev \ + openssl \ + openssl-dev \ + ca-certificates \ + tini@commuedge \ + && pip install --no-cache -r requirements.txt \ + && apk del \ + build-base \ + python-dev \ + py-pip\ + libffi-dev \ + openssl-dev \ + libxslt-dev \ + libxml2-dev \ + openssl-dev \ + ca-certificates \ + && rm -f /var/cache/apk/* -RUN pip install --no-cache uwsgi +COPY . . -COPY requirements.txt /app/requirements.txt -RUN pip install --no-cache -r requirements.txt +RUN chown -R searx:searx * -COPY . /app -RUN sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml +USER searx + +RUN sed -i "s/127.0.0.1/0.0.0.0/g" searx/settings.yml diff --git a/Makefile b/Makefile deleted file mode 100644 index 5573e5447..000000000 --- a/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# convenience makefile to boostrap & run buildout -# use `make options=-v` to run buildout with extra options - -version = 2.7 -python = bin/python -options = - -all: .installed.cfg - -.installed.cfg: bin/buildout buildout.cfg setup.py - bin/buildout $(options) - -bin/buildout: $(python) buildout.cfg bootstrap.py - $(python) bootstrap.py - @touch $@ - -$(python): - virtualenv -p python$(version) --no-site-packages . - @touch $@ - -robot: .installed.cfg - @bin/robot - -flake8: .installed.cfg - @bin/flake8 setup.py - @bin/flake8 ./searx/ - -tests: .installed.cfg flake8 - @bin/test - @grunt test --gruntfile searx/static/themes/oscar/gruntfile.js - -coverage: .installed.cfg - @bin/coverage run bin/test - @bin/coverage report - @bin/coverage html - -production: bin/buildout production.cfg setup.py - bin/buildout -c production.cfg $(options) - @echo "* Please modify `readlink --canonicalize-missing ./searx/settings.py`" - @echo "* Hint 1: on production, disable debug mode and change secret_key" - @echo "* Hint 2: searx will be executed at server startup by crontab" - @echo "* Hint 3: to run immediatley, execute 'bin/supervisord'" - -minimal: bin/buildout minimal.cfg setup.py - bin/buildout -c minimal.cfg $(options) - -styles: - @lessc -x searx/static/themes/default/less/style.less > searx/static/themes/default/css/style.css - @lessc -x searx/static/themes/default/less/style-rtl.less > searx/static/themes/default/css/style-rtl.css - @lessc -x searx/static/themes/courgette/less/style.less > searx/static/themes/courgette/css/style.css - @lessc -x searx/static/themes/courgette/less/style-rtl.less > searx/static/themes/courgette/css/style-rtl.css - @lessc -x searx/static/less/bootstrap/bootstrap.less > searx/static/css/bootstrap.min.css - @lessc -x searx/static/themes/oscar/less/oscar/oscar.less > searx/static/themes/oscar/css/oscar.min.css - @lessc -x searx/static/themes/pix-art/less/style.less > searx/static/themes/pix-art/css/style.css - -grunt: - @grunt --gruntfile searx/static/themes/oscar/gruntfile.js - -locales: - @pybabel compile -d searx/translations - -clean: - @rm -rf .installed.cfg .mr.developer.cfg bin parts develop-eggs eggs \ - searx.egg-info lib include .coverage coverage - -.PHONY: all tests robot flake8 coverage production minimal styles locales clean diff --git a/README.rst b/README.rst index cf1263c0f..c0993157d 100644 --- a/README.rst +++ b/README.rst @@ -7,31 +7,16 @@ engine <https://en.wikipedia.org/wiki/Metasearch_engine>`__. List of `running instances <https://github.com/asciimoo/searx/wiki/Searx-instances>`__. -See the `wiki <https://github.com/asciimoo/searx/wiki>`__ for more information. +See the `documentation <https://asciimoo.github.io/searx>`__ and the `wiki <https://github.com/asciimoo/searx/wiki>`__ for more information. |Flattr searx| -Features -~~~~~~~~ - -- Tracking free -- Supports multiple output formats - - - json ``curl https://searx.me/?format=json&q=[query]`` - - csv ``curl https://searx.me/?format=csv&q=[query]`` - - opensearch/rss ``curl https://searx.me/?format=rss&q=[query]`` -- Opensearch support (you can set as default search engine) -- Configurable search engines/categories -- Different search languages -- Duckduckgo like !bang functionality with engine shortcuts -- Parallel queries - relatively fast - Installation ~~~~~~~~~~~~ - clone source: ``git clone git@github.com:asciimoo/searx.git && cd searx`` -- install dependencies: ``pip install -r requirements.txt`` +- install dependencies: ``./manage.sh update_packages`` - edit your `settings.yml <https://github.com/asciimoo/searx/blob/master/settings.yml>`__ (set your ``secret_key``!) @@ -40,104 +25,6 @@ Installation For all the details, follow this `step by step installation <https://github.com/asciimoo/searx/wiki/Installation>`__ -Alternative (Recommended) Installation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -- clone source: - ``git clone git@github.com:asciimoo/searx.git && cd searx`` -- build in current folder: ``make minimal`` -- run ``bin/searx-run`` to start the application - -Development -~~~~~~~~~~~ - -Just run ``make``. Versions of dependencies are pinned down inside -``versions.cfg`` to produce most stable build. Also remember, NO make -command should be run as root, not even ``make production`` - -Deployment -~~~~~~~~~~ - -- clone source: - ``git clone git@github.com:asciimoo/searx.git && cd searx`` -- build in current folder: ``make production`` -- run ``bin/supervisord`` to start the application - -Upgrading -~~~~~~~~~ - -- inside previously cloned searx directory run: ``git stash`` to - temporarily save any changes you have made -- pull source: ``git pull origin master`` -- re-build in current folder: ``make production`` -- run ``bin/supervisorctl stop searx`` to stop searx, if it does not, - then run ``fuser -k 8888/tcp`` -- run ``bin/supervisorctl reload`` to re-read supervisor config and - start searx - -Command make -~~~~~~~~~~~~ - -``make`` -'''''''' - -Builds development environment with testing support. - -``make tests`` -'''''''''''''' - -Runs tests. You can write tests -`here <https://github.com/asciimoo/searx/tree/master/searx/tests>`__ and -remember 'untested code is broken code'. - -``make robot`` -'''''''''''''' - -Runs robot (Selenium) tests, you must have ``firefox`` installed because -this functional tests actually run the browser and perform operations on -it. Also searx is executed with -`settings\_robot <https://github.com/asciimoo/searx/blob/master/searx/settings_robot.yml>`__. - -``make flake8`` -''''''''''''''' - -'pep8 is a tool to check your Python code against some of the style -conventions in `PEP 8 <http://www.python.org/dev/peps/pep-0008/>`__.' - -``make coverage`` -''''''''''''''''' - -Checks coverage of tests, after running this, execute this: -``firefox ./coverage/index.html`` - -``make production`` -''''''''''''''''''' - -Used to make co-called production environment - without tests (you -should ran tests before deploying searx on the server). This installs -supervisord, so if searx crashes, it will try to pick itself up again. -And crontab entry is added to start supervisord at server boot. - -``make minimal`` -'''''''''''''''' - -Minimal build - without test frameworks, the quickest build option. - -``make clean`` -'''''''''''''' - -Deletes several folders and files (see ``Makefile`` for more), so that -next time you run any other ``make`` command it will rebuild everithing. - -TODO -~~~~ - -- Moar engines -- Better ui -- Browser integration -- Documentation -- Tests - Bugs ~~~~ diff --git a/base.cfg b/base.cfg deleted file mode 100644 index 6e46e9eb7..000000000 --- a/base.cfg +++ /dev/null @@ -1,17 +0,0 @@ -[buildout] -extends = versions.cfg -unzip = true -newest = false -prefer-final = true -develop = . - -eggs = - searx - -parts = - omelette - - -[omelette] -recipe = collective.recipe.omelette -eggs = ${buildout:eggs} diff --git a/bootstrap.py b/bootstrap.py deleted file mode 100644 index a4599211f..000000000 --- a/bootstrap.py +++ /dev/null @@ -1,210 +0,0 @@ -############################################################################## -# -# Copyright (c) 2006 Zope Foundation and Contributors. -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# -############################################################################## -"""Bootstrap a buildout-based project - -Simply run this script in a directory containing a buildout.cfg. -The script accepts buildout command-line options, so you can -use the -c option to specify an alternate configuration file. -""" - -import os -import shutil -import sys -import tempfile - -from optparse import OptionParser - -__version__ = '2015-07-01' -# See zc.buildout's changelog if this version is up to date. - -tmpeggs = tempfile.mkdtemp(prefix='bootstrap-') - -usage = '''\ -[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] - -Bootstraps a buildout-based project. - -Simply run this script in a directory containing a buildout.cfg, using the -Python that you want bin/buildout to use. - -Note that by using --find-links to point to local resources, you can keep -this script from going over the network. -''' - -parser = OptionParser(usage=usage) -parser.add_option("--version", - action="store_true", default=False, - help=("Return bootstrap.py version.")) -parser.add_option("-t", "--accept-buildout-test-releases", - dest='accept_buildout_test_releases', - action="store_true", default=False, - help=("Normally, if you do not specify a --version, the " - "bootstrap script and buildout gets the newest " - "*final* versions of zc.buildout and its recipes and " - "extensions for you. If you use this flag, " - "bootstrap and buildout will get the newest releases " - "even if they are alphas or betas.")) -parser.add_option("-c", "--config-file", - help=("Specify the path to the buildout configuration " - "file to be used.")) -parser.add_option("-f", "--find-links", - help=("Specify a URL to search for buildout releases")) -parser.add_option("--allow-site-packages", - action="store_true", default=False, - help=("Let bootstrap.py use existing site packages")) -parser.add_option("--buildout-version", - help="Use a specific zc.buildout version") -parser.add_option("--setuptools-version", - help="Use a specific setuptools version") -parser.add_option("--setuptools-to-dir", - help=("Allow for re-use of existing directory of " - "setuptools versions")) - -options, args = parser.parse_args() -if options.version: - print("bootstrap.py version %s" % __version__) - sys.exit(0) - - -###################################################################### -# load/install setuptools - -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -ez = {} -if os.path.exists('ez_setup.py'): - exec(open('ez_setup.py').read(), ez) -else: - exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) - -if not options.allow_site_packages: - # ez_setup imports site, which adds site packages - # this will remove them from the path to ensure that incompatible versions - # of setuptools are not in the path - import site - # inside a virtualenv, there is no 'getsitepackages'. - # We can't remove these reliably - if hasattr(site, 'getsitepackages'): - for sitepackage_path in site.getsitepackages(): - # Strip all site-packages directories from sys.path that - # are not sys.prefix; this is because on Windows - # sys.prefix is a site-package directory. - if sitepackage_path != sys.prefix: - sys.path[:] = [x for x in sys.path - if sitepackage_path not in x] - -setup_args = dict(to_dir=tmpeggs, download_delay=0) - -if options.setuptools_version is not None: - setup_args['version'] = options.setuptools_version -if options.setuptools_to_dir is not None: - setup_args['to_dir'] = options.setuptools_to_dir - -ez['use_setuptools'](**setup_args) -import setuptools -import pkg_resources - -# This does not (always?) update the default working set. We will -# do it. -for path in sys.path: - if path not in pkg_resources.working_set.entries: - pkg_resources.working_set.add_entry(path) - -###################################################################### -# Install buildout - -ws = pkg_resources.working_set - -setuptools_path = ws.find( - pkg_resources.Requirement.parse('setuptools')).location - -# Fix sys.path here as easy_install.pth added before PYTHONPATH -cmd = [sys.executable, '-c', - 'import sys; sys.path[0:0] = [%r]; ' % setuptools_path + - 'from setuptools.command.easy_install import main; main()', - '-mZqNxd', tmpeggs] - -find_links = os.environ.get( - 'bootstrap-testing-find-links', - options.find_links or - ('http://downloads.buildout.org/' - if options.accept_buildout_test_releases else None) - ) -if find_links: - cmd.extend(['-f', find_links]) - -requirement = 'zc.buildout' -version = options.buildout_version -if version is None and not options.accept_buildout_test_releases: - # Figure out the most recent final version of zc.buildout. - import setuptools.package_index - _final_parts = '*final-', '*final' - - def _final_version(parsed_version): - try: - return not parsed_version.is_prerelease - except AttributeError: - # Older setuptools - for part in parsed_version: - if (part[:1] == '*') and (part not in _final_parts): - return False - return True - - index = setuptools.package_index.PackageIndex( - search_path=[setuptools_path]) - if find_links: - index.add_find_links((find_links,)) - req = pkg_resources.Requirement.parse(requirement) - if index.obtain(req) is not None: - best = [] - bestv = None - for dist in index[req.project_name]: - distv = dist.parsed_version - if _final_version(distv): - if bestv is None or distv > bestv: - best = [dist] - bestv = distv - elif distv == bestv: - best.append(dist) - if best: - best.sort() - version = best[-1].version -if version: - requirement = '=='.join((requirement, version)) -cmd.append(requirement) - -import subprocess -if subprocess.call(cmd) != 0: - raise Exception( - "Failed to execute command:\n%s" % repr(cmd)[1:-1]) - -###################################################################### -# Import and run buildout - -ws.add_entry(tmpeggs) -ws.require(requirement) -import zc.buildout.buildout - -if not [a for a in args if '=' not in a]: - args.append('bootstrap') - -# if -c was provided, we push it back into args for buildout' main function -if options.config_file is not None: - args[0:0] = ['-c', options.config_file] - -zc.buildout.buildout.main(args) -shutil.rmtree(tmpeggs) diff --git a/buildout.cfg b/buildout.cfg deleted file mode 100644 index b9e6d24ed..000000000 --- a/buildout.cfg +++ /dev/null @@ -1,30 +0,0 @@ -[buildout] -extends = base.cfg -develop = . - -eggs = - searx [test] - -parts += - pyscripts - robot - test - - -[pyscripts] -recipe = zc.recipe.egg:script -eggs = ${buildout:eggs} -interpreter = py -dependent-scripts = true - - -[robot] -recipe = zc.recipe.testrunner -eggs = ${buildout:eggs} -defaults = ['--color', '--auto-progress', '--layer', 'SearxRobotLayer'] - - -[test] -recipe = zc.recipe.testrunner -eggs = ${buildout:eggs} -defaults = ['--color', '--auto-progress', '--layer', 'SearxTestLayer', '--layer', '!SearxRobotLayer'] diff --git a/manage.sh b/manage.sh new file mode 100755 index 000000000..bc5b73dfd --- /dev/null +++ b/manage.sh @@ -0,0 +1,97 @@ +#!/bin/sh + +BASE_DIR=$(dirname `readlink -f $0`) +PYTHONPATH=$BASE_DIR +SEARX_DIR="$BASE_DIR/searx" +ACTION=$1 + +update_packages() { + pip install --upgrade -r "$BASE_DIR/requirements.txt" +} + +update_dev_packages() { + update_packages + pip install --upgrade -r "$BASE_DIR/requirements-dev.txt" +} + +pep8_check() { + echo '[!] Running pep8 check' + # ignored rules: + # E402 module level import not at top of file + # W503 line break before binary operator + pep8 --max-line-length=120 --ignore "E402,W503" "$SEARX_DIR" "$BASE_DIR/tests" +} + +unit_tests() { + echo '[!] Running unit tests' + python -m nose2 -s "$BASE_DIR/tests/unit" +} + +py_test_coverage() { + echo '[!] Running python test coverage' + PYTHONPATH=`pwd` python -m nose2 -C --coverage "$SEARX_DIR" -s "$BASE_DIR/tests/unit" + coverage report + coverage html +} + +robot_tests() { + echo '[!] Running robot tests' + PYTHONPATH=`pwd` python "$SEARX_DIR/testing.py" robot +} + +tests() { + set -e + pep8_check + unit_tests + robot_tests + set +e +} + +build_style() { + lessc -x "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2" +} + +styles() { + echo '[!] Building styles' + build_style themes/default/less/style.less themes/default/css/style.css + build_style themes/default/less/style-rtl.less themes/default/css/style-rtl.css + build_style themes/courgette/less/style.less themes/courgette/css/style.css + build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css + build_style less/bootstrap/bootstrap.less css/bootstrap.min.css + build_style themes/oscar/less/oscar/oscar.less themes/oscar/css/oscar.min.css + build_style themes/pix-art/less/style.less themes/pix-art/css/style.css +} + +grunt_build() { + grunt --gruntfile "$SEARX_DIR/static/themes/oscar/gruntfile.js" +} + +locales() { + pybabel compile -d "$SEARX_DIR/translations" +} + +help() { + [ -z "$1" ] || echo -e "Error: $1\n" + echo "Searx manage.sh help + +Commands +======== + grunt_build - Build js files + help - This text + locales - Compile locales + pep8_check - Pep8 validation + py_test_coverage - Unit test coverage + robot_tests - Run selenium tests + styles - Build less files + tests - Run all python tests (pep8, unit, robot) + unit_tests - Run unit tests + update_dev_packages - Check & update development and production dependency changes + update_packages - Check & update dependency changes +" +} + +if [ -n "$(type -t $ACTION)" ] && [ "$(type -t $ACTION)" = function ]; then + $ACTION +else + help "action not found" +fi diff --git a/minimal.cfg b/minimal.cfg deleted file mode 100644 index 339a2939f..000000000 --- a/minimal.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[buildout] -extends = base.cfg -develop = . - -eggs = - searx - -parts += - pyscripts - - -[pyscripts] -recipe = zc.recipe.egg:script -eggs = ${buildout:eggs} -interpreter = py diff --git a/production.cfg b/production.cfg deleted file mode 100644 index ea40682d8..000000000 --- a/production.cfg +++ /dev/null @@ -1,34 +0,0 @@ -[buildout] -extends = base.cfg -develop = . - -eggs = - searx - -parts += - pyscripts - supervisor - crontab_reboot - - -[pyscripts] -recipe = zc.recipe.egg:script -eggs = ${buildout:eggs} -interpreter = py - - -[supervisor] -recipe = collective.recipe.supervisor -http-socket = unix -user = searxer -password = ohpleasedochangeme -file = /tmp/supervisor.sock -chmod = 0700 -programs = - 50 searx ${buildout:bin-directory}/searx-run - - -[crontab_reboot] -recipe = z3c.recipe.usercrontab -times = @reboot -command = ${buildout:bin-directory}/supervisord diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 000000000..38be888e0 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,10 @@ +babel==2.2.0 +mock==1.0.1 +nose2[coverage-plugin] +pep8==1.7.0 +plone.testing==4.0.15 +robotframework-selenium2library==1.7.4 +robotsuite==1.7.0 +transifex-client==0.11 +unittest2==1.1.0 +zope.testrunner==4.4.10 diff --git a/requirements.txt b/requirements.txt index e021c4a25..80c08a453 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ -flask -flask-babel -requests -lxml -pyyaml -pygments -python-dateutil -ndg-httpsclient -pyopenssl -pyasn1 -pyasn1-modules -certifi +certifi==2015.11.20.1 +flask==0.10.1 +flask-babel==0.9 +lxml==3.5.0 +ndg-httpsclient==0.4.0 +pyasn1==0.1.9 +pyasn1-modules==0.0.8 +pygments==2.0.2 +pyopenssl==0.15.1 +python-dateutil==2.4.2 +pyyaml==3.11 +requests==2.9.1 diff --git a/searx/__init__.py b/searx/__init__.py index ea21e8f13..7b67a394f 100644 --- a/searx/__init__.py +++ b/searx/__init__.py @@ -15,9 +15,11 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. (C) 2013- by Adam Tauber, <asciimoo@gmail.com> ''' +import certifi import logging from os import environ from os.path import realpath, dirname, join, abspath +from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION try: from yaml import load except: @@ -47,4 +49,11 @@ else: logger = logging.getLogger('searx') +# Workaround for openssl versions <1.0.2 +# https://github.com/certifi/python-certifi/issues/26 +if OPENSSL_VERSION_INFO[0:3] < (1, 0, 2): + if hasattr(certifi, 'old_where'): + environ['REQUESTS_CA_BUNDLE'] = certifi.old_where() + logger.warning('You are using an old openssl version({0}), please upgrade above 1.0.2!'.format(OPENSSL_VERSION)) + logger.info('Initialisation done') diff --git a/searx/autocomplete.py b/searx/autocomplete.py index 264d0cc1f..94913e8d8 100644 --- a/searx/autocomplete.py +++ b/searx/autocomplete.py @@ -114,8 +114,7 @@ def dbpedia(query): # dbpedia autocompleter, no HTTPS autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?' - response = get(autocomplete_url - + urlencode(dict(QueryString=query))) + response = get(autocomplete_url + urlencode(dict(QueryString=query))) results = [] @@ -141,8 +140,7 @@ def google(query): # google autocompleter autocomplete_url = 'https://suggestqueries.google.com/complete/search?client=toolbar&' - response = get(autocomplete_url - + urlencode(dict(q=query))) + response = get(autocomplete_url + urlencode(dict(q=query))) results = [] @@ -163,6 +161,23 @@ def startpage(query): return [] +def qwant(query): + # qwant autocompleter (additional parameter : lang=en_en&count=xxx ) + url = 'https://api.qwant.com/api/suggest?{query}' + + resp = get(url.format(query=urlencode({'q': query}))) + + results = [] + + if resp.ok: + data = loads(resp.text) + if data['status'] == 'success': + for item in data['data']['items']: + results.append(item['value']) + + return results + + def wikipedia(query): # wikipedia autocompleter url = 'https://en.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json' @@ -177,5 +192,6 @@ backends = {'dbpedia': dbpedia, 'duckduckgo': duckduckgo, 'google': google, 'startpage': startpage, + 'qwant': qwant, 'wikipedia': wikipedia } diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 447138d3b..6d5066733 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -34,6 +34,15 @@ engines = {} categories = {'general': []} engine_shortcuts = {} +engine_default_args = {'paging': False, + 'categories': ['general'], + 'language_support': True, + 'safesearch': False, + 'timeout': settings['outgoing']['request_timeout'], + 'shortcut': '-', + 'disabled': False, + 'suspend_end_time': 0, + 'continuous_errors': 0} def load_module(filename): @@ -62,26 +71,9 @@ def load_engine(engine_data): continue setattr(engine, param_name, engine_data[param_name]) - if not hasattr(engine, 'paging'): - engine.paging = False - - if not hasattr(engine, 'categories'): - engine.categories = ['general'] - - if not hasattr(engine, 'language_support'): - engine.language_support = True - - if not hasattr(engine, 'safesearch'): - engine.safesearch = False - - if not hasattr(engine, 'timeout'): - engine.timeout = settings['outgoing']['request_timeout'] - - if not hasattr(engine, 'shortcut'): - engine.shortcut = '' - - if not hasattr(engine, 'disabled'): - engine.disabled = False + for arg_name, arg_value in engine_default_args.iteritems(): + if not hasattr(engine, arg_name): + setattr(engine, arg_name, arg_value) # checking required variables for engine_attr in dir(engine): @@ -100,18 +92,15 @@ def load_engine(engine_data): 'errors': 0 } - if hasattr(engine, 'categories'): - for category_name in engine.categories: - categories.setdefault(category_name, []).append(engine) - else: - categories['general'].append(engine) + for category_name in engine.categories: + categories.setdefault(category_name, []).append(engine) + + if engine.shortcut in engine_shortcuts: + logger.error('Engine config error: ambigious shortcut: {0}'.format(engine.shortcut)) + sys.exit(1) + + engine_shortcuts[engine.shortcut] = engine.name - if engine.shortcut: - if engine.shortcut in engine_shortcuts: - logger.error('Engine config error: ambigious shortcut: {0}' - .format(engine.shortcut)) - sys.exit(1) - engine_shortcuts[engine.shortcut] = engine.name return engine diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py index 06850dfe1..2664b795f 100644 --- a/searx/engines/bing_images.py +++ b/searx/engines/bing_images.py @@ -17,7 +17,7 @@ from urllib import urlencode from lxml import html -from yaml import load +from json import loads import re # engine dependent config @@ -36,6 +36,9 @@ safesearch_types = {2: 'STRICT', 0: 'OFF'} +_quote_keys_regex = re.compile('({|,)([a-z][a-z0-9]*):(")', re.I | re.U) + + # do search-request def request(query, params): offset = (params['pageno'] - 1) * 10 + 1 @@ -65,22 +68,19 @@ def response(resp): dom = html.fromstring(resp.text) - # init regex for yaml-parsing - p = re.compile('({|,)([a-z]+):(")') - # parse results for result in dom.xpath('//div[@class="dg_u"]'): link = result.xpath('./a')[0] - # parse yaml-data (it is required to add a space, to make it parsable) - yaml_data = load(p.sub(r'\1\2: \3', link.attrib.get('m'))) + # parse json-data (it is required to add a space, to make it parsable) + json_data = loads(_quote_keys_regex.sub(r'\1"\2": \3', link.attrib.get('m'))) title = link.attrib.get('t1') ihk = link.attrib.get('ihk') # url = 'http://' + link.attrib.get('t3') - url = yaml_data.get('surl') - img_src = yaml_data.get('imgurl') + url = json_data.get('surl') + img_src = json_data.get('imgurl') # append result results.append({'template': 'images.html', diff --git a/searx/engines/blekko_images.py b/searx/engines/blekko_images.py index 93ac6616b..c0664f390 100644 --- a/searx/engines/blekko_images.py +++ b/searx/engines/blekko_images.py @@ -37,7 +37,7 @@ def request(query, params): c=c) if params['pageno'] != 1: - params['url'] += '&page={pageno}'.format(pageno=(params['pageno']-1)) + params['url'] += '&page={pageno}'.format(pageno=(params['pageno'] - 1)) # let Blekko know we wan't have profiling params['cookies']['tag_lesslogging'] = '1' diff --git a/searx/engines/btdigg.py b/searx/engines/btdigg.py index 192ed6ee9..c2b22f003 100644 --- a/searx/engines/btdigg.py +++ b/searx/engines/btdigg.py @@ -29,7 +29,7 @@ search_url = url + '/search?q={search_term}&p={pageno}' # do search-request def request(query, params): params['url'] = search_url.format(search_term=quote(query), - pageno=params['pageno']-1) + pageno=params['pageno'] - 1) return params diff --git a/searx/engines/deviantart.py b/searx/engines/deviantart.py index 60c8d7ea7..135aeb324 100644 --- a/searx/engines/deviantart.py +++ b/searx/engines/deviantart.py @@ -24,7 +24,7 @@ paging = True # search-url base_url = 'https://www.deviantart.com/' -search_url = base_url+'browse/all/?offset={offset}&{query}' +search_url = base_url + 'browse/all/?offset={offset}&{query}' # do search-request diff --git a/searx/engines/digg.py b/searx/engines/digg.py index 000f66ba2..a10b38bb6 100644 --- a/searx/engines/digg.py +++ b/searx/engines/digg.py @@ -22,7 +22,7 @@ paging = True # search-url base_url = 'https://digg.com/' -search_url = base_url+'api/search/{query}.json?position={position}&format=html' +search_url = base_url + 'api/search/{query}.json?position={position}&format=html' # specific xpath variables results_xpath = '//article' diff --git a/searx/engines/faroo.py b/searx/engines/faroo.py index 43df14eef..9fa244e77 100644 --- a/searx/engines/faroo.py +++ b/searx/engines/faroo.py @@ -88,7 +88,7 @@ def response(resp): for result in search_res['results']: if result['news']: # timestamp (milliseconds since 1970) - publishedDate = datetime.datetime.fromtimestamp(result['date']/1000.0) # noqa + publishedDate = datetime.datetime.fromtimestamp(result['date'] / 1000.0) # noqa # append news result results.append({'url': result['url'], diff --git a/searx/engines/frinkiac.py b/searx/engines/frinkiac.py new file mode 100644 index 000000000..a9383f862 --- /dev/null +++ b/searx/engines/frinkiac.py @@ -0,0 +1,44 @@ +""" +Frinkiac (Images) + +@website https://www.frinkiac.com +@provide-api no +@using-api no +@results JSON +@stable no +@parse url, title, img_src +""" + +from json import loads +from urllib import urlencode + +categories = ['images'] + +BASE = 'https://frinkiac.com/' +SEARCH_URL = '{base}api/search?{query}' +RESULT_URL = '{base}?{query}' +THUMB_URL = '{base}img/{episode}/{timestamp}/medium.jpg' +IMAGE_URL = '{base}img/{episode}/{timestamp}.jpg' + + +def request(query, params): + params['url'] = SEARCH_URL.format(base=BASE, query=urlencode({'q': query})) + return params + + +def response(resp): + results = [] + response_data = loads(resp.text) + for result in response_data: + episode = result['Episode'] + timestamp = result['Timestamp'] + + results.append({'template': 'images.html', + 'url': RESULT_URL.format(base=BASE, + query=urlencode({'p': 'caption', 'e': episode, 't': timestamp})), + 'title': episode, + 'content': '', + 'thumbnail_src': THUMB_URL.format(base=BASE, episode=episode, timestamp=timestamp), + 'img_src': IMAGE_URL.format(base=BASE, episode=episode, timestamp=timestamp)}) + + return results diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py index 3fef102f4..1cc243104 100644 --- a/searx/engines/gigablast.py +++ b/searx/engines/gigablast.py @@ -10,20 +10,30 @@ @parse url, title, content """ -from urllib import urlencode from cgi import escape -from lxml import etree +from json import loads from random import randint from time import time +from urllib import urlencode # engine dependent config categories = ['general'] paging = True -number_of_results = 5 +number_of_results = 10 +language_support = True +safesearch = True -# search-url, invalid HTTPS certificate +# search-url base_url = 'https://gigablast.com/' -search_string = 'search?{query}&n={number_of_results}&s={offset}&format=xml&qh=0&rxiyd={rxiyd}&rand={rand}' +search_string = 'search?{query}'\ + '&n={number_of_results}'\ + '&c=main'\ + '&s={offset}'\ + '&format=json'\ + '&qh=0'\ + '&rxiwd={rxiwd}'\ + '&qlang={lang}'\ + '&ff={safesearch}' # specific xpath variables results_xpath = '//response//result' @@ -36,12 +46,23 @@ content_xpath = './/sum' def request(query, params): offset = (params['pageno'] - 1) * number_of_results - search_path = search_string.format( - query=urlencode({'q': query}), - offset=offset, - number_of_results=number_of_results, - rxiyd=randint(10000, 10000000), - rand=int(time())) + if params['language'] == 'all': + language = 'xx' + else: + language = params['language'][0:2] + + if params['safesearch'] >= 1: + safesearch = 1 + else: + safesearch = 0 + + search_path = search_string.format(query=urlencode({'q': query}), + offset=offset, + number_of_results=number_of_results, + rxiwd=1, + # rand=int(time()), + lang=language, + safesearch=safesearch) params['url'] = base_url + search_path @@ -52,18 +73,14 @@ def request(query, params): def response(resp): results = [] - dom = etree.fromstring(resp.content) - # parse results - for result in dom.xpath(results_xpath): - url = result.xpath(url_xpath)[0].text - title = result.xpath(title_xpath)[0].text - content = escape(result.xpath(content_xpath)[0].text) + response_json = loads(resp.text) + for result in response_json['results']: # append result - results.append({'url': url, - 'title': title, - 'content': content}) + results.append({'url': result['url'], + 'title': escape(result['title']), + 'content': escape(result['sum'])}) # return results return results diff --git a/searx/engines/google.py b/searx/engines/google.py index e82260356..dbca205a1 100644 --- a/searx/engines/google.py +++ b/searx/engines/google.py @@ -90,7 +90,7 @@ url_map = 'https://www.openstreetmap.org/'\ search_path = '/search' search_url = ('https://{hostname}' + search_path + - '?{query}&start={offset}&gbv=1&gws_rd=cr') + '?{query}&start={offset}&gbv=1&gws_rd=ssl') # other URLs map_hostname_start = 'maps.google.' @@ -99,7 +99,7 @@ redirect_path = '/url' images_path = '/images' # specific xpath variables -results_xpath = '//li[@class="g"]' +results_xpath = '//div[@class="g"]' url_xpath = './/h3/a/@href' title_xpath = './/h3' content_xpath = './/span[@class="st"]' @@ -209,29 +209,29 @@ def response(resp): parsed_url = urlparse(url, google_hostname) # map result - if ((parsed_url.netloc == google_hostname and parsed_url.path.startswith(maps_path)) - or (parsed_url.netloc.startswith(map_hostname_start))): - x = result.xpath(map_near) - if len(x) > 0: - # map : near the location - results = results + parse_map_near(parsed_url, x, google_hostname) - else: - # map : detail about a location - results = results + parse_map_detail(parsed_url, result, google_hostname) - - # google news - elif (parsed_url.netloc == google_hostname - and parsed_url.path == search_path): - # skipping news results - pass - - # images result - elif (parsed_url.netloc == google_hostname - and parsed_url.path == images_path): - # only thumbnail image provided, - # so skipping image results - # results = results + parse_images(result, google_hostname) - pass + if parsed_url.netloc == google_hostname: + # TODO fix inside links + continue + # if parsed_url.path.startswith(maps_path) or parsed_url.netloc.startswith(map_hostname_start): + # print "yooooo"*30 + # x = result.xpath(map_near) + # if len(x) > 0: + # # map : near the location + # results = results + parse_map_near(parsed_url, x, google_hostname) + # else: + # # map : detail about a location + # results = results + parse_map_detail(parsed_url, result, google_hostname) + # # google news + # elif parsed_url.path == search_path: + # # skipping news results + # pass + + # # images result + # elif parsed_url.path == images_path: + # # only thumbnail image provided, + # # so skipping image results + # # results = results + parse_images(result, google_hostname) + # pass else: # normal result diff --git a/searx/engines/mediawiki.py b/searx/engines/mediawiki.py index 9fb72e830..26d3720d9 100644 --- a/searx/engines/mediawiki.py +++ b/searx/engines/mediawiki.py @@ -24,13 +24,13 @@ number_of_results = 1 # search-url base_url = 'https://{language}.wikipedia.org/' -search_url = base_url + 'w/api.php?action=query'\ - '&list=search'\ - '&{query}'\ - '&srprop=timestamp'\ - '&format=json'\ - '&sroffset={offset}'\ - '&srlimit={limit}' # noqa +search_postfix = 'w/api.php?action=query'\ + '&list=search'\ + '&{query}'\ + '&format=json'\ + '&sroffset={offset}'\ + '&srlimit={limit}'\ + '&srwhat=nearmatch' # search for a near match in the title # do search-request @@ -48,12 +48,15 @@ def request(query, params): else: language = params['language'].split('_')[0] - if len(format_strings) > 1: + # format_string [('https://', 'language', '', None), ('.wikipedia.org/', None, None, None)] + if any(x[1] == 'language' for x in format_strings): string_args['language'] = language # write search-language back to params, required in response params['language'] = language + search_url = base_url + search_postfix + params['url'] = search_url.format(**string_args) return params @@ -71,6 +74,8 @@ def response(resp): # parse results for result in search_results['query']['search']: + if result.get('snippet', '').startswith('#REDIRECT'): + continue url = base_url.format(language=resp.search_params['language']) +\ 'wiki/' + quote(result['title'].replace(' ', '_').encode('utf-8')) diff --git a/searx/engines/searchcode_code.py b/searx/engines/searchcode_code.py index bd5eb71d2..de8cd43be 100644 --- a/searx/engines/searchcode_code.py +++ b/searx/engines/searchcode_code.py @@ -20,7 +20,7 @@ paging = True # search-url url = 'https://searchcode.com/' -search_url = url+'api/codesearch_I/?{query}&p={pageno}' +search_url = url + 'api/codesearch_I/?{query}&p={pageno}' # special code-endings which are not recognised by the file ending code_endings = {'cs': 'c#', @@ -32,7 +32,7 @@ code_endings = {'cs': 'c#', # do search-request def request(query, params): params['url'] = search_url.format(query=urlencode({'q': query}), - pageno=params['pageno']-1) + pageno=params['pageno'] - 1) # Disable SSL verification # error: (60) SSL certificate problem: unable to get local issuer diff --git a/searx/engines/searchcode_doc.py b/searx/engines/searchcode_doc.py index 9453f31a4..f24fe6f90 100644 --- a/searx/engines/searchcode_doc.py +++ b/searx/engines/searchcode_doc.py @@ -19,13 +19,13 @@ paging = True # search-url url = 'https://searchcode.com/' -search_url = url+'api/search_IV/?{query}&p={pageno}' +search_url = url + 'api/search_IV/?{query}&p={pageno}' # do search-request def request(query, params): params['url'] = search_url.format(query=urlencode({'q': query}), - pageno=params['pageno']-1) + pageno=params['pageno'] - 1) # Disable SSL verification # error: (60) SSL certificate problem: unable to get local issuer diff --git a/searx/engines/soundcloud.py b/searx/engines/soundcloud.py index 46e17fc81..ac23c1e83 100644 --- a/searx/engines/soundcloud.py +++ b/searx/engines/soundcloud.py @@ -10,17 +10,19 @@ @parse url, title, content, publishedDate, embedded """ +import re +from StringIO import StringIO from json import loads +from lxml import etree from urllib import urlencode, quote_plus from dateutil import parser +from searx import logger +from searx.poolrequests import get as http_get # engine dependent config categories = ['music'] paging = True -# api-key -guest_client_id = 'b45b1aa10f1ac2941910a7f0d10f8e28' - # search-url url = 'https://api.soundcloud.com/' search_url = url + 'search?{query}'\ @@ -35,6 +37,30 @@ embedded_url = '<iframe width="100%" height="166" ' +\ 'data-src="https://w.soundcloud.com/player/?url={uri}"></iframe>' +def get_client_id(): + response = http_get("https://soundcloud.com") + rx_namespace = {"re": "http://exslt.org/regular-expressions"} + + if response.ok: + tree = etree.parse(StringIO(response.content), etree.HTMLParser()) + script_tags = tree.xpath("//script[re:match(@src, '(.*app.*js)')]", namespaces=rx_namespace) + app_js_urls = [script_tag.get('src') for script_tag in script_tags if script_tag is not None] + + # extracts valid app_js urls from soundcloud.com content + for app_js_url in app_js_urls: + # gets app_js and searches for the clientid + response = http_get(app_js_url) + if response.ok: + cids = re.search(r'client_id:"([^"]*)"', response.content, re.M | re.I) + if cids is not None and len(cids.groups()): + return cids.groups()[0] + logger.warning("Unable to fetch guest client_id from SoundCloud, check parser!") + return "" + +# api-key +guest_client_id = get_client_id() + + # do search-request def request(query, params): offset = (params['pageno'] - 1) * 20 diff --git a/searx/engines/stackoverflow.py b/searx/engines/stackoverflow.py index 34ecabae7..fdd3711a9 100644 --- a/searx/engines/stackoverflow.py +++ b/searx/engines/stackoverflow.py @@ -22,7 +22,7 @@ paging = True # search-url url = 'https://stackoverflow.com/' -search_url = url+'search?{query}&page={pageno}' +search_url = url + 'search?{query}&page={pageno}' # specific xpath variables results_xpath = '//div[contains(@class,"question-summary")]' diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py index a91cafa00..52dd0b92f 100644 --- a/searx/engines/startpage.py +++ b/searx/engines/startpage.py @@ -90,8 +90,8 @@ def response(resp): # check if search result starts with something like: "2 Sep 2014 ... " if re.match("^([1-9]|[1-2][0-9]|3[0-1]) [A-Z][a-z]{2} [0-9]{4} \.\.\. ", content): - date_pos = content.find('...')+4 - date_string = content[0:date_pos-5] + date_pos = content.find('...') + 4 + date_string = content[0:date_pos - 5] published_date = parser.parse(date_string, dayfirst=True) # fix content string @@ -99,8 +99,8 @@ def response(resp): # check if search result starts with something like: "5 days ago ... " elif re.match("^[0-9]+ days? ago \.\.\. ", content): - date_pos = content.find('...')+4 - date_string = content[0:date_pos-5] + date_pos = content.find('...') + 4 + date_string = content[0:date_pos - 5] # calculate datetime published_date = datetime.now() - timedelta(days=int(re.match(r'\d+', date_string).group())) diff --git a/searx/engines/swisscows.py b/searx/engines/swisscows.py index 2d31264ca..864436a52 100644 --- a/searx/engines/swisscows.py +++ b/searx/engines/swisscows.py @@ -10,6 +10,7 @@ @parse url, title, content """ +from cgi import escape from json import loads from urllib import urlencode, unquote import re @@ -77,7 +78,7 @@ def response(resp): # append result results.append({'url': result['SourceUrl'], - 'title': result['Title'], + 'title': escape(result['Title']), 'content': '', 'img_src': img_url, 'template': 'images.html'}) @@ -89,8 +90,8 @@ def response(resp): # append result results.append({'url': result_url, - 'title': result_title, - 'content': result_content}) + 'title': escape(result_title), + 'content': escape(result_content)}) # parse images for result in json.get('Images', []): @@ -99,7 +100,7 @@ def response(resp): # append result results.append({'url': result['SourceUrl'], - 'title': result['Title'], + 'title': escape(result['Title']), 'content': '', 'img_src': img_url, 'template': 'images.html'}) diff --git a/searx/engines/wikidata.py b/searx/engines/wikidata.py index fc840d47c..9f3496b72 100644 --- a/searx/engines/wikidata.py +++ b/searx/engines/wikidata.py @@ -295,7 +295,7 @@ def get_geolink(claims, propertyName, defaultValue=''): if precision < 0.0003: zoom = 19 else: - zoom = int(15 - precision*8.8322 + precision*precision*0.625447) + zoom = int(15 - precision * 8.8322 + precision * precision * 0.625447) url = url_map\ .replace('{latitude}', str(value.get('latitude', 0)))\ @@ -318,6 +318,6 @@ def get_wikilink(result, wikiid): def get_wiki_firstlanguage(result, wikipatternid): for k in result.get('sitelinks', {}).keys(): - if k.endswith(wikipatternid) and len(k) == (2+len(wikipatternid)): + if k.endswith(wikipatternid) and len(k) == (2 + len(wikipatternid)): return k[0:2] return None diff --git a/searx/engines/wolframalpha_api.py b/searx/engines/wolframalpha_api.py new file mode 100644 index 000000000..4526c825f --- /dev/null +++ b/searx/engines/wolframalpha_api.py @@ -0,0 +1,122 @@ +# Wolfram Alpha (Science) +# +# @website https://www.wolframalpha.com +# @provide-api yes (https://api.wolframalpha.com/v2/) +# +# @using-api yes +# @results XML +# @stable yes +# @parse url, infobox + +from urllib import urlencode +from lxml import etree + +# search-url +search_url = 'https://api.wolframalpha.com/v2/query?appid={api_key}&{query}' +site_url = 'https://www.wolframalpha.com/input/?{query}' +api_key = '' # defined in settings.yml + +# xpath variables +failure_xpath = '/queryresult[attribute::success="false"]' +answer_xpath = '//pod[attribute::primary="true"]/subpod/plaintext' +input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext' +pods_xpath = '//pod' +subpods_xpath = './subpod' +pod_id_xpath = './@id' +pod_title_xpath = './@title' +plaintext_xpath = './plaintext' +image_xpath = './img' +img_src_xpath = './@src' +img_alt_xpath = './@alt' + +# pods to display as image in infobox +# this pods do return a plaintext, but they look better and are more useful as images +image_pods = {'VisualRepresentation', + 'Illustration'} + + +# do search-request +def request(query, params): + params['url'] = search_url.format(query=urlencode({'input': query}), + api_key=api_key) + params['headers']['Referer'] = site_url.format(query=urlencode({'i': query})) + + return params + + +# replace private user area characters to make text legible +def replace_pua_chars(text): + pua_chars = {u'\uf522': u'\u2192', # rigth arrow + u'\uf7b1': u'\u2115', # set of natural numbers + u'\uf7b4': u'\u211a', # set of rational numbers + u'\uf7b5': u'\u211d', # set of real numbers + u'\uf7bd': u'\u2124', # set of integer numbers + u'\uf74c': 'd', # differential + u'\uf74d': u'\u212f', # euler's number + u'\uf74e': 'i', # imaginary number + u'\uf7d9': '='} # equals sign + + for k, v in pua_chars.iteritems(): + text = text.replace(k, v) + + return text + + +# get response from search-request +def response(resp): + results = [] + + search_results = etree.XML(resp.content) + + # return empty array if there are no results + if search_results.xpath(failure_xpath): + return [] + + try: + infobox_title = search_results.xpath(input_xpath)[0].text + except: + infobox_title = None + + pods = search_results.xpath(pods_xpath) + result_chunks = [] + for pod in pods: + pod_id = pod.xpath(pod_id_xpath)[0] + pod_title = pod.xpath(pod_title_xpath)[0] + + subpods = pod.xpath(subpods_xpath) + if not subpods: + continue + + # Appends either a text or an image, depending on which one is more suitable + for subpod in subpods: + content = subpod.xpath(plaintext_xpath)[0].text + image = subpod.xpath(image_xpath) + + if content and pod_id not in image_pods: + + # if no input pod was found, title is first plaintext pod + if not infobox_title: + infobox_title = content + + content = replace_pua_chars(content) + result_chunks.append({'label': pod_title, 'value': content}) + + elif image: + result_chunks.append({'label': pod_title, + 'image': {'src': image[0].xpath(img_src_xpath)[0], + 'alt': image[0].xpath(img_alt_xpath)[0]}}) + + if not result_chunks: + return [] + + # append infobox + results.append({'infobox': infobox_title, + 'attributes': result_chunks, + 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer'].decode('utf8')}]}) + + # append link to site + results.append({'url': resp.request.headers['Referer'].decode('utf8'), + 'title': 'Wolfram|Alpha', + 'content': infobox_title}) + + return results diff --git a/searx/engines/wolframalpha_noapi.py b/searx/engines/wolframalpha_noapi.py new file mode 100644 index 000000000..59629b833 --- /dev/null +++ b/searx/engines/wolframalpha_noapi.py @@ -0,0 +1,116 @@ +# Wolfram|Alpha (Science) +# +# @website https://www.wolframalpha.com/ +# @provide-api yes (https://api.wolframalpha.com/v2/) +# +# @using-api no +# @results JSON +# @stable no +# @parse url, infobox + +from cgi import escape +from json import loads +from time import time +from urllib import urlencode +from lxml.etree import XML + +from searx.poolrequests import get as http_get + +# search-url +url = 'https://www.wolframalpha.com/' + +search_url = url + 'input/json.jsp'\ + '?async=false'\ + '&banners=raw'\ + '&debuggingdata=false'\ + '&format=image,plaintext,imagemap,minput,moutput'\ + '&formattimeout=2'\ + '&{query}'\ + '&output=JSON'\ + '&parsetimeout=2'\ + '&proxycode={token}'\ + '&scantimeout=0.5'\ + '&sponsorcategories=true'\ + '&statemethod=deploybutton' + +referer_url = url + 'input/?{query}' + +token = {'value': '', + 'last_updated': None} + +# pods to display as image in infobox +# this pods do return a plaintext, but they look better and are more useful as images +image_pods = {'VisualRepresentation', + 'Illustration', + 'Symbol'} + + +# seems, wolframalpha resets its token in every hour +def obtain_token(): + update_time = time() - (time() % 3600) + try: + token_response = http_get('https://www.wolframalpha.com/input/api/v1/code?ts=9999999999999999999', timeout=2.0) + token['value'] = loads(token_response.text)['code'] + token['last_updated'] = update_time + except: + pass + return token + + +obtain_token() + + +# do search-request +def request(query, params): + # obtain token if last update was more than an hour + if time() - token['last_updated'] > 3600: + obtain_token() + params['url'] = search_url.format(query=urlencode({'input': query}), token=token['value']) + params['headers']['Referer'] = referer_url.format(query=urlencode({'i': query})) + + return params + + +# get response from search-request +def response(resp): + results = [] + + resp_json = loads(resp.text) + + if not resp_json['queryresult']['success']: + return [] + + # TODO handle resp_json['queryresult']['assumptions'] + result_chunks = [] + infobox_title = None + for pod in resp_json['queryresult']['pods']: + pod_id = pod.get('id', '') + pod_title = pod.get('title', '') + + if 'subpods' not in pod: + continue + + if pod_id == 'Input' or not infobox_title: + infobox_title = pod['subpods'][0]['plaintext'] + + for subpod in pod['subpods']: + if subpod['plaintext'] != '' and pod_id not in image_pods: + # append unless it's not an actual answer + if subpod['plaintext'] != '(requires interactivity)': + result_chunks.append({'label': pod_title, 'value': subpod['plaintext']}) + + elif 'img' in subpod: + result_chunks.append({'label': pod_title, 'image': subpod['img']}) + + if not result_chunks: + return [] + + results.append({'infobox': infobox_title, + 'attributes': result_chunks, + 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer'].decode('utf8')}]}) + + results.append({'url': resp.request.headers['Referer'].decode('utf8'), + 'title': 'Wolfram|Alpha', + 'content': infobox_title}) + + return results diff --git a/searx/engines/www1x.py b/searx/engines/www1x.py index ddb79bfea..1269a5422 100644 --- a/searx/engines/www1x.py +++ b/searx/engines/www1x.py @@ -22,7 +22,7 @@ paging = False # search-url base_url = 'https://1x.com' -search_url = base_url+'/backend/search.php?{query}' +search_url = base_url + '/backend/search.php?{query}' # do search-request diff --git a/searx/engines/xpath.py b/searx/engines/xpath.py index 1a599dc0a..f51634be0 100644 --- a/searx/engines/xpath.py +++ b/searx/engines/xpath.py @@ -43,7 +43,7 @@ def extract_url(xpath_results, search_url): if url.startswith('//'): # add http or https to this kind of url //example.com/ parsed_search_url = urlparse(search_url) - url = parsed_search_url.scheme+url + url = parsed_search_url.scheme + url elif url.startswith('/'): # fix relative url to the search engine url = urljoin(search_url, url) @@ -69,7 +69,7 @@ def normalize_url(url): p = parsed_url.path mark = p.find('/**') if mark != -1: - return unquote(p[mark+3:]).decode('utf-8') + return unquote(p[mark + 3:]).decode('utf-8') return url diff --git a/searx/engines/yandex.py b/searx/engines/yandex.py index edc6ad5f2..be3ec36ce 100644 --- a/searx/engines/yandex.py +++ b/searx/engines/yandex.py @@ -9,6 +9,7 @@ @parse url, title, content """ +from cgi import escape from urllib import urlencode from lxml import html from searx.search import logger @@ -38,7 +39,7 @@ content_xpath = './/div[@class="serp-item__text"]//text()' def request(query, params): lang = params['language'].split('_')[0] host = base_url.format(tld=language_map.get(lang) or default_tld) - params['url'] = host + search_url.format(page=params['pageno']-1, + params['url'] = host + search_url.format(page=params['pageno'] - 1, query=urlencode({'text': query})) return params @@ -51,8 +52,8 @@ def response(resp): for result in dom.xpath(results_xpath): try: res = {'url': result.xpath(url_xpath)[0], - 'title': ''.join(result.xpath(title_xpath)), - 'content': ''.join(result.xpath(content_xpath))} + 'title': escape(''.join(result.xpath(title_xpath))), + 'content': escape(''.join(result.xpath(content_xpath)))} except: logger.exception('yandex parse crash') continue diff --git a/searx/languages.py b/searx/languages.py index df5fabf74..b67da9d22 100644 --- a/searx/languages.py +++ b/searx/languages.py @@ -58,6 +58,7 @@ language_codes = ( ("ko_KR", "Korean", "Korea"), ("lt_LT", "Lithuanian", "Lithuania"), ("lv_LV", "Latvian", "Latvia"), + ("oc_OC", "Occitan", "Occitan"), ("nb_NO", "Norwegian", "Norway"), ("nl_BE", "Dutch", "Belgium"), ("nl_NL", "Dutch", "Netherlands"), diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py index a4d7ad8a8..87cc01382 100644 --- a/searx/plugins/__init__.py +++ b/searx/plugins/__init__.py @@ -20,6 +20,7 @@ from searx import logger logger = logger.getChild('plugins') from searx.plugins import (https_rewrite, + open_results_on_new_tab, self_info, search_on_category_select, tracker_url_remover) @@ -72,6 +73,7 @@ class PluginStore(): plugins = PluginStore() plugins.register(https_rewrite) +plugins.register(open_results_on_new_tab) plugins.register(self_info) plugins.register(search_on_category_select) plugins.register(tracker_url_remover) diff --git a/searx/plugins/https_rewrite.py b/searx/plugins/https_rewrite.py index a24f15a28..0a58cc85d 100644 --- a/searx/plugins/https_rewrite.py +++ b/searx/plugins/https_rewrite.py @@ -103,10 +103,10 @@ def load_single_https_ruleset(rules_path): # into a valid python regex group rule_from = ruleset.attrib['from'].replace('$', '\\') if rule_from.endswith('\\'): - rule_from = rule_from[:-1]+'$' + rule_from = rule_from[:-1] + '$' rule_to = ruleset.attrib['to'].replace('$', '\\') if rule_to.endswith('\\'): - rule_to = rule_to[:-1]+'$' + rule_to = rule_to[:-1] + '$' # TODO, not working yet because of the hack above, # currently doing that in webapp.py diff --git a/searx/plugins/open_results_on_new_tab.py b/searx/plugins/open_results_on_new_tab.py new file mode 100644 index 000000000..5ebece142 --- /dev/null +++ b/searx/plugins/open_results_on_new_tab.py @@ -0,0 +1,24 @@ +''' +searx is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +searx is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with searx. If not, see < http://www.gnu.org/licenses/ >. + +(C) 2016 by Adam Tauber, <asciimoo@gmail.com> +''' +from flask.ext.babel import gettext +name = gettext('Open result links on new browser tabs') +description = gettext('Results are opened in the same window by default. ' + 'This plugin overwrites the default behaviour to open links on new tabs/windows. ' + '(JavaScript required)') +default_on = False + +js_dependencies = ('plugins/js/open_results_on_new_tab.js',) diff --git a/searx/plugins/search_on_category_select.py b/searx/plugins/search_on_category_select.py index a1667021d..53585faea 100644 --- a/searx/plugins/search_on_category_select.py +++ b/searx/plugins/search_on_category_select.py @@ -20,4 +20,4 @@ description = gettext('Perform search immediately if a category selected. ' 'Disable to select multiple categories. (JavaScript required)') default_on = True -js_dependencies = ('js/search_on_category_select.js',) +js_dependencies = ('plugins/js/search_on_category_select.js',) diff --git a/searx/poolrequests.py b/searx/poolrequests.py index 4761f6ae8..13c6a906e 100644 --- a/searx/poolrequests.py +++ b/searx/poolrequests.py @@ -92,7 +92,7 @@ def head(url, **kwargs): return request('head', url, **kwargs) -def post(url, data=None, **kwargs): +def post(url, data=None, **kwargs): return request('post', url, data=data, **kwargs) diff --git a/searx/results.py b/searx/results.py index bc656f2ac..7e087382c 100644 --- a/searx/results.py +++ b/searx/results.py @@ -138,6 +138,7 @@ class ResultContainer(object): # if the result has no scheme, use http as default if not result['parsed_url'].scheme: result['parsed_url'] = result['parsed_url']._replace(scheme="http") + result['url'] = result['parsed_url'].geturl() result['host'] = result['parsed_url'].netloc diff --git a/searx/search.py b/searx/search.py index 655b7808a..ce41b231b 100644 --- a/searx/search.py +++ b/searx/search.py @@ -34,16 +34,23 @@ number_of_searches = 0 def search_request_wrapper(fn, url, engine_name, **kwargs): + ret = None + engine = engines[engine_name] try: - return fn(url, **kwargs) + ret = fn(url, **kwargs) + with threading.RLock(): + engine.continuous_errors = 0 + engine.suspend_end_time = 0 except: # increase errors stats with threading.RLock(): - engines[engine_name].stats['errors'] += 1 + engine.stats['errors'] += 1 + engine.continuous_errors += 1 + engine.suspend_end_time = time() + min(60, engine.continuous_errors) # print engine name and specific error message logger.exception('engine crash: {0}'.format(engine_name)) - return + return ret def threaded_requests(requests): @@ -241,6 +248,10 @@ class Search(object): for engine in categories[categ] if (engine.name, categ) not in self.blocked_engines) + # remove suspended engines + self.engines = [e for e in self.engines + if engines[e['name']].suspend_end_time <= time()] + # do search-request def search(self, request): global number_of_searches diff --git a/searx/settings.yml b/searx/settings.yml index c7f659e5f..e8e442f23 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -1,5 +1,6 @@ general: debug : False # Debug mode, only for development + instance_name : "searx" # displayed name search: safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict @@ -110,6 +111,11 @@ engines: # Or you can use the html non-stable engine, activated by default engine : flickr_noapi + - name : frinkiac + engine : frinkiac + shortcut : frk + disabled : True + - name : gigablast engine : gigablast shortcut : gb @@ -300,6 +306,16 @@ engines: engine : vimeo shortcut : vm + - name : wolframalpha + shortcut : wa + # You can use the engine using the official stable API, but you need an API key + # See : http://products.wolframalpha.com/api/ + # engine : wolframalpha_api + # api_key: '' # required! + engine : wolframalpha_noapi + timeout: 6.0 + categories : science + #The blekko technology and team have joined IBM Watson! -> https://blekko.com/ # - name : blekko images # engine : blekko_images @@ -315,16 +331,20 @@ engines: locales: en : English - de : Deutsch - he : עברית - hu : Magyar - fr : Français - es : Español - it : Italiano - nl : Nederlands + bg : Български (Bulgarian) + de : Deutsch (German) + el_GR : Ελληνικά (Greek_Greece) + eo : Esperanto (Esperanto) + es : Español (Spanish) + fr : Français (French) + he : עברית (Hebrew) + hu : Magyar (Hungarian) + it : Italiano (Italian) ja : 日本語 (Japanese) - tr : Türkçe - pt : Português - ru : Russian - ro : Romanian + nl : Nederlands (Dutch) + pt : Português (Portuguese) + pt_BR : Português (Portuguese_Brazil) + ro : Română (Romanian) + ru : Русский (Russian) + tr : Türkçe (Turkish) zh : 中文 (Chinese) diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml index f14443cf5..fb193e43d 100644 --- a/searx/settings_robot.yml +++ b/searx/settings_robot.yml @@ -1,5 +1,6 @@ general: debug : False + instance_name : "searx_test" search: safe_search : 0 @@ -25,10 +26,12 @@ engines: - name : general_dummy engine : dummy categories : general + shortcut : gd - name : dummy_dummy engine : dummy categories : dummy + shortcut : dd locales: en : English diff --git a/searx/static/plugins/js/open_results_on_new_tab.js b/searx/static/plugins/js/open_results_on_new_tab.js new file mode 100644 index 000000000..99ef382a0 --- /dev/null +++ b/searx/static/plugins/js/open_results_on_new_tab.js @@ -0,0 +1,3 @@ +$(document).ready(function() { + $('.result_header > a').attr('target', '_blank'); +}); diff --git a/searx/static/js/search_on_category_select.js b/searx/static/plugins/js/search_on_category_select.js index 5ecc2cdb9..5ecc2cdb9 100644 --- a/searx/static/js/search_on_category_select.js +++ b/searx/static/plugins/js/search_on_category_select.js diff --git a/searx/static/themes/default/css/style.css b/searx/static/themes/default/css/style.css index 5be452e98..71422bc94 100644 --- a/searx/static/themes/default/css/style.css +++ b/searx/static/themes/default/css/style.css @@ -1 +1 @@ -.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#408080;font-style:italic}.highlight .err{border:1px solid #f00}.highlight .k{color:#008000;font-weight:bold}.highlight .o{color:#666}.highlight .cm{color:#408080;font-style:italic}.highlight .cp{color:#bc7a00}.highlight .c1{color:#408080;font-style:italic}.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:#f00}.highlight .gh{color:#000080;font-weight:bold}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:#000080;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#04d}.highlight .kc{color:#008000;font-weight:bold}.highlight .kd{color:#008000;font-weight:bold}.highlight .kn{color:#008000;font-weight:bold}.highlight .kp{color:#008000}.highlight .kr{color:#008000;font-weight:bold}.highlight .kt{color:#b00040}.highlight .m{color:#666}.highlight .s{color:#ba2121}.highlight .na{color:#7d9029}.highlight .nb{color:#008000}.highlight .nc{color:#00f;font-weight:bold}.highlight .no{color:#800}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:bold}.highlight .ne{color:#d2413a;font-weight:bold}.highlight .nf{color:#00f}.highlight .nl{color:#a0a000}.highlight .nn{color:#00f;font-weight:bold}.highlight .nt{color:#008000;font-weight:bold}.highlight .nv{color:#19177c}.highlight .ow{color:#a2f;font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#666}.highlight .mh{color:#666}.highlight .mi{color:#666}.highlight .mo{color:#666}.highlight .sb{color:#ba2121}.highlight .sc{color:#ba2121}.highlight .sd{color:#ba2121;font-style:italic}.highlight .s2{color:#ba2121}.highlight .se{color:#b62;font-weight:bold}.highlight .sh{color:#ba2121}.highlight .si{color:#b68;font-weight:bold}.highlight .sx{color:#008000}.highlight .sr{color:#b68}.highlight .s1{color:#ba2121}.highlight .ss{color:#19177c}.highlight .bp{color:#008000}.highlight .vc{color:#19177c}.highlight .vg{color:#19177c}.highlight .vi{color:#19177c}.highlight .il{color:#666}.highlight pre{overflow:auto}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.highlight .lineno::selection{background:transparent}.highlight .lineno::-moz-selection{background:transparent}html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444;padding:0;margin:0}body,#container{padding:0;margin:0}#container{width:100%;position:absolute;top:0}.search{padding:0;margin:0}.search .checkbox_container label{font-size:.9em;border-bottom:2px solid #e8e7e6}.search .checkbox_container label:hover{border-bottom:2px solid #3498db}.search .checkbox_container input[type="checkbox"]:checked+label{border-bottom:2px solid #2980b9}#search_wrapper{position:relative;width:50em;padding:10px}.center #search_wrapper{margin-left:auto;margin-right:auto}.q{background:none repeat scroll 0 0 #fff;border:1px solid #3498db;color:#222;font-size:16px;height:28px;margin:0;outline:medium none;padding:2px;padding-left:8px;padding-right:0 !important;width:100%;z-index:2}#search_submit{position:absolute;top:13px;right:1px;padding:0;border:0;background:url('../img/search-icon.png') no-repeat;background-size:24px 24px;opacity:.8;width:24px;height:30px;font-size:0}@media screen and (max-width:50em){#search_wrapper{width:90%;clear:both;overflow:hidden}}ul.autocompleter-choices{position:absolute;margin:0;padding:0;list-style:none;border:1px solid #3498db;border-left-color:#3498db;border-right-color:#3498db;border-bottom-color:#3498db;text-align:left;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;z-index:50;background-color:#fff;color:#444}ul.autocompleter-choices li{position:relative;margin:-2px 0 0 0;padding:.2em 1.5em .2em 1em;display:block;float:none !important;cursor:pointer;font-weight:normal;white-space:nowrap;font-size:1em;line-height:1.5em}ul.autocompleter-choices li.autocompleter-selected{background-color:#444;color:#fff}ul.autocompleter-choices li.autocompleter-selected span.autocompleter-queried{color:#9fcfff}ul.autocompleter-choices span.autocompleter-queried{display:inline;float:none;font-weight:bold;margin:0;padding:0}.row{max-width:800px;margin:20px auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}.row p{padding:0 10px;max-width:700px}.row h3,.row ul{margin:4px 8px}.hmarg{margin:0 20px;border:1px solid #3498db;padding:4px 10px}a:link.hmarg{color:#3498db}a:visited.hmarg{color:#3498db}a:active.hmarg{color:#3498db}a:hover.hmarg{color:#3498db}.top_margin{margin-top:60px}.center{text-align:center}h1{font-size:5em}div.title{background:url('../img/searx.png') no-repeat;width:100%;min-height:80px;background-position:center}div.title h1{visibility:hidden}input[type="submit"]{padding:2px 6px;margin:2px 4px;display:inline-block;background:#3498db;color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}input[type="checkbox"]{visibility:hidden}fieldset{margin:8px;border:1px solid #3498db}#categories{margin:0 10px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container{display:inline-block;position:relative;margin:0 3px;padding:0}.checkbox_container input{display:none}.checkbox_container label,.engine_checkbox label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container input[type="checkbox"]:checked+label{background:#3498db;color:#fff}.engine_checkbox{padding:4px}label.allow{background:#e74c3c;padding:4px 8px;color:#fff;display:none}label.deny{background:#2ecc71;padding:4px 8px;color:#444;display:inline}.engine_checkbox input[type="checkbox"]:checked+label:nth-child(2)+label{display:none}.engine_checkbox input[type="checkbox"]:checked+label.allow{display:inline}a{text-decoration:none;color:#1a11be}a:visited{color:#8e44ad}.result{margin:19px 0 18px 0;padding:0;clear:both}.result_title{margin-bottom:0}.result_title a{color:#2980b9;font-weight:normal;font-size:1.1em}.result_title a:hover{text-decoration:underline}.result_title a:visited{color:#8e44ad}.cache_link{font-size:10px !important}.result h3{font-size:1em;word-wrap:break-word;margin:5px 0 1px 0;padding:0}.result .content{font-size:.8em;margin:0;padding:0;max-width:54em;word-wrap:break-word;line-height:1.24}.result .content img{float:left;margin-right:5px;max-width:200px;max-height:100px}.result .content br.last{clear:both}.result .url{font-size:.8em;margin:0 0 3px 0;padding:0;max-width:54em;word-wrap:break-word;color:#c0392b}.result .published_date{font-size:.8em;color:#888;Margin:5px 20px}.result .thumbnail{width:400px}.engines{color:#888}.small_font{font-size:.8em}.small p{margin:2px 0}.right{float:right}.invisible{display:none}.left{float:left}.highlight{color:#094089}.content .highlight{color:#000}.image_result{display:inline-block;margin:10px 10px;position:relative;max-height:160px}.image_result img{border:0;max-height:160px}.image_result p{margin:0;padding:0}.image_result p span a{display:none;color:#fff}.image_result p:hover span a{display:block;position:absolute;bottom:0;right:0;padding:4px;background-color:rgba(0,0,0,0.6);font-size:.7em}.torrent_result{border-left:10px solid lightgray;padding-left:3px}.torrent_result p{margin:3px;font-size:.8em}.torrent_result a{color:#2980b9}.torrent_result a:hover{text-decoration:underline}.torrent_result a:visited{color:#8e44ad}.definition_result{border-left:10px solid gray;padding-left:3px}.percentage{position:relative;width:300px}.percentage div{background:#444}table{width:100%}td{padding:0 4px}tr:hover{background:#ddd}#results{margin:auto;padding:0;width:50em;margin-bottom:20px}#sidebar{position:fixed;bottom:10px;left:10px;margin:0 2px 5px 5px;padding:0 2px 2px 2px;width:14em}#sidebar input{padding:0;margin:3px;font-size:.8em;display:inline-block;background:transparent;color:#444;cursor:pointer}#sidebar input[type="submit"]{text-decoration:underline}#suggestions form{display:inline}#suggestions,#answers{margin-top:20px;max-width:45em}#suggestions input,#answers input,#infoboxes input{padding:0;margin:3px;font-size:.8em;display:inline-block;background:transparent;color:#444;cursor:pointer}#suggestions input[type="submit"],#answers input[type="submit"],#infoboxes input[type="submit"]{text-decoration:underline}#suggestions-title{color:#888}#answers{border:2px solid #2980b9;padding:20px}#answers form,#infoboxes form{min-width:210px}#infoboxes{position:absolute;top:100px;right:20px;margin:0 2px 5px 5px;padding:0 2px 2px;max-width:21em}#infoboxes .infobox{margin:10px 0 10px;border:1px solid #ddd;padding:5px;font-size:.8em}#infoboxes .infobox img{max-width:20em;max-heigt:12em;display:block;margin:5px;padding:5px}#infoboxes .infobox h2{margin:0}#infoboxes .infobox table{width:auto}#infoboxes .infobox table td{vertical-align:top}#infoboxes .infobox input{font-size:1em}#infoboxes .infobox br{clear:both}#search_url{margin-top:8px}#search_url input{border:1px solid #888;padding:4px;color:#444;width:14em;display:block;margin:4px;font-size:.8em}#preferences{top:10px;padding:0;border:0;background:url('../img/preference-icon.png') no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}#pagination{clear:both}#pagination br{clear:both}#apis{margin-top:8px;clear:both}#categories_container{position:relative}@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%}.github{display:none}.checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0}.preferences_container{display:none;postion:fixed !important;top:100px;right:0}}@media screen and (max-width:75em){div.title h1{font-size:1em}html.touch #categories{width:95%;height:30px;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}html.touch #categories #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #categories #categories_container .checkbox_container{display:inline-block;width:auto}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto}#suggestions,#answers{margin-top:5px}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto}#sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto}#sidebar input{border:0}#apis{display:none}#search_url{display:none}.result{border-top:1px solid #e8e7e6;margin:8px 0 8px 0}.result .thumbnail{max-width:98%}.image_result{max-width:98%}.image_result img{max-width:98%}}.favicon{float:left;margin-right:4px;margin-top:2px}.preferences_back{background:none repeat scroll 0 0 #3498db;border:0 none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#fff}.hidden{opacity:0;overflow:hidden;font-size:.8em;position:absolute;bottom:-20px;width:100%;text-position:center;background:white;transition:opacity 1s ease}#categories_container:hover .hidden{transition:opacity 1s ease;opacity:.8}
\ No newline at end of file +.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#408080;font-style:italic}.highlight .err{border:1px solid #f00}.highlight .k{color:#008000;font-weight:bold}.highlight .o{color:#666}.highlight .cm{color:#408080;font-style:italic}.highlight .cp{color:#bc7a00}.highlight .c1{color:#408080;font-style:italic}.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:#f00}.highlight .gh{color:#000080;font-weight:bold}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:#000080;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#04d}.highlight .kc{color:#008000;font-weight:bold}.highlight .kd{color:#008000;font-weight:bold}.highlight .kn{color:#008000;font-weight:bold}.highlight .kp{color:#008000}.highlight .kr{color:#008000;font-weight:bold}.highlight .kt{color:#b00040}.highlight .m{color:#666}.highlight .s{color:#ba2121}.highlight .na{color:#7d9029}.highlight .nb{color:#008000}.highlight .nc{color:#00f;font-weight:bold}.highlight .no{color:#800}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:bold}.highlight .ne{color:#d2413a;font-weight:bold}.highlight .nf{color:#00f}.highlight .nl{color:#a0a000}.highlight .nn{color:#00f;font-weight:bold}.highlight .nt{color:#008000;font-weight:bold}.highlight .nv{color:#19177c}.highlight .ow{color:#a2f;font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#666}.highlight .mh{color:#666}.highlight .mi{color:#666}.highlight .mo{color:#666}.highlight .sb{color:#ba2121}.highlight .sc{color:#ba2121}.highlight .sd{color:#ba2121;font-style:italic}.highlight .s2{color:#ba2121}.highlight .se{color:#b62;font-weight:bold}.highlight .sh{color:#ba2121}.highlight .si{color:#b68;font-weight:bold}.highlight .sx{color:#008000}.highlight .sr{color:#b68}.highlight .s1{color:#ba2121}.highlight .ss{color:#19177c}.highlight .bp{color:#008000}.highlight .vc{color:#19177c}.highlight .vg{color:#19177c}.highlight .vi{color:#19177c}.highlight .il{color:#666}.highlight pre{overflow:auto}.highlight .lineno{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.highlight .lineno::selection{background:transparent}.highlight .lineno::-moz-selection{background:transparent}html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444;padding:0;margin:0}body,#container{padding:0;margin:0}#container{width:100%;position:absolute;top:0}.search{padding:0;margin:0}.search .checkbox_container label{font-size:.9em;border-bottom:2px solid #e8e7e6}.search .checkbox_container label:hover{border-bottom:2px solid #3498db}.search .checkbox_container input[type="checkbox"]:checked+label{border-bottom:2px solid #2980b9}#search_wrapper{position:relative;width:50em;padding:10px}.center #search_wrapper{margin-left:auto;margin-right:auto}.q{background:none repeat scroll 0 0 #fff;border:1px solid #3498db;color:#222;font-size:16px;height:28px;margin:0;outline:medium none;padding:2px;padding-left:8px;padding-right:0 !important;width:100%;z-index:2}#search_submit{position:absolute;top:13px;right:1px;padding:0;border:0;background:url('../img/search-icon.png') no-repeat;background-size:24px 24px;opacity:.8;width:24px;height:30px;font-size:0}@media screen and (max-width:50em){#search_wrapper{width:90%;clear:both;overflow:hidden}}ul.autocompleter-choices{position:absolute;margin:0;padding:0;list-style:none;border:1px solid #3498db;border-left-color:#3498db;border-right-color:#3498db;border-bottom-color:#3498db;text-align:left;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;z-index:50;background-color:#fff;color:#444}ul.autocompleter-choices li{position:relative;margin:-2px 0 0 0;padding:.2em 1.5em .2em 1em;display:block;float:none !important;cursor:pointer;font-weight:normal;white-space:nowrap;font-size:1em;line-height:1.5em}ul.autocompleter-choices li.autocompleter-selected{background-color:#444;color:#fff}ul.autocompleter-choices li.autocompleter-selected span.autocompleter-queried{color:#9fcfff}ul.autocompleter-choices span.autocompleter-queried{display:inline;float:none;font-weight:bold;margin:0;padding:0}.row{max-width:800px;margin:20px auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}.row p{padding:0 10px;max-width:700px}.row h3,.row ul{margin:4px 8px}.hmarg{margin:0 20px;border:1px solid #3498db;padding:4px 10px}a:link.hmarg{color:#3498db}a:visited.hmarg{color:#3498db}a:active.hmarg{color:#3498db}a:hover.hmarg{color:#3498db}.top_margin{margin-top:60px}.center{text-align:center}h1{font-size:5em}div.title{background:url('../img/searx.png') no-repeat;width:100%;min-height:80px;background-position:center}div.title h1{visibility:hidden}input[type="submit"]{padding:2px 6px;margin:2px 4px;display:inline-block;background:#3498db;color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}input[type="checkbox"]{visibility:hidden}fieldset{margin:8px;border:1px solid #3498db}#categories{margin:0 10px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container{display:inline-block;position:relative;margin:0 3px;padding:0}.checkbox_container input{display:none}.checkbox_container label,.engine_checkbox label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container input[type="checkbox"]:checked+label{background:#3498db;color:#fff}.engine_checkbox{padding:4px}label.allow{background:#e74c3c;padding:4px 8px;color:#fff;display:none}label.deny{background:#2ecc71;padding:4px 8px;color:#444;display:inline}.engine_checkbox input[type="checkbox"]:checked+label:nth-child(2)+label{display:none}.engine_checkbox input[type="checkbox"]:checked+label.allow{display:inline}a{text-decoration:none;color:#1a11be}a:visited{color:#8e44ad}.result{margin:19px 0 18px 0;padding:0;clear:both}.result_title{margin-bottom:0}.result_title a{color:#2980b9;font-weight:normal;font-size:1.1em}.result_title a:hover{text-decoration:underline}.result_title a:visited{color:#8e44ad}.cache_link{font-size:10px !important}.result h3{font-size:1em;word-wrap:break-word;margin:5px 0 1px 0;padding:0}.result .content{font-size:.8em;margin:0;padding:0;max-width:54em;word-wrap:break-word;line-height:1.24}.result .content img{float:left;margin-right:5px;max-width:200px;max-height:100px}.result .content br.last{clear:both}.result .url{font-size:.8em;margin:0 0 3px 0;padding:0;max-width:54em;word-wrap:break-word;color:#c0392b}.result .published_date{font-size:.8em;color:#888;Margin:5px 20px}.result .thumbnail{width:400px}.engines{color:#888}.small_font{font-size:.8em}.small p{margin:2px 0}.right{float:right}.invisible{display:none}.left{float:left}.highlight{color:#094089}.content .highlight{color:#000}.image_result{display:inline-block;margin:10px 10px;position:relative;max-height:160px}.image_result img{border:0;max-height:160px}.image_result p{margin:0;padding:0}.image_result p span a{display:none;color:#fff}.image_result p:hover span a{display:block;position:absolute;bottom:0;right:0;padding:4px;background-color:rgba(0,0,0,0.6);font-size:.7em}.torrent_result{border-left:10px solid lightgray;padding-left:3px}.torrent_result p{margin:3px;font-size:.8em}.torrent_result a{color:#2980b9}.torrent_result a:hover{text-decoration:underline}.torrent_result a:visited{color:#8e44ad}.definition_result{border-left:10px solid gray;padding-left:3px}.percentage{position:relative;width:300px}.percentage div{background:#444}table{width:100%}td{padding:0 4px}tr:hover{background:#ddd}#results{margin:auto;padding:0;width:50em;margin-bottom:20px}#sidebar{position:fixed;bottom:10px;left:10px;margin:0 2px 5px 5px;padding:0 2px 2px 2px;width:14em}#sidebar input{padding:0;margin:3px;font-size:.8em;display:inline-block;background:transparent;color:#444;cursor:pointer}#sidebar input[type="submit"]{text-decoration:underline}#suggestions form{display:inline}#suggestions,#answers{margin-top:20px;max-width:45em}#suggestions input,#answers input,#infoboxes input{padding:0;margin:3px;font-size:.8em;display:inline-block;background:transparent;color:#444;cursor:pointer}#suggestions input[type="submit"],#answers input[type="submit"],#infoboxes input[type="submit"]{text-decoration:underline}#suggestions-title{color:#888}#answers{border:2px solid #2980b9;padding:20px}#answers form,#infoboxes form{min-width:210px}#infoboxes{position:absolute;top:100px;right:20px;margin:0 2px 5px 5px;padding:0 2px 2px;max-width:21em;word-wrap:break-word;}#infoboxes .infobox{margin:10px 0 10px;border:1px solid #ddd;padding:5px;font-size:.8em}#infoboxes .infobox img{max-width:90%;max-heigt:12em;display:block;margin:5px;padding:5px}#infoboxes .infobox h2{margin:0}#infoboxes .infobox table{table-layout:fixed;}#infoboxes .infobox table td{vertical-align:top}#infoboxes .infobox input{font-size:1em}#infoboxes .infobox br{clear:both}#search_url{margin-top:8px}#search_url input{border:1px solid #888;padding:4px;color:#444;width:14em;display:block;margin:4px;font-size:.8em}#preferences{top:10px;padding:0;border:0;background:url('../img/preference-icon.png') no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}#pagination{clear:both}#pagination br{clear:both}#apis{margin-top:8px;clear:both}#categories_container{position:relative}@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%}.github{display:none}.checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0}.preferences_container{display:none;postion:fixed !important;top:100px;right:0}}@media screen and (max-width:75em){div.title h1{font-size:1em}html.touch #categories{width:95%;height:30px;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}html.touch #categories #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #categories #categories_container .checkbox_container{display:inline-block;width:auto}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto}#suggestions,#answers{margin-top:5px}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto}#sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto}#sidebar input{border:0}#apis{display:none}#search_url{display:none}.result{border-top:1px solid #e8e7e6;margin:8px 0 8px 0}.result .thumbnail{max-width:98%}.image_result{max-width:98%}.image_result img{max-width:98%}}.favicon{float:left;margin-right:4px;margin-top:2px}.preferences_back{background:none repeat scroll 0 0 #3498db;border:0 none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#fff}.hidden{opacity:0;overflow:hidden;font-size:.8em;position:absolute;bottom:-20px;width:100%;text-position:center;background:white;transition:opacity 1s ease}#categories_container:hover .hidden{transition:opacity 1s ease;opacity:.8} diff --git a/searx/static/themes/default/less/style.less b/searx/static/themes/default/less/style.less index 575bc222c..4374f7d68 100644 --- a/searx/static/themes/default/less/style.less +++ b/searx/static/themes/default/less/style.less @@ -476,6 +476,7 @@ color: @color-font-light; margin: 0px 2px 5px 5px; padding: 0px 2px 2px; max-width: 21em; + word-wrap: break-word; .infobox { margin: 10px 0 10px; @@ -485,7 +486,7 @@ color: @color-font-light; /* box-shadow: 0px 0px 5px #CCC; */ img { - max-width: 20em; + max-width: 90%; max-heigt: 12em; display: block; margin: 5px; @@ -497,7 +498,7 @@ color: @color-font-light; } table { - width: auto; + table-layout: fixed; td { vertical-align: top; diff --git a/searx/static/themes/oscar/css/oscar.min.css b/searx/static/themes/oscar/css/oscar.min.css index f7aba2bbc..60b5c3715 100644 --- a/searx/static/themes/oscar/css/oscar.min.css +++ b/searx/static/themes/oscar/css/oscar.min.css @@ -17,7 +17,7 @@ input[type=checkbox]:not(:checked)+.label_hide_if_not_checked,input[type=checkbo .result_download{margin-right:5px} #pagination{margin-top:30px;padding-bottom:50px} .label-default{color:#aaa;background:#fff} -.infobox .infobox_part{margin-bottom:20px;word-wrap:break-word} +.infobox .infobox_part{margin-bottom:20px;word-wrap:break-word;table-layout:fixed} .infobox .infobox_part:last-child{margin-bottom:0} .search_categories{margin:10px 0;text-transform:capitalize} .cursor-text{cursor:text !important} diff --git a/searx/static/themes/oscar/less/oscar/infobox.less b/searx/static/themes/oscar/less/oscar/infobox.less index d8f6f9264..41375f277 100644 --- a/searx/static/themes/oscar/less/oscar/infobox.less +++ b/searx/static/themes/oscar/less/oscar/infobox.less @@ -1,7 +1,8 @@ .infobox { .infobox_part { margin-bottom: 20px; - word-wrap: break-word; + word-wrap: break-word; + table-layout: fixed; } .infobox_part:last-child { diff --git a/searx/templates/courgette/opensearch.xml b/searx/templates/courgette/opensearch.xml index b85c3a7f5..15d3eb792 100644 --- a/searx/templates/courgette/opensearch.xml +++ b/searx/templates/courgette/opensearch.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> - <ShortName>searx</ShortName> + <ShortName>{{ instance_name }}</ShortName> <Description>a privacy-respecting, hackable metasearch engine</Description> <InputEncoding>UTF-8</InputEncoding> - <Image>{{ host }}{{ url_for('static', filename='img/favicon.png') | replace("/", "", 1) }}</Image> + <Image>{{ urljoin(host, url_for('static', filename='img/favicon.png')) }}</Image> <LongName>searx metasearch</LongName> {% if opensearch_method == 'get' %} <Url type="text/html" method="get" template="{{ host }}search?q={searchTerms}"/> diff --git a/searx/templates/default/infobox.html b/searx/templates/default/infobox.html index 1733f7753..178a27e6d 100644 --- a/searx/templates/default/infobox.html +++ b/searx/templates/default/infobox.html @@ -7,7 +7,14 @@ <div class="attributes"> <table> {% for attribute in infobox.attributes %} - <tr><td>{{ attribute.label }}</td><td>{{ attribute.value }}</td></tr> + <tr> + <td>{{ attribute.label }}</td> + {% if attribute.image %} + <td><img src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td> + {% else %} + <td>{{ attribute.value }}</td> + {% endif %} + </tr> {% endfor %} </table> </div> diff --git a/searx/templates/default/opensearch.xml b/searx/templates/default/opensearch.xml index b85c3a7f5..15d3eb792 100644 --- a/searx/templates/default/opensearch.xml +++ b/searx/templates/default/opensearch.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> - <ShortName>searx</ShortName> + <ShortName>{{ instance_name }}</ShortName> <Description>a privacy-respecting, hackable metasearch engine</Description> <InputEncoding>UTF-8</InputEncoding> - <Image>{{ host }}{{ url_for('static', filename='img/favicon.png') | replace("/", "", 1) }}</Image> + <Image>{{ urljoin(host, url_for('static', filename='img/favicon.png')) }}</Image> <LongName>searx metasearch</LongName> {% if opensearch_method == 'get' %} <Url type="text/html" method="get" template="{{ host }}search?q={searchTerms}"/> diff --git a/searx/templates/oscar/base.html b/searx/templates/oscar/base.html index 9c15f5a71..4d48537e1 100644 --- a/searx/templates/oscar/base.html +++ b/searx/templates/oscar/base.html @@ -9,7 +9,7 @@ <meta name="referrer" content="no-referrer"> <meta name="viewport" content="width=device-width, initial-scale=1 , maximum-scale=1.0, user-scalable=1" /> {% block meta %}{% endblock %} - <title>{% block title %}{% endblock %}searx</title> + <title>{% block title %}{% endblock %}{{ instance_name }}</title> <link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap.min.css') }}" type="text/css" /> <link rel="stylesheet" href="{{ url_for('static', filename='css/oscar.min.css') }}" type="text/css" /> @@ -31,7 +31,7 @@ {% block head %} {% endblock %} - <link title="searx" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> + <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> <script type="text/javascript"> searx = {}; diff --git a/searx/templates/oscar/infobox.html b/searx/templates/oscar/infobox.html index 2abdbf0ec..d87d98453 100644 --- a/searx/templates/oscar/infobox.html +++ b/searx/templates/oscar/infobox.html @@ -1,6 +1,6 @@ <div class="panel panel-default infobox"> <div class="panel-heading"> - <h4 class="panel-title">{{ infobox.infobox }}</h4> + <h4 class="panel-title infobox_part">{{ infobox.infobox }}</h4> </div> <div class="panel-body"> {% if infobox.img_src %}<img class="img-responsive center-block infobox_part" src="{{ image_proxify(infobox.img_src) }}" alt="{{ infobox.infobox }}" />{% endif %} @@ -11,7 +11,11 @@ {% for attribute in infobox.attributes %} <tr> <td>{{ attribute.label }}</td> + {% if attribute.image %} + <td><img class="img-responsive" src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td> + {% else %} <td>{{ attribute.value }}</td> + {% endif %} </tr> {% endfor %} </table> diff --git a/searx/templates/oscar/navbar.html b/searx/templates/oscar/navbar.html index 0c92b09dd..c59bcda3d 100644 --- a/searx/templates/oscar/navbar.html +++ b/searx/templates/oscar/navbar.html @@ -16,7 +16,7 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - <a class="navbar-brand" href="{{ url_for('index') }}">searx</a> + <a class="navbar-brand" href="{{ url_for('index') }}">{{ instance_name }}</a> </div> {% else %} <div class="navbar-header"> @@ -26,7 +26,7 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - <a class="navbar-brand" href="{{ url_for('index') }}">searx</a> + <a class="navbar-brand" href="{{ url_for('index') }}">{{ instance_name }}</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav navbar-right"> <!-- results.html --> diff --git a/searx/templates/oscar/opensearch.xml b/searx/templates/oscar/opensearch.xml index b85c3a7f5..15d3eb792 100644 --- a/searx/templates/oscar/opensearch.xml +++ b/searx/templates/oscar/opensearch.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> - <ShortName>searx</ShortName> + <ShortName>{{ instance_name }}</ShortName> <Description>a privacy-respecting, hackable metasearch engine</Description> <InputEncoding>UTF-8</InputEncoding> - <Image>{{ host }}{{ url_for('static', filename='img/favicon.png') | replace("/", "", 1) }}</Image> + <Image>{{ urljoin(host, url_for('static', filename='img/favicon.png')) }}</Image> <LongName>searx metasearch</LongName> {% if opensearch_method == 'get' %} <Url type="text/html" method="get" template="{{ host }}search?q={searchTerms}"/> diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html index ea36a14b9..c677a0c66 100644 --- a/searx/templates/oscar/preferences.html +++ b/searx/templates/oscar/preferences.html @@ -191,10 +191,10 @@ {% for plugin in plugins %} <div class="panel panel-default"> <div class="panel-heading"> - <h3 class="panel-title">{{ plugin.name }}</h3> + <h3 class="panel-title">{{ _(plugin.name) }}</h3> </div> <div class="panel-body"> - <div class="col-xs-6 col-sm-4 col-md-6">{{ plugin.description }}</div> + <div class="col-xs-6 col-sm-4 col-md-6">{{ _(plugin.description) }}</div> <div class="col-xs-6 col-sm-4 col-md-6"> {{ checkbox_toggle('plugin_' + plugin.id, plugin.id not in allowed_plugins) }} </div> diff --git a/searx/testing.py b/searx/testing.py index e22ecf8fe..312e9f295 100644 --- a/searx/testing.py +++ b/searx/testing.py @@ -3,6 +3,7 @@ from plone.testing import Layer from unittest2 import TestCase +from os.path import dirname, join, abspath import os @@ -42,11 +43,11 @@ class SearxRobotLayer(Layer): os.path.abspath(os.path.dirname(os.path.realpath(__file__))), 'webapp.py' ) - exe = os.path.abspath(os.path.dirname(__file__) + '/../bin/py') + exe = 'python' # set robot settings path - os.environ['SEARX_SETTINGS_PATH'] = os.path.abspath( - os.path.dirname(__file__) + '/settings_robot.yml') + os.environ['SEARX_SETTINGS_PATH'] = abspath( + dirname(__file__) + '/settings_robot.yml') # run the server self.server = subprocess.Popen( @@ -56,7 +57,7 @@ class SearxRobotLayer(Layer): ) def tearDown(self): - os.kill(self.server.pid, 15) + os.kill(self.server.pid, 9) # remove previously set environment variable del os.environ['SEARX_SETTINGS_PATH'] @@ -68,3 +69,20 @@ class SearxTestCase(TestCase): """Base test case for non-robot tests.""" layer = SearxTestLayer + + +if __name__ == '__main__': + from tests.test_robot import test_suite + import sys + from zope.testrunner.runner import Runner + + base_dir = abspath(join(dirname(__file__), '../tests')) + if sys.argv[1] == 'robot': + r = Runner(['--color', + '--auto-progress', + '--stop-on-error', + '--path', + base_dir], + found_suites=[test_suite()]) + r.run() + sys.exit(int(r.failed)) diff --git a/searx/tests/engines/test_gigablast.py b/searx/tests/engines/test_gigablast.py deleted file mode 100644 index 38264913f..000000000 --- a/searx/tests/engines/test_gigablast.py +++ /dev/null @@ -1,57 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import gigablast -from searx.testing import SearxTestCase - - -class TestGigablastEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = gigablast.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('gigablast.com' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, gigablast.response, None) - self.assertRaises(AttributeError, gigablast.response, []) - self.assertRaises(AttributeError, gigablast.response, '') - self.assertRaises(AttributeError, gigablast.response, '[]') - - response = mock.Mock(content='<response></response>') - self.assertEqual(gigablast.response(response), []) - - response = mock.Mock(content='<response></response>') - self.assertEqual(gigablast.response(response), []) - - xml = """<?xml version="1.0" encoding="UTF-8" ?> - <response> - <hits>5941888</hits> - <moreResultsFollow>1</moreResultsFollow> - <result> - <title><![CDATA[This should be the title]]></title> - <sum><![CDATA[This should be the content.]]></sum> - <url><![CDATA[http://this.should.be.the.link/]]></url> - <size>90.5</size> - <docId>145414002633</docId> - <siteId>2660021087</siteId> - <domainId>2660021087</domainId> - <spidered>1320519373</spidered> - <indexed>1320519373</indexed> - <pubdate>4294967295</pubdate> - <isModDate>0</isModDate> - <language><![CDATA[English]]></language> - <charset><![CDATA[UTF-8]]></charset> - </result> - </response> - """ - response = mock.Mock(content=xml) - results = gigablast.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.') diff --git a/searx/tests/test_engines.py b/searx/tests/test_engines.py deleted file mode 100644 index 793b77460..000000000 --- a/searx/tests/test_engines.py +++ /dev/null @@ -1,45 +0,0 @@ -from searx.tests.engines.test_bing import * # noqa -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_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_qwant 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_spotify 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_swisscows 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_api import * # noqa -from searx.tests.engines.test_youtube_noapi import * # noqa -from searx.tests.engines.test_yahoo_news import * # noqa diff --git a/searx/translations/bg/LC_MESSAGES/messages.mo b/searx/translations/bg/LC_MESSAGES/messages.mo Binary files differnew file mode 100644 index 000000000..887d052bd --- /dev/null +++ b/searx/translations/bg/LC_MESSAGES/messages.mo diff --git a/searx/translations/bg/LC_MESSAGES/messages.po b/searx/translations/bg/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b5f443001 --- /dev/null +++ b/searx/translations/bg/LC_MESSAGES/messages.po @@ -0,0 +1,686 @@ +# Translations template for PROJECT. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# poke amom <van_ds_ff@mail.bg>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" +"Language-Team: Bulgarian (http://www.transifex.com/asciimoo/searx/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.2.0\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: searx/webapp.py:114 +msgid "files" +msgstr "файлове" + +#: searx/webapp.py:115 +msgid "general" +msgstr "общ" + +#: searx/webapp.py:116 +msgid "music" +msgstr "музика" + +#: searx/webapp.py:117 +msgid "social media" +msgstr "социална мрежа" + +#: searx/webapp.py:118 +msgid "images" +msgstr "изображения" + +#: searx/webapp.py:119 +msgid "videos" +msgstr "видео" + +#: searx/webapp.py:120 +msgid "it" +msgstr "ай-ти" + +#: searx/webapp.py:121 +msgid "news" +msgstr "новини" + +#: searx/webapp.py:122 +msgid "map" +msgstr "карта" + +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 +msgid "{minutes} minute(s) ago" +msgstr "преди {minutes} минута(минути)" + +#: searx/webapp.py:417 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "преди {hours} час(ове), {minutes} минута(минути)" + +#: searx/engines/__init__.py:185 +msgid "Page loads (sec)" +msgstr "Страницата зарежда (сек)" + +#: searx/engines/__init__.py:189 +msgid "Number of results" +msgstr "Брой резултати" + +#: searx/engines/__init__.py:193 +msgid "Scores" +msgstr "" + +#: searx/engines/__init__.py:197 +msgid "Scores per result" +msgstr "" + +#: searx/engines/__init__.py:201 +msgid "Errors" +msgstr "Грешки" + +#: searx/plugins/https_rewrite.py:29 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "Поправи HTTP връзки на HTTPS, ако е възможно" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "Търси при избор на категория" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "Търси веднага при избрана категория. Изключи за избор на няколко категории. (Необходим е JavaScript)" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "" + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/default/index.html:8 searx/templates/default/index.html:12 +#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "предпочитания" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3 +#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 +#: searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "относно" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/default/preferences.html:5 +#: searx/templates/oscar/preferences.html:12 +#: searx/templates/pix-art/preferences.html:5 +msgid "Preferences" +msgstr "Предпочитания" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/default/preferences.html:9 +#: searx/templates/oscar/preferences.html:36 +#: searx/templates/oscar/preferences.html:38 +msgid "Default categories" +msgstr "Първоначални категории" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/default/preferences.html:14 +#: searx/templates/oscar/preferences.html:44 +#: searx/templates/pix-art/preferences.html:9 +msgid "Search language" +msgstr "Език на търсене" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/default/preferences.html:17 +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/pix-art/preferences.html:12 +msgid "Automatic" +msgstr "Автоматично" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/default/preferences.html:25 +#: searx/templates/oscar/preferences.html:55 +#: searx/templates/pix-art/preferences.html:20 +msgid "Interface language" +msgstr "Език" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/default/preferences.html:35 +#: searx/templates/oscar/preferences.html:65 +msgid "Autocomplete" +msgstr "Автоматично допълване" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/default/preferences.html:46 +#: searx/templates/oscar/preferences.html:76 +msgid "Image proxy" +msgstr "" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/default/preferences.html:49 +#: searx/templates/oscar/preferences.html:80 +msgid "Enabled" +msgstr "Включено" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/default/preferences.html:50 +#: searx/templates/oscar/preferences.html:81 +msgid "Disabled" +msgstr "Изключено" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/default/preferences.html:55 +#: searx/templates/oscar/preferences.html:85 +#: searx/templates/pix-art/preferences.html:30 +msgid "Method" +msgstr "Метод" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/default/preferences.html:64 +#: searx/templates/oscar/preferences.html:94 +#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/preferences.html:150 +msgid "SafeSearch" +msgstr "Безопасно търсене" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/default/preferences.html:67 +#: searx/templates/oscar/preferences.html:98 +msgid "Strict" +msgstr "Стриктно" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/default/preferences.html:68 +#: searx/templates/oscar/preferences.html:99 +msgid "Moderate" +msgstr "Умерено" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/default/preferences.html:69 +#: searx/templates/oscar/preferences.html:100 +msgid "None" +msgstr "Нищо" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/default/preferences.html:74 +#: searx/templates/oscar/preferences.html:104 +#: searx/templates/pix-art/preferences.html:39 +msgid "Themes" +msgstr "Облик" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Цвят" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Синьо (първоначален)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Виолетов" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Зелено" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "зелено-синьо" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Оранжево" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Червено" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/default/preferences.html:84 +#: searx/templates/pix-art/preferences.html:49 +msgid "Currently used search engines" +msgstr "Използвани търсачки в момента " + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/default/preferences.html:88 +#: searx/templates/oscar/preferences.html:142 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/pix-art/preferences.html:53 +msgid "Engine name" +msgstr "Име на търсачка" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/default/preferences.html:89 +msgid "Category" +msgstr "Категория" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:101 +#: searx/templates/oscar/macros.html:71 +#: searx/templates/oscar/preferences.html:141 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +msgid "Allow" +msgstr "Позволи" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:102 +#: searx/templates/oscar/macros.html:70 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "Забрани" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/default/preferences.html:110 +#: searx/templates/oscar/preferences.html:235 +#: searx/templates/pix-art/preferences.html:73 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "Тези настройки се съхраняват във вашите бисквитки. Това ни позволява да не съхраняваме тази информация за вас." + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/default/preferences.html:112 +#: searx/templates/oscar/preferences.html:237 +#: searx/templates/pix-art/preferences.html:75 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "Тези бисквитки служат за ваше удобство. Ние не ги използваме, за да Ви следим." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/default/preferences.html:115 +#: searx/templates/oscar/preferences.html:240 +#: searx/templates/pix-art/preferences.html:78 +msgid "save" +msgstr "запази" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/default/preferences.html:116 +#: searx/templates/oscar/preferences.html:242 +msgid "Reset defaults" +msgstr "Върни първоначалните" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/default/preferences.html:117 +#: searx/templates/oscar/preferences.html:241 +#: searx/templates/pix-art/preferences.html:79 +msgid "back" +msgstr "назад" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/default/results.html:13 +#: searx/templates/oscar/results.html:110 +msgid "Search URL" +msgstr "Търси 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 +#: searx/templates/pix-art/search.html:3 +msgid "Search for..." +msgstr "Търси за..." + +#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +msgid "Engine stats" +msgstr "Статистика на търсачката" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/default/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "оригинален контекст" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/default/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +msgid "Seeder" +msgstr "Сийдър" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/default/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +msgid "Leecher" +msgstr "Лийчър" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/default/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:21 +msgid "magnet link" +msgstr "магнитна връзка" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/default/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:22 +msgid "torrent file" +msgstr "торент файл" + +#: searx/templates/default/categories.html:8 +msgid "Click on the magnifier to perform search" +msgstr "Кликнете лупичката, за да изпълните търсене" + +#: searx/templates/default/result_templates/code.html:3 +#: searx/templates/default/result_templates/default.html:3 +#: searx/templates/default/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:20 +msgid "cached" +msgstr "кеширана" + +#: searx/templates/oscar/base.html:78 +msgid "Powered by" +msgstr "" + +#: searx/templates/oscar/base.html:78 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "" + +#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33 +msgid "home" +msgstr "начало" + +#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24 +msgid "Toggle navigation" +msgstr "" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:25 +msgid "General" +msgstr "Общи" + +#: searx/templates/oscar/preferences.html:18 +#: searx/templates/oscar/preferences.html:126 +msgid "Engines" +msgstr "Търсачки" + +#: searx/templates/oscar/preferences.html:19 +#: searx/templates/oscar/preferences.html:187 +msgid "Plugins" +msgstr "Добавки" + +#: searx/templates/oscar/preferences.html:20 +#: searx/templates/oscar/preferences.html:210 +msgid "Cookies" +msgstr "Бисквитки" + +#: searx/templates/oscar/preferences.html:45 +msgid "What language do you prefer for search?" +msgstr "Кой език предпочитате за търсене?" + +#: searx/templates/oscar/preferences.html:56 +msgid "Change the language of the layout" +msgstr "Промени езика на оформлението" + +#: searx/templates/oscar/preferences.html:66 +msgid "Find stuff as you type" +msgstr "Намери докато пишеш" + +#: searx/templates/oscar/preferences.html:77 +msgid "Proxying image results through searx" +msgstr "" + +#: searx/templates/oscar/preferences.html:86 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "" + +#: searx/templates/oscar/preferences.html:95 +msgid "Filter content" +msgstr "Филтрирай съдържание" + +#: searx/templates/oscar/preferences.html:105 +msgid "Change searx layout" +msgstr "Промени оформлението на searx" + +#: searx/templates/oscar/preferences.html:143 +#: searx/templates/oscar/preferences.html:151 +msgid "Shortcut" +msgstr "Пряк път" + +#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/preferences.html:149 +msgid "Avg. time" +msgstr "Средно време" + +#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:148 +msgid "Max time" +msgstr "Макс. време" + +#: searx/templates/oscar/preferences.html:213 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "Това е списък на бисквитки с техните стойности, които searx съхранява на вашия компютър." + +#: searx/templates/oscar/preferences.html:214 +msgid "With that list, you can assess searx transparency." +msgstr "" + +#: searx/templates/oscar/preferences.html:219 +msgid "Cookie name" +msgstr "Име на бисквитката" + +#: searx/templates/oscar/preferences.html:220 +msgid "Value" +msgstr "Стойност" + +#: searx/templates/oscar/results.html:7 +msgid "Search results" +msgstr "Резултати от търсенето" + +#: searx/templates/oscar/results.html:105 +msgid "Links" +msgstr "Връзки" + +#: searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:11 +msgid "Start search" +msgstr "Започни търсене" + +#: searx/templates/oscar/search_full.html:15 +msgid "Show search filters" +msgstr "Покажи филтрите за търсене" + +#: searx/templates/oscar/search_full.html:15 +msgid "Hide search filters" +msgstr "Скрий филтрите за търсене" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "статистики" + +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/no_results.html:5 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "Затвори" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "Внимание!" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "Изглежда използвате searx за първи път." + +#: 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_cookies.html:3 +msgid "Information!" +msgstr "Информация!" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "В момента няма налични бисквитки." + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "Няма налична достъпна информация." + +#: searx/templates/oscar/messages/no_results.html:7 +msgid "Sorry!" +msgstr "Съжалявам!" + +#: searx/templates/oscar/messages/no_results.html:8 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "не намерихме резултати. Моля пробвайте други ключови думи или търсете в повече категории." + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "Браво!" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "Настройките са успешно запазени." + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "Да му се не види!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "Нещо се обърка." + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "show media" +msgstr "покажи медия" + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "hide media" +msgstr "скрий медия" + +#: searx/templates/oscar/result_templates/images.html:23 +msgid "Get image" +msgstr "Вземи изображение" + +#: searx/templates/oscar/result_templates/images.html:24 +msgid "View source" +msgstr "Покажи източник" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "show map" +msgstr "покажи карта" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "hide map" +msgstr "скрий картата" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "show details" +msgstr "покажи детайлите" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "hide details" +msgstr "скрий детайлите" + +#: searx/templates/oscar/result_templates/torrent.html:7 +msgid "Filesize" +msgstr "Размер на файла" + +#: searx/templates/oscar/result_templates/torrent.html:9 +msgid "Bytes" +msgstr "Байта" + +#: searx/templates/oscar/result_templates/torrent.html:10 +msgid "kiB" +msgstr "килобайт" + +#: searx/templates/oscar/result_templates/torrent.html:11 +msgid "MiB" +msgstr "мегабайт" + +#: searx/templates/oscar/result_templates/torrent.html:12 +msgid "GiB" +msgstr "гигабайт" + +#: searx/templates/oscar/result_templates/torrent.html:13 +msgid "TiB" +msgstr "терабайт" + +#: searx/templates/oscar/result_templates/torrent.html:15 +msgid "Number of Files" +msgstr "Брой на Файлове" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "show video" +msgstr "покажи видео" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "hide video" +msgstr "скрий видеото" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "Зареди още..." diff --git a/searx/translations/de/LC_MESSAGES/messages.mo b/searx/translations/de/LC_MESSAGES/messages.mo Binary files differindex d756167cc..7d3451265 100644 --- a/searx/translations/de/LC_MESSAGES/messages.mo +++ b/searx/translations/de/LC_MESSAGES/messages.mo diff --git a/searx/translations/de/LC_MESSAGES/messages.po b/searx/translations/de/LC_MESSAGES/messages.po index 8158c27e2..2ba9cc51e 100644 --- a/searx/translations/de/LC_MESSAGES/messages.po +++ b/searx/translations/de/LC_MESSAGES/messages.po @@ -1,27 +1,28 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: -# pointhi, 2014-2015 +# Thomas Pointhuber, 2014-2015 # Max <theshirinzu@gmail.com>, 2015 # pointhi, 2014 # rike, 2014 # stf <stefan.marsiske@gmail.com>, 2014 # stf <stefan.marsiske@gmail.com>, 2014 +# Thomas Pointhuber, 2016 # rike, 2014 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 10:00+0000\n" -"Last-Translator: pointhi\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:07+0000\n" +"Last-Translator: Thomas Pointhuber\n" "Language-Team: German (http://www.transifex.com/asciimoo/searx/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -61,11 +62,15 @@ msgstr "Neuigkeiten" msgid "map" msgstr "Karte" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "Wissenschaft" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "vor {minutes} Minute(n)" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "vor {hours} Stunde(n), {minutes} Minute(n)" @@ -284,7 +289,7 @@ msgstr "Kategorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -296,7 +301,7 @@ msgstr "Erlauben" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.mo b/searx/translations/el_GR/LC_MESSAGES/messages.mo Binary files differnew file mode 100644 index 000000000..385bcbc84 --- /dev/null +++ b/searx/translations/el_GR/LC_MESSAGES/messages.mo diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.po b/searx/translations/el_GR/LC_MESSAGES/messages.po new file mode 100644 index 000000000..73b49e27f --- /dev/null +++ b/searx/translations/el_GR/LC_MESSAGES/messages.po @@ -0,0 +1,686 @@ +# Translations template for PROJECT. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# Dimitris T. <dimitris@stinpriza.org>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" +"Language-Team: Greek (Greece) (http://www.transifex.com/asciimoo/searx/language/el_GR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.2.0\n" +"Language: el_GR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: searx/webapp.py:114 +msgid "files" +msgstr "αρχεία" + +#: searx/webapp.py:115 +msgid "general" +msgstr "γενικά" + +#: searx/webapp.py:116 +msgid "music" +msgstr "μουσική" + +#: searx/webapp.py:117 +msgid "social media" +msgstr "κοινωνικά δίκτυα" + +#: searx/webapp.py:118 +msgid "images" +msgstr "εικόνες" + +#: searx/webapp.py:119 +msgid "videos" +msgstr "" + +#: searx/webapp.py:120 +msgid "it" +msgstr "" + +#: searx/webapp.py:121 +msgid "news" +msgstr "νέα" + +#: searx/webapp.py:122 +msgid "map" +msgstr "χάρτης" + +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 +msgid "{minutes} minute(s) ago" +msgstr "" + +#: searx/webapp.py:417 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "" + +#: searx/engines/__init__.py:185 +msgid "Page loads (sec)" +msgstr "" + +#: searx/engines/__init__.py:189 +msgid "Number of results" +msgstr "Αριθμός αποτελεσμάτων" + +#: searx/engines/__init__.py:193 +msgid "Scores" +msgstr "" + +#: searx/engines/__init__.py:197 +msgid "Scores per result" +msgstr "" + +#: searx/engines/__init__.py:201 +msgid "Errors" +msgstr "Λάθη" + +#: searx/plugins/https_rewrite.py:29 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "" + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/default/index.html:8 searx/templates/default/index.html:12 +#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "προτιμήσεις" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3 +#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 +#: searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "σχετικά" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/default/preferences.html:5 +#: searx/templates/oscar/preferences.html:12 +#: searx/templates/pix-art/preferences.html:5 +msgid "Preferences" +msgstr "Προτιμήσεις" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/default/preferences.html:9 +#: searx/templates/oscar/preferences.html:36 +#: searx/templates/oscar/preferences.html:38 +msgid "Default categories" +msgstr "" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/default/preferences.html:14 +#: searx/templates/oscar/preferences.html:44 +#: searx/templates/pix-art/preferences.html:9 +msgid "Search language" +msgstr "Γλώσσα αναζήτησης" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/default/preferences.html:17 +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/pix-art/preferences.html:12 +msgid "Automatic" +msgstr "Αυτόματα" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/default/preferences.html:25 +#: searx/templates/oscar/preferences.html:55 +#: searx/templates/pix-art/preferences.html:20 +msgid "Interface language" +msgstr "" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/default/preferences.html:35 +#: searx/templates/oscar/preferences.html:65 +msgid "Autocomplete" +msgstr "" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/default/preferences.html:46 +#: searx/templates/oscar/preferences.html:76 +msgid "Image proxy" +msgstr "" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/default/preferences.html:49 +#: searx/templates/oscar/preferences.html:80 +msgid "Enabled" +msgstr "Ενεργοποιημένο" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/default/preferences.html:50 +#: searx/templates/oscar/preferences.html:81 +msgid "Disabled" +msgstr "Απενεργοποιημένο" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/default/preferences.html:55 +#: searx/templates/oscar/preferences.html:85 +#: searx/templates/pix-art/preferences.html:30 +msgid "Method" +msgstr "Μέθοδος" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/default/preferences.html:64 +#: searx/templates/oscar/preferences.html:94 +#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/preferences.html:150 +msgid "SafeSearch" +msgstr "" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/default/preferences.html:67 +#: searx/templates/oscar/preferences.html:98 +msgid "Strict" +msgstr "" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/default/preferences.html:68 +#: searx/templates/oscar/preferences.html:99 +msgid "Moderate" +msgstr "" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/default/preferences.html:69 +#: searx/templates/oscar/preferences.html:100 +msgid "None" +msgstr "" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/default/preferences.html:74 +#: searx/templates/oscar/preferences.html:104 +#: searx/templates/pix-art/preferences.html:39 +msgid "Themes" +msgstr "Θέματα" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Χρώμα" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Μπλε (προεπιλεγμένο)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Βιολετί" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Πράσινο" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "Κυανό" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Πορτοκαλί" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Κόκκινο" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/default/preferences.html:84 +#: searx/templates/pix-art/preferences.html:49 +msgid "Currently used search engines" +msgstr "" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/default/preferences.html:88 +#: searx/templates/oscar/preferences.html:142 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/pix-art/preferences.html:53 +msgid "Engine name" +msgstr "" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/default/preferences.html:89 +msgid "Category" +msgstr "Κατηγορία" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:101 +#: searx/templates/oscar/macros.html:71 +#: searx/templates/oscar/preferences.html:141 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +msgid "Allow" +msgstr "" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:102 +#: searx/templates/oscar/macros.html:70 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/default/preferences.html:110 +#: searx/templates/oscar/preferences.html:235 +#: searx/templates/pix-art/preferences.html:73 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "" + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/default/preferences.html:112 +#: searx/templates/oscar/preferences.html:237 +#: searx/templates/pix-art/preferences.html:75 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "" + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/default/preferences.html:115 +#: searx/templates/oscar/preferences.html:240 +#: searx/templates/pix-art/preferences.html:78 +msgid "save" +msgstr "αποθήκευση" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/default/preferences.html:116 +#: searx/templates/oscar/preferences.html:242 +msgid "Reset defaults" +msgstr "" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/default/preferences.html:117 +#: searx/templates/oscar/preferences.html:241 +#: searx/templates/pix-art/preferences.html:79 +msgid "back" +msgstr "πίσω" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/default/results.html:13 +#: searx/templates/oscar/results.html:110 +msgid "Search URL" +msgstr "" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/default/results.html:17 +#: searx/templates/oscar/results.html:115 +msgid "Download results" +msgstr "" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/default/results.html:35 +msgid "Answers" +msgstr "Απαντήσεις" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/default/results.html:43 +#: searx/templates/oscar/results.html:90 +msgid "Suggestions" +msgstr "Προτάσεις" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/default/results.html:81 +#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63 +msgid "previous page" +msgstr "προηγούμενη σελίδα" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/default/results.html:92 +#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71 +msgid "next page" +msgstr "επόμενη σελίδα" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 +msgid "Search for..." +msgstr "Αναζήτηση για..." + +#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +msgid "Engine stats" +msgstr "" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/default/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/default/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +msgid "Seeder" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/default/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +msgid "Leecher" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/default/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:21 +msgid "magnet link" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/default/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:22 +msgid "torrent file" +msgstr "" + +#: searx/templates/default/categories.html:8 +msgid "Click on the magnifier to perform search" +msgstr "" + +#: searx/templates/default/result_templates/code.html:3 +#: searx/templates/default/result_templates/default.html:3 +#: searx/templates/default/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:20 +msgid "cached" +msgstr "" + +#: searx/templates/oscar/base.html:78 +msgid "Powered by" +msgstr "" + +#: searx/templates/oscar/base.html:78 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "" + +#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33 +msgid "home" +msgstr "" + +#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24 +msgid "Toggle navigation" +msgstr "" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:25 +msgid "General" +msgstr "" + +#: searx/templates/oscar/preferences.html:18 +#: searx/templates/oscar/preferences.html:126 +msgid "Engines" +msgstr "" + +#: searx/templates/oscar/preferences.html:19 +#: searx/templates/oscar/preferences.html:187 +msgid "Plugins" +msgstr "" + +#: searx/templates/oscar/preferences.html:20 +#: searx/templates/oscar/preferences.html:210 +msgid "Cookies" +msgstr "" + +#: searx/templates/oscar/preferences.html:45 +msgid "What language do you prefer for search?" +msgstr "Τι γλώσσα προτιμάτε για αναζήτηση;" + +#: searx/templates/oscar/preferences.html:56 +msgid "Change the language of the layout" +msgstr "" + +#: searx/templates/oscar/preferences.html:66 +msgid "Find stuff as you type" +msgstr "" + +#: searx/templates/oscar/preferences.html:77 +msgid "Proxying image results through searx" +msgstr "" + +#: searx/templates/oscar/preferences.html:86 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "" + +#: searx/templates/oscar/preferences.html:95 +msgid "Filter content" +msgstr "" + +#: searx/templates/oscar/preferences.html:105 +msgid "Change searx layout" +msgstr "" + +#: searx/templates/oscar/preferences.html:143 +#: searx/templates/oscar/preferences.html:151 +msgid "Shortcut" +msgstr "" + +#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/preferences.html:149 +msgid "Avg. time" +msgstr "" + +#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:148 +msgid "Max time" +msgstr "" + +#: searx/templates/oscar/preferences.html:213 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "" + +#: searx/templates/oscar/preferences.html:214 +msgid "With that list, you can assess searx transparency." +msgstr "" + +#: searx/templates/oscar/preferences.html:219 +msgid "Cookie name" +msgstr "" + +#: searx/templates/oscar/preferences.html:220 +msgid "Value" +msgstr "" + +#: searx/templates/oscar/results.html:7 +msgid "Search results" +msgstr "Αποτελέσματα αναζήτησης" + +#: searx/templates/oscar/results.html:105 +msgid "Links" +msgstr "Σύνδεσμοι" + +#: searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:11 +msgid "Start search" +msgstr "Έναρξη αναζήτησης" + +#: searx/templates/oscar/search_full.html:15 +msgid "Show search filters" +msgstr "Προβολή φίλτρων αναζήτησης" + +#: searx/templates/oscar/search_full.html:15 +msgid "Hide search filters" +msgstr "Απόκρυψη φίλτρων αναζήτησης" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "στατιστικά" + +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/no_results.html:5 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "" + +#: searx/templates/oscar/messages/js_disabled.html:2 +msgid "Warning!" +msgstr "Προειδοποίηση!" + +#: searx/templates/oscar/messages/js_disabled.html:3 +msgid "Please enable JavaScript to use full functionality of this site." +msgstr "" + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "" + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "" + +#: searx/templates/oscar/messages/no_results.html:7 +msgid "Sorry!" +msgstr "Συγνώμη!" + +#: searx/templates/oscar/messages/no_results.html:8 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "" + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "" + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "" + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "show media" +msgstr "" + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "hide media" +msgstr "" + +#: searx/templates/oscar/result_templates/images.html:23 +msgid "Get image" +msgstr "" + +#: searx/templates/oscar/result_templates/images.html:24 +msgid "View source" +msgstr "" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "show map" +msgstr "προβολή χάρτη" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "hide map" +msgstr "απόκρυψη χάρτη" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "show details" +msgstr "προβολή λεπτομερειών" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "hide details" +msgstr "απόκρυψη λεπτομερειών" + +#: searx/templates/oscar/result_templates/torrent.html:7 +msgid "Filesize" +msgstr "Μέγεθος αρχείου" + +#: searx/templates/oscar/result_templates/torrent.html:9 +msgid "Bytes" +msgstr "" + +#: searx/templates/oscar/result_templates/torrent.html:10 +msgid "kiB" +msgstr "" + +#: searx/templates/oscar/result_templates/torrent.html:11 +msgid "MiB" +msgstr "" + +#: searx/templates/oscar/result_templates/torrent.html:12 +msgid "GiB" +msgstr "" + +#: searx/templates/oscar/result_templates/torrent.html:13 +msgid "TiB" +msgstr "" + +#: searx/templates/oscar/result_templates/torrent.html:15 +msgid "Number of Files" +msgstr "" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "show video" +msgstr "" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "hide video" +msgstr "" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "" diff --git a/searx/translations/en/LC_MESSAGES/messages.mo b/searx/translations/en/LC_MESSAGES/messages.mo Binary files differindex 0e2010a52..e852afc30 100644 --- a/searx/translations/en/LC_MESSAGES/messages.mo +++ b/searx/translations/en/LC_MESSAGES/messages.mo diff --git a/searx/translations/en/LC_MESSAGES/messages.po b/searx/translations/en/LC_MESSAGES/messages.po index c143038da..1f7f591c8 100644 --- a/searx/translations/en/LC_MESSAGES/messages.po +++ b/searx/translations/en/LC_MESSAGES/messages.po @@ -1,189 +1,232 @@ # English translations for PROJECT. -# Copyright (C) 2014 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2014. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2016. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-02-13 18:27+0100\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" "PO-Revision-Date: 2014-01-30 15:22+0100\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language: en\n" "Language-Team: en <LL@li.org>\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" -#: searx/webapp.py:100 +#: searx/webapp.py:114 msgid "files" msgstr "" -#: searx/webapp.py:101 +#: searx/webapp.py:115 msgid "general" msgstr "" -#: searx/webapp.py:102 +#: searx/webapp.py:116 msgid "music" msgstr "" -#: searx/webapp.py:103 +#: searx/webapp.py:117 msgid "social media" msgstr "" -#: searx/webapp.py:104 +#: searx/webapp.py:118 msgid "images" msgstr "" -#: searx/webapp.py:105 +#: searx/webapp.py:119 msgid "videos" msgstr "" -#: searx/webapp.py:106 +#: searx/webapp.py:120 msgid "it" msgstr "" -#: searx/webapp.py:107 +#: searx/webapp.py:121 msgid "news" msgstr "" -#: searx/webapp.py:108 +#: searx/webapp.py:122 msgid "map" msgstr "" -#: searx/webapp.py:361 +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "" -#: searx/webapp.py:363 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "" -#: searx/engines/__init__.py:182 +#: searx/engines/__init__.py:185 msgid "Page loads (sec)" msgstr "" -#: searx/engines/__init__.py:186 +#: searx/engines/__init__.py:189 msgid "Number of results" msgstr "" -#: searx/engines/__init__.py:190 +#: searx/engines/__init__.py:193 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:194 +#: searx/engines/__init__.py:197 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:198 +#: searx/engines/__init__.py:201 msgid "Errors" msgstr "" +#: searx/plugins/https_rewrite.py:29 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "" + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "" + #: searx/templates/courgette/index.html:9 #: searx/templates/courgette/index.html:13 #: searx/templates/courgette/results.html:5 #: searx/templates/default/index.html:8 searx/templates/default/index.html:12 #: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35 #: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 msgid "preferences" msgstr "" #: searx/templates/courgette/index.html:11 #: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3 #: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 +#: searx/templates/pix-art/index.html:7 msgid "about" msgstr "" #: searx/templates/courgette/preferences.html:5 #: searx/templates/default/preferences.html:5 #: searx/templates/oscar/preferences.html:12 +#: searx/templates/pix-art/preferences.html:5 msgid "Preferences" msgstr "" #: searx/templates/courgette/preferences.html:9 #: searx/templates/default/preferences.html:9 -#: searx/templates/oscar/preferences.html:34 #: searx/templates/oscar/preferences.html:36 +#: searx/templates/oscar/preferences.html:38 msgid "Default categories" msgstr "" #: searx/templates/courgette/preferences.html:13 #: searx/templates/default/preferences.html:14 -#: searx/templates/oscar/preferences.html:42 +#: searx/templates/oscar/preferences.html:44 +#: searx/templates/pix-art/preferences.html:9 msgid "Search language" msgstr "" #: searx/templates/courgette/preferences.html:16 #: searx/templates/default/preferences.html:17 -#: searx/templates/oscar/preferences.html:46 +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/pix-art/preferences.html:12 msgid "Automatic" msgstr "" #: searx/templates/courgette/preferences.html:24 #: searx/templates/default/preferences.html:25 -#: searx/templates/oscar/preferences.html:53 +#: searx/templates/oscar/preferences.html:55 +#: searx/templates/pix-art/preferences.html:20 msgid "Interface language" msgstr "" #: searx/templates/courgette/preferences.html:34 #: searx/templates/default/preferences.html:35 -#: searx/templates/oscar/preferences.html:63 +#: searx/templates/oscar/preferences.html:65 msgid "Autocomplete" msgstr "" #: searx/templates/courgette/preferences.html:45 #: searx/templates/default/preferences.html:46 -#: searx/templates/oscar/preferences.html:74 +#: searx/templates/oscar/preferences.html:76 msgid "Image proxy" msgstr "" #: searx/templates/courgette/preferences.html:48 #: searx/templates/default/preferences.html:49 -#: searx/templates/oscar/preferences.html:78 +#: searx/templates/oscar/preferences.html:80 msgid "Enabled" msgstr "" #: searx/templates/courgette/preferences.html:49 #: searx/templates/default/preferences.html:50 -#: searx/templates/oscar/preferences.html:79 +#: searx/templates/oscar/preferences.html:81 msgid "Disabled" msgstr "" #: searx/templates/courgette/preferences.html:54 #: searx/templates/default/preferences.html:55 -#: searx/templates/oscar/preferences.html:83 +#: searx/templates/oscar/preferences.html:85 +#: searx/templates/pix-art/preferences.html:30 msgid "Method" msgstr "" #: searx/templates/courgette/preferences.html:63 #: searx/templates/default/preferences.html:64 -#: searx/templates/oscar/preferences.html:92 +#: searx/templates/oscar/preferences.html:94 +#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/preferences.html:150 msgid "SafeSearch" msgstr "" #: searx/templates/courgette/preferences.html:66 #: searx/templates/default/preferences.html:67 -#: searx/templates/oscar/preferences.html:96 +#: searx/templates/oscar/preferences.html:98 msgid "Strict" msgstr "" #: searx/templates/courgette/preferences.html:67 #: searx/templates/default/preferences.html:68 -#: searx/templates/oscar/preferences.html:97 +#: searx/templates/oscar/preferences.html:99 msgid "Moderate" msgstr "" #: searx/templates/courgette/preferences.html:68 #: searx/templates/default/preferences.html:69 -#: searx/templates/oscar/preferences.html:98 +#: searx/templates/oscar/preferences.html:100 msgid "None" msgstr "" #: searx/templates/courgette/preferences.html:73 #: searx/templates/default/preferences.html:74 -#: searx/templates/oscar/preferences.html:102 +#: searx/templates/oscar/preferences.html:104 +#: searx/templates/pix-art/preferences.html:39 msgid "Themes" msgstr "" @@ -217,11 +260,15 @@ msgstr "" #: searx/templates/courgette/preferences.html:96 #: searx/templates/default/preferences.html:84 +#: searx/templates/pix-art/preferences.html:49 msgid "Currently used search engines" msgstr "" #: searx/templates/courgette/preferences.html:100 #: searx/templates/default/preferences.html:88 +#: searx/templates/oscar/preferences.html:142 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/pix-art/preferences.html:53 msgid "Engine name" msgstr "" @@ -234,7 +281,11 @@ msgstr "" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/macros.html:71 +#: searx/templates/oscar/preferences.html:141 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 msgid "Allow" msgstr "" @@ -242,13 +293,16 @@ msgstr "" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/macros.html:70 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 msgid "Block" msgstr "" #: searx/templates/courgette/preferences.html:122 #: searx/templates/default/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 +#: searx/templates/oscar/preferences.html:235 +#: searx/templates/pix-art/preferences.html:73 msgid "" "These settings are stored in your cookies, this allows us not to store " "this data about you." @@ -256,7 +310,8 @@ msgstr "" #: searx/templates/courgette/preferences.html:124 #: searx/templates/default/preferences.html:112 -#: searx/templates/oscar/preferences.html:163 +#: searx/templates/oscar/preferences.html:237 +#: searx/templates/pix-art/preferences.html:75 msgid "" "These cookies serve your sole convenience, we don't use these cookies to " "track you." @@ -264,13 +319,21 @@ msgstr "" #: searx/templates/courgette/preferences.html:127 #: searx/templates/default/preferences.html:115 -#: searx/templates/oscar/preferences.html:166 +#: searx/templates/oscar/preferences.html:240 +#: searx/templates/pix-art/preferences.html:78 msgid "save" msgstr "" #: searx/templates/courgette/preferences.html:128 #: searx/templates/default/preferences.html:116 -#: searx/templates/oscar/preferences.html:167 +#: searx/templates/oscar/preferences.html:242 +msgid "Reset defaults" +msgstr "" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/default/preferences.html:117 +#: searx/templates/oscar/preferences.html:241 +#: searx/templates/pix-art/preferences.html:79 msgid "back" msgstr "" @@ -312,16 +375,18 @@ msgstr "" #: searx/templates/courgette/search.html:3 #: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4 #: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 msgid "Search for..." msgstr "" #: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 -#: searx/templates/oscar/stats.html:5 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 msgid "Engine stats" msgstr "" #: searx/templates/courgette/result_templates/images.html:4 #: searx/templates/default/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 msgid "original context" msgstr "" @@ -360,11 +425,11 @@ msgstr "" msgid "cached" msgstr "" -#: searx/templates/oscar/base.html:74 +#: searx/templates/oscar/base.html:78 msgid "Powered by" msgstr "" -#: searx/templates/oscar/base.html:74 +#: searx/templates/oscar/base.html:78 msgid "a privacy-respecting, hackable metasearch engine" msgstr "" @@ -377,46 +442,89 @@ msgid "Toggle navigation" msgstr "" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:23 +#: searx/templates/oscar/preferences.html:25 msgid "General" msgstr "" #: searx/templates/oscar/preferences.html:18 -#: searx/templates/oscar/preferences.html:124 +#: searx/templates/oscar/preferences.html:126 msgid "Engines" msgstr "" -#: searx/templates/oscar/preferences.html:43 +#: searx/templates/oscar/preferences.html:19 +#: searx/templates/oscar/preferences.html:187 +msgid "Plugins" +msgstr "" + +#: searx/templates/oscar/preferences.html:20 +#: searx/templates/oscar/preferences.html:210 +msgid "Cookies" +msgstr "" + +#: searx/templates/oscar/preferences.html:45 msgid "What language do you prefer for search?" msgstr "" -#: searx/templates/oscar/preferences.html:54 +#: searx/templates/oscar/preferences.html:56 msgid "Change the language of the layout" msgstr "" -#: searx/templates/oscar/preferences.html:64 +#: searx/templates/oscar/preferences.html:66 msgid "Find stuff as you type" msgstr "" -#: searx/templates/oscar/preferences.html:75 +#: searx/templates/oscar/preferences.html:77 msgid "Proxying image results through searx" msgstr "" -#: searx/templates/oscar/preferences.html:84 +#: searx/templates/oscar/preferences.html:86 msgid "" "Change how forms are submited, <a " "href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" " rel=\"external\">learn more about request methods</a>" msgstr "" -#: searx/templates/oscar/preferences.html:93 +#: searx/templates/oscar/preferences.html:95 msgid "Filter content" msgstr "" -#: searx/templates/oscar/preferences.html:103 +#: searx/templates/oscar/preferences.html:105 msgid "Change searx layout" msgstr "" +#: searx/templates/oscar/preferences.html:143 +#: searx/templates/oscar/preferences.html:151 +msgid "Shortcut" +msgstr "" + +#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/preferences.html:149 +msgid "Avg. time" +msgstr "" + +#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:148 +msgid "Max time" +msgstr "" + +#: searx/templates/oscar/preferences.html:213 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "" + +#: searx/templates/oscar/preferences.html:214 +msgid "With that list, you can assess searx transparency." +msgstr "" + +#: searx/templates/oscar/preferences.html:219 +msgid "Cookie name" +msgstr "" + +#: searx/templates/oscar/preferences.html:220 +msgid "Value" +msgstr "" + #: searx/templates/oscar/results.html:7 msgid "Search results" msgstr "" @@ -466,6 +574,14 @@ msgstr "" msgid "Please enable JavaScript to use full functionality of this site." msgstr "" +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "" + #: searx/templates/oscar/messages/no_data_available.html:4 msgid "There is currently no data available. " msgstr "" @@ -564,6 +680,10 @@ msgstr "" msgid "hide video" msgstr "" +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "" + #~ msgid "Localization" #~ msgstr "" diff --git a/searx/translations/eo/LC_MESSAGES/messages.mo b/searx/translations/eo/LC_MESSAGES/messages.mo Binary files differnew file mode 100644 index 000000000..d9d1d5fc8 --- /dev/null +++ b/searx/translations/eo/LC_MESSAGES/messages.mo diff --git a/searx/translations/eo/LC_MESSAGES/messages.po b/searx/translations/eo/LC_MESSAGES/messages.po new file mode 100644 index 000000000..51323c264 --- /dev/null +++ b/searx/translations/eo/LC_MESSAGES/messages.po @@ -0,0 +1,686 @@ +# Translations template for PROJECT. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# juanda097 <juanda097@openmailbox.org>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" +"Language-Team: Esperanto (http://www.transifex.com/asciimoo/searx/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.2.0\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: searx/webapp.py:114 +msgid "files" +msgstr "dosieroj" + +#: searx/webapp.py:115 +msgid "general" +msgstr "ĝenerala" + +#: searx/webapp.py:116 +msgid "music" +msgstr "muziko" + +#: searx/webapp.py:117 +msgid "social media" +msgstr "sociaj retservoj" + +#: searx/webapp.py:118 +msgid "images" +msgstr "bildoj" + +#: searx/webapp.py:119 +msgid "videos" +msgstr "videoj" + +#: searx/webapp.py:120 +msgid "it" +msgstr "" + +#: searx/webapp.py:121 +msgid "news" +msgstr "novaĵoj" + +#: searx/webapp.py:122 +msgid "map" +msgstr "mapo" + +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 +msgid "{minutes} minute(s) ago" +msgstr "" + +#: searx/webapp.py:417 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "" + +#: searx/engines/__init__.py:185 +msgid "Page loads (sec)" +msgstr "" + +#: searx/engines/__init__.py:189 +msgid "Number of results" +msgstr "Nombro de rezultoj" + +#: searx/engines/__init__.py:193 +msgid "Scores" +msgstr "Poentaroj" + +#: searx/engines/__init__.py:197 +msgid "Scores per result" +msgstr "Poentaroj por unu rezulto" + +#: searx/engines/__init__.py:201 +msgid "Errors" +msgstr "Eraroj" + +#: searx/plugins/https_rewrite.py:29 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "Reverki HTTP ligiloj HTTP se eble" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "" + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/default/index.html:8 searx/templates/default/index.html:12 +#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "preferoj" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3 +#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 +#: searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/default/preferences.html:5 +#: searx/templates/oscar/preferences.html:12 +#: searx/templates/pix-art/preferences.html:5 +msgid "Preferences" +msgstr "Preferoj" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/default/preferences.html:9 +#: searx/templates/oscar/preferences.html:36 +#: searx/templates/oscar/preferences.html:38 +msgid "Default categories" +msgstr "Nerepago kategorioj" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/default/preferences.html:14 +#: searx/templates/oscar/preferences.html:44 +#: searx/templates/pix-art/preferences.html:9 +msgid "Search language" +msgstr "Serĉo lingvo" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/default/preferences.html:17 +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/pix-art/preferences.html:12 +msgid "Automatic" +msgstr "Aŭtomata" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/default/preferences.html:25 +#: searx/templates/oscar/preferences.html:55 +#: searx/templates/pix-art/preferences.html:20 +msgid "Interface language" +msgstr "Fasado lingvo" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/default/preferences.html:35 +#: searx/templates/oscar/preferences.html:65 +msgid "Autocomplete" +msgstr "" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/default/preferences.html:46 +#: searx/templates/oscar/preferences.html:76 +msgid "Image proxy" +msgstr "" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/default/preferences.html:49 +#: searx/templates/oscar/preferences.html:80 +msgid "Enabled" +msgstr "" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/default/preferences.html:50 +#: searx/templates/oscar/preferences.html:81 +msgid "Disabled" +msgstr "" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/default/preferences.html:55 +#: searx/templates/oscar/preferences.html:85 +#: searx/templates/pix-art/preferences.html:30 +msgid "Method" +msgstr "" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/default/preferences.html:64 +#: searx/templates/oscar/preferences.html:94 +#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/preferences.html:150 +msgid "SafeSearch" +msgstr "" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/default/preferences.html:67 +#: searx/templates/oscar/preferences.html:98 +msgid "Strict" +msgstr "Strikta" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/default/preferences.html:68 +#: searx/templates/oscar/preferences.html:99 +msgid "Moderate" +msgstr "Modera" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/default/preferences.html:69 +#: searx/templates/oscar/preferences.html:100 +msgid "None" +msgstr "Neniu" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/default/preferences.html:74 +#: searx/templates/oscar/preferences.html:104 +#: searx/templates/pix-art/preferences.html:39 +msgid "Themes" +msgstr "Temoj" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Koloro" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Blua (nerepago)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Viola" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Verda" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "Cejana" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Oranĝa" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Ruĝa" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/default/preferences.html:84 +#: searx/templates/pix-art/preferences.html:49 +msgid "Currently used search engines" +msgstr "" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/default/preferences.html:88 +#: searx/templates/oscar/preferences.html:142 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/pix-art/preferences.html:53 +msgid "Engine name" +msgstr "" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/default/preferences.html:89 +msgid "Category" +msgstr "Kategorio" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:101 +#: searx/templates/oscar/macros.html:71 +#: searx/templates/oscar/preferences.html:141 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +msgid "Allow" +msgstr "Permesi" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:102 +#: searx/templates/oscar/macros.html:70 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "Bloko" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/default/preferences.html:110 +#: searx/templates/oscar/preferences.html:235 +#: searx/templates/pix-art/preferences.html:73 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "" + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/default/preferences.html:112 +#: searx/templates/oscar/preferences.html:237 +#: searx/templates/pix-art/preferences.html:75 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "" + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/default/preferences.html:115 +#: searx/templates/oscar/preferences.html:240 +#: searx/templates/pix-art/preferences.html:78 +msgid "save" +msgstr "" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/default/preferences.html:116 +#: searx/templates/oscar/preferences.html:242 +msgid "Reset defaults" +msgstr "" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/default/preferences.html:117 +#: searx/templates/oscar/preferences.html:241 +#: searx/templates/pix-art/preferences.html:79 +msgid "back" +msgstr "" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/default/results.html:13 +#: searx/templates/oscar/results.html:110 +msgid "Search URL" +msgstr "" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/default/results.html:17 +#: searx/templates/oscar/results.html:115 +msgid "Download results" +msgstr "Deŝuto rezultoj" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/default/results.html:35 +msgid "Answers" +msgstr "Respondoj" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/default/results.html:43 +#: searx/templates/oscar/results.html:90 +msgid "Suggestions" +msgstr "" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/default/results.html:81 +#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63 +msgid "previous page" +msgstr "" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/default/results.html:92 +#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71 +msgid "next page" +msgstr "" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 +msgid "Search for..." +msgstr "" + +#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +msgid "Engine stats" +msgstr "" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/default/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/default/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +msgid "Seeder" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/default/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +msgid "Leecher" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/default/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:21 +msgid "magnet link" +msgstr "" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/default/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:22 +msgid "torrent file" +msgstr "" + +#: searx/templates/default/categories.html:8 +msgid "Click on the magnifier to perform search" +msgstr "" + +#: searx/templates/default/result_templates/code.html:3 +#: searx/templates/default/result_templates/default.html:3 +#: searx/templates/default/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:20 +msgid "cached" +msgstr "" + +#: searx/templates/oscar/base.html:78 +msgid "Powered by" +msgstr "" + +#: searx/templates/oscar/base.html:78 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "" + +#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33 +msgid "home" +msgstr "" + +#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24 +msgid "Toggle navigation" +msgstr "" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:25 +msgid "General" +msgstr "" + +#: searx/templates/oscar/preferences.html:18 +#: searx/templates/oscar/preferences.html:126 +msgid "Engines" +msgstr "" + +#: searx/templates/oscar/preferences.html:19 +#: searx/templates/oscar/preferences.html:187 +msgid "Plugins" +msgstr "" + +#: searx/templates/oscar/preferences.html:20 +#: searx/templates/oscar/preferences.html:210 +msgid "Cookies" +msgstr "" + +#: searx/templates/oscar/preferences.html:45 +msgid "What language do you prefer for search?" +msgstr "" + +#: searx/templates/oscar/preferences.html:56 +msgid "Change the language of the layout" +msgstr "" + +#: searx/templates/oscar/preferences.html:66 +msgid "Find stuff as you type" +msgstr "" + +#: searx/templates/oscar/preferences.html:77 +msgid "Proxying image results through searx" +msgstr "" + +#: searx/templates/oscar/preferences.html:86 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr " Ŝanĝ kiel formoj estas submetiĝita, < href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\"> Lerni pli pri peto metodoj</> " + +#: searx/templates/oscar/preferences.html:95 +msgid "Filter content" +msgstr "" + +#: searx/templates/oscar/preferences.html:105 +msgid "Change searx layout" +msgstr "" + +#: searx/templates/oscar/preferences.html:143 +#: searx/templates/oscar/preferences.html:151 +msgid "Shortcut" +msgstr "" + +#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/preferences.html:149 +msgid "Avg. time" +msgstr "" + +#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:148 +msgid "Max time" +msgstr "" + +#: searx/templates/oscar/preferences.html:213 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "" + +#: searx/templates/oscar/preferences.html:214 +msgid "With that list, you can assess searx transparency." +msgstr "" + +#: searx/templates/oscar/preferences.html:219 +msgid "Cookie name" +msgstr "" + +#: searx/templates/oscar/preferences.html:220 +msgid "Value" +msgstr "" + +#: searx/templates/oscar/results.html:7 +msgid "Search results" +msgstr "Serĉrezultoj" + +#: 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 "statistiko" + +#: 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 "Ferm" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "" + +#: searx/templates/oscar/messages/js_disabled.html:2 +msgid "Warning!" +msgstr "Averto!" + +#: searx/templates/oscar/messages/js_disabled.html:3 +msgid "Please enable JavaScript to use full functionality of this site." +msgstr "Bonvolu ebligi al Javaskripto uzi plenan funkcion de ĉi tiu ejo." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "Informoj!" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "" + +#: 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 "Mizera!" + +#: 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 "Bone farite!" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "Fiksaĵoj savis sukcese." + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "Aj klak!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "Aĵo fuŝiĝis." + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "show media" +msgstr "montr amaskomunikiloj" + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "hide media" +msgstr "kaŝi amaskomunikilojn" + +#: searx/templates/oscar/result_templates/images.html:23 +msgid "Get image" +msgstr "Akiri bildon" + +#: searx/templates/oscar/result_templates/images.html:24 +msgid "View source" +msgstr "Vido fonto" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "show map" +msgstr "montr mapo" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "hide map" +msgstr "kaŝi mapon" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "show details" +msgstr "montr detaloj" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "hide details" +msgstr "kaŝi detalojn" + +#: searx/templates/oscar/result_templates/torrent.html:7 +msgid "Filesize" +msgstr "Filesize" + +#: 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 "Nombro de Dosieroj" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "show video" +msgstr "montr video" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "hide video" +msgstr "kaŝi videon" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "Ŝarĝ pli..." diff --git a/searx/translations/es/LC_MESSAGES/messages.mo b/searx/translations/es/LC_MESSAGES/messages.mo Binary files differindex a18910832..1afc7256d 100644 --- a/searx/translations/es/LC_MESSAGES/messages.mo +++ b/searx/translations/es/LC_MESSAGES/messages.mo diff --git a/searx/translations/es/LC_MESSAGES/messages.po b/searx/translations/es/LC_MESSAGES/messages.po index 63136323d..de6c0a438 100644 --- a/searx/translations/es/LC_MESSAGES/messages.po +++ b/searx/translations/es/LC_MESSAGES/messages.po @@ -1,24 +1,25 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: # Adam Tauber <asciimoo@gmail.com>, 2015 # Alejandro León Aznar, 2014 # Alejandro León Aznar, 2014-2015 -# Oscar Carrero <holaoscar@protonmail.ch>, 2015 +# juanda097 <juanda097@openmailbox.org>, 2016 +# Oscar Carrero <ocf@openmailbox.org>, 2015 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-09-05 20:46+0000\n" -"Last-Translator: Oscar Carrero <holaoscar@protonmail.ch>\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-02-24 23:02+0000\n" +"Last-Translator: juanda097 <juanda097@openmailbox.org>\n" "Language-Team: Spanish (http://www.transifex.com/asciimoo/searx/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -58,11 +59,15 @@ msgstr "noticias" msgid "map" msgstr "mapa" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "ciencia" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "hace {minutes} minuto(s)" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "hace {hours} hora(s) y {minutes} minuto(s)" @@ -281,7 +286,7 @@ msgstr "Categoría" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -293,7 +298,7 @@ msgstr "Permitir" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" @@ -475,7 +480,7 @@ msgstr "Buscar mientras escribes" #: searx/templates/oscar/preferences.html:77 msgid "Proxying image results through searx" -msgstr "Filtrando resultados de imágenes en searx" +msgstr "Filtrado de resultados de imágenes en searx" #: searx/templates/oscar/preferences.html:86 msgid "" diff --git a/searx/translations/fr/LC_MESSAGES/messages.mo b/searx/translations/fr/LC_MESSAGES/messages.mo Binary files differindex 3f518fdf8..d33c51b63 100644 --- a/searx/translations/fr/LC_MESSAGES/messages.mo +++ b/searx/translations/fr/LC_MESSAGES/messages.mo diff --git a/searx/translations/fr/LC_MESSAGES/messages.po b/searx/translations/fr/LC_MESSAGES/messages.po index f20673da1..77ccaa28e 100644 --- a/searx/translations/fr/LC_MESSAGES/messages.po +++ b/searx/translations/fr/LC_MESSAGES/messages.po @@ -1,11 +1,11 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: # Benjamin Sonntag <benjamin@sonntag.fr>, 2014 # Cqoicebordel <david.barouh@wanadoo.fr>, 2014 -# Cqoicebordel <david.barouh@wanadoo.fr>, 2014-2015 +# Cqoicebordel <david.barouh@wanadoo.fr>, 2014-2016 # FIRST AUTHOR <EMAIL@ADDRESS>, 2014 # rike, 2014 # rike, 2014 @@ -13,14 +13,14 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 15:35+0000\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:31+0000\n" "Last-Translator: Cqoicebordel <david.barouh@wanadoo.fr>\n" "Language-Team: French (http://www.transifex.com/asciimoo/searx/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -60,11 +60,15 @@ msgstr "actus" msgid "map" msgstr "carte" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "science" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "il y a {minutes} minute(s)" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "il y a {hours} heure(s), {minutes} minute(s)" @@ -283,7 +287,7 @@ msgstr "Catégorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -295,7 +299,7 @@ msgstr "Autoriser" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/he/LC_MESSAGES/messages.mo b/searx/translations/he/LC_MESSAGES/messages.mo Binary files differindex 84502da31..4458e0f3c 100644 --- a/searx/translations/he/LC_MESSAGES/messages.mo +++ b/searx/translations/he/LC_MESSAGES/messages.mo diff --git a/searx/translations/he/LC_MESSAGES/messages.po b/searx/translations/he/LC_MESSAGES/messages.po index 85537a54e..753d25dfa 100644 --- a/searx/translations/he/LC_MESSAGES/messages.po +++ b/searx/translations/he/LC_MESSAGES/messages.po @@ -1,10 +1,10 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: # GenghisKhan <genghiskhan@gmx.ca>, 2015 -# GenghisKhan <genghiskhan@gmx.ca>, 2015 +# GenghisKhan <genghiskhan@gmx.ca>, 2015-2016 # pointhi, 2014 # rike, 2014 # stf <stefan.marsiske@gmail.com>, 2014 @@ -12,14 +12,14 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 11:19+0000\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-03-01 15:21+0000\n" "Last-Translator: GenghisKhan <genghiskhan@gmx.ca>\n" "Language-Team: Hebrew (http://www.transifex.com/asciimoo/searx/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -59,11 +59,15 @@ msgstr "חדשות" msgid "map" msgstr "מפה" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "מדע" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "לפני {minutes} דקות" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "לפני {hours} שעות, {minutes} דקות" @@ -99,7 +103,7 @@ msgstr "חפש בעת בחירת קטגוריה" msgid "" "Perform search immediately if a category selected. Disable to select " "multiple categories. (JavaScript required)" -msgstr "בצע חיפוש לאלתר כאשר קטגוריה נבחרת. נטרל כדי לבחור קטגוריות מרובות. (מצריך JavaScript)" +msgstr "בצע חיפוש כאשר קטגוריה נבחרת. נטרל כדי לבחור קטגוריות מרובות. (מצריך JavaScript)" #: searx/plugins/self_info.py:20 msgid "" @@ -177,7 +181,7 @@ msgstr "השלמה אוטומטית" #: searx/templates/default/preferences.html:46 #: searx/templates/oscar/preferences.html:76 msgid "Image proxy" -msgstr "proxy תמונה" +msgstr "מתווך תמונה" #: searx/templates/courgette/preferences.html:48 #: searx/templates/default/preferences.html:49 @@ -282,7 +286,7 @@ msgstr "קטגוריה" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -294,7 +298,7 @@ msgstr "התר" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" @@ -342,13 +346,13 @@ msgstr "חזור" #: searx/templates/default/results.html:13 #: searx/templates/oscar/results.html:110 msgid "Search URL" -msgstr "URL חיפוש" +msgstr "קישור חיפוש" #: searx/templates/courgette/results.html:16 #: searx/templates/default/results.html:17 #: searx/templates/oscar/results.html:115 msgid "Download results" -msgstr "הורדת תוצאות" +msgstr "הורד תוצאות" #: searx/templates/courgette/results.html:34 #: searx/templates/default/results.html:35 @@ -395,13 +399,13 @@ msgstr "הקשר מקורי" #: searx/templates/default/result_templates/torrent.html:11 #: searx/templates/oscar/result_templates/torrent.html:6 msgid "Seeder" -msgstr "זורע" +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 "יונק" +msgstr "יונקים" #: searx/templates/courgette/result_templates/torrent.html:9 #: searx/templates/default/result_templates/torrent.html:9 @@ -476,7 +480,7 @@ msgstr "מציאת דברים בזמן הקלדה" #: searx/templates/oscar/preferences.html:77 msgid "Proxying image results through searx" -msgstr "Proxying תוצאות תמונה מבעד searx" +msgstr "שלוף תוצאות תמונה דרך searx" #: searx/templates/oscar/preferences.html:86 msgid "" @@ -573,7 +577,7 @@ msgstr "אזהרה!" #: searx/templates/oscar/messages/js_disabled.html:3 msgid "Please enable JavaScript to use full functionality of this site." -msgstr "אנא אפשרו JavaScript כדי לנצל תפקודיות מלאה של אתר זה." +msgstr "עליך לאפשר JavaScript כדי לנצל תפקודיות מלאה של אתר זה." #: searx/templates/oscar/messages/no_cookies.html:3 msgid "Information!" diff --git a/searx/translations/hu/LC_MESSAGES/messages.mo b/searx/translations/hu/LC_MESSAGES/messages.mo Binary files differindex f540b41c8..b418c486a 100644 --- a/searx/translations/hu/LC_MESSAGES/messages.mo +++ b/searx/translations/hu/LC_MESSAGES/messages.mo diff --git a/searx/translations/hu/LC_MESSAGES/messages.po b/searx/translations/hu/LC_MESSAGES/messages.po index 33f573bf2..ba2978e42 100644 --- a/searx/translations/hu/LC_MESSAGES/messages.po +++ b/searx/translations/hu/LC_MESSAGES/messages.po @@ -1,22 +1,22 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: -# Adam Tauber <asciimoo@gmail.com>, 2014-2015 +# Adam Tauber <asciimoo@gmail.com>, 2014-2016 # FIRST AUTHOR <EMAIL@ADDRESS>, 2014 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-25 16:29+0000\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-02-06 08:36+0000\n" "Last-Translator: Adam Tauber <asciimoo@gmail.com>\n" "Language-Team: Hungarian (http://www.transifex.com/asciimoo/searx/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -56,11 +56,15 @@ msgstr "hírek" msgid "map" msgstr "térkép" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "tudomány" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes} perce" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} óra, {minutes} perce" @@ -279,7 +283,7 @@ msgstr "Kategória" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -291,7 +295,7 @@ msgstr "Engedélyezés" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/it/LC_MESSAGES/messages.mo b/searx/translations/it/LC_MESSAGES/messages.mo Binary files differindex b9dcf955b..756f41fb2 100644 --- a/searx/translations/it/LC_MESSAGES/messages.mo +++ b/searx/translations/it/LC_MESSAGES/messages.mo diff --git a/searx/translations/it/LC_MESSAGES/messages.po b/searx/translations/it/LC_MESSAGES/messages.po index 9fd1a3094..672d1e054 100644 --- a/searx/translations/it/LC_MESSAGES/messages.po +++ b/searx/translations/it/LC_MESSAGES/messages.po @@ -1,22 +1,23 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: # dp <d.pitrolo@gmx.com>, 2014 # dp <d.pitrolo@gmx.com>, 2014 +# Luc <luc.absil2@gmail.com>, 2015 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 09:45+0000\n" -"Last-Translator: pointhi\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" "Language-Team: Italian (http://www.transifex.com/asciimoo/searx/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -56,11 +57,15 @@ msgstr "notizie" msgid "map" msgstr "mappe" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "di {minutes} minuti fa" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "di {ore} h e {minutes} minuti fa" @@ -180,13 +185,13 @@ msgstr "" #: searx/templates/default/preferences.html:49 #: searx/templates/oscar/preferences.html:80 msgid "Enabled" -msgstr "" +msgstr "Attivo" #: searx/templates/courgette/preferences.html:49 #: searx/templates/default/preferences.html:50 #: searx/templates/oscar/preferences.html:81 msgid "Disabled" -msgstr "" +msgstr "Disabilitato" #: searx/templates/courgette/preferences.html:54 #: searx/templates/default/preferences.html:55 @@ -201,25 +206,25 @@ msgstr "Metodo" #: searx/templates/oscar/preferences.html:144 #: searx/templates/oscar/preferences.html:150 msgid "SafeSearch" -msgstr "" +msgstr "Ricerca rassicurato" #: searx/templates/courgette/preferences.html:66 #: searx/templates/default/preferences.html:67 #: searx/templates/oscar/preferences.html:98 msgid "Strict" -msgstr "" +msgstr "Stretto" #: searx/templates/courgette/preferences.html:67 #: searx/templates/default/preferences.html:68 #: searx/templates/oscar/preferences.html:99 msgid "Moderate" -msgstr "" +msgstr "Medio" #: searx/templates/courgette/preferences.html:68 #: searx/templates/default/preferences.html:69 #: searx/templates/oscar/preferences.html:100 msgid "None" -msgstr "" +msgstr "Nessuno" #: searx/templates/courgette/preferences.html:73 #: searx/templates/default/preferences.html:74 @@ -230,31 +235,31 @@ msgstr "Grafica" #: searx/templates/courgette/preferences.html:83 msgid "Color" -msgstr "" +msgstr "Colore" #: searx/templates/courgette/preferences.html:86 msgid "Blue (default)" -msgstr "" +msgstr "Azzuro (default)" #: searx/templates/courgette/preferences.html:87 msgid "Violet" -msgstr "" +msgstr "Violetto" #: searx/templates/courgette/preferences.html:88 msgid "Green" -msgstr "" +msgstr "Verde" #: searx/templates/courgette/preferences.html:89 msgid "Cyan" -msgstr "" +msgstr "Ciano" #: searx/templates/courgette/preferences.html:90 msgid "Orange" -msgstr "" +msgstr "Arancione" #: searx/templates/courgette/preferences.html:91 msgid "Red" -msgstr "" +msgstr "Rosso" #: searx/templates/courgette/preferences.html:96 #: searx/templates/default/preferences.html:84 @@ -279,7 +284,7 @@ msgstr "Categoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -291,7 +296,7 @@ msgstr "Autorizza" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" @@ -326,7 +331,7 @@ msgstr "salva" #: searx/templates/default/preferences.html:116 #: searx/templates/oscar/preferences.html:242 msgid "Reset defaults" -msgstr "" +msgstr "Azzerare default" #: searx/templates/courgette/preferences.html:129 #: searx/templates/default/preferences.html:117 @@ -350,7 +355,7 @@ msgstr "Scarica i risultati" #: searx/templates/courgette/results.html:34 #: searx/templates/default/results.html:35 msgid "Answers" -msgstr "" +msgstr "Riposte" #: searx/templates/courgette/results.html:42 #: searx/templates/default/results.html:43 @@ -392,7 +397,7 @@ msgstr "" #: searx/templates/default/result_templates/torrent.html:11 #: searx/templates/oscar/result_templates/torrent.html:6 msgid "Seeder" -msgstr "" +msgstr "Seminatrice" #: searx/templates/courgette/result_templates/torrent.html:7 #: searx/templates/default/result_templates/torrent.html:11 diff --git a/searx/translations/ja/LC_MESSAGES/messages.mo b/searx/translations/ja/LC_MESSAGES/messages.mo Binary files differindex 1ab4f8260..e8bb56ed5 100644 --- a/searx/translations/ja/LC_MESSAGES/messages.mo +++ b/searx/translations/ja/LC_MESSAGES/messages.mo diff --git a/searx/translations/ja/LC_MESSAGES/messages.po b/searx/translations/ja/LC_MESSAGES/messages.po index 0b433bd72..00158358f 100644 --- a/searx/translations/ja/LC_MESSAGES/messages.po +++ b/searx/translations/ja/LC_MESSAGES/messages.po @@ -1,25 +1,26 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: -# pointhi, 2014-2015 -# FIRST AUTHOR <EMAIL@ADDRESS>, 2014 +# Thomas Pointhuber, 2014-2015 +# FIRST AUTHOR <EMAIL@ADDRESS>, 2014,2016 # Lucas Phillips <mail@lep.pw>, 2015 # Max <theshirinzu@gmail.com>, 2015 # pointhi, 2014 +# Thomas Pointhuber, 2015-2016 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-09-03 07:37+0000\n" -"Last-Translator: pointhi\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-02-14 00:11+0000\n" +"Last-Translator: Akio Nishimura <akionux@gmail.com>\n" "Language-Team: Japanese (http://www.transifex.com/asciimoo/searx/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -29,7 +30,7 @@ msgstr "ファイル" #: searx/webapp.py:115 msgid "general" -msgstr "一般的な" +msgstr "一般" #: searx/webapp.py:116 msgid "music" @@ -37,7 +38,7 @@ msgstr "音楽" #: searx/webapp.py:117 msgid "social media" -msgstr "社会的ネットワーク" +msgstr "ソーシャルメディア" #: searx/webapp.py:118 msgid "images" @@ -59,17 +60,21 @@ msgstr "お知らせ" msgid "map" msgstr "地図" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "学問" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes}分前" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours}時間と{minutes}分前" #: searx/engines/__init__.py:185 msgid "Page loads (sec)" -msgstr "" +msgstr "ページ読み込み時間 (秒)" #: searx/engines/__init__.py:189 msgid "Number of results" @@ -77,11 +82,11 @@ msgstr "通知の数" #: searx/engines/__init__.py:193 msgid "Scores" -msgstr "" +msgstr "スコア" #: searx/engines/__init__.py:197 msgid "Scores per result" -msgstr "" +msgstr "検索結果当たりスコア" #: searx/engines/__init__.py:201 msgid "Errors" @@ -89,31 +94,31 @@ msgstr "エラー" #: searx/plugins/https_rewrite.py:29 msgid "Rewrite HTTP links to HTTPS if possible" -msgstr "" +msgstr "可能ならばHTTPリンクをHTTPSリンクに書き換える" #: searx/plugins/search_on_category_select.py:18 msgid "Search on category select" -msgstr "" +msgstr "カテゴリ選択したら検索を実行" #: searx/plugins/search_on_category_select.py:19 msgid "" "Perform search immediately if a category selected. Disable to select " "multiple categories. (JavaScript required)" -msgstr "" +msgstr "カテゴリが選択されたときに検索を実行します。複数のカテゴリを選択する場合は無効にします。(JavaScriptが必要です)" #: searx/plugins/self_info.py:20 msgid "" "Displays your IP if the query is \"ip\" and your user agent if the query " "contains \"user agent\"." -msgstr "" +msgstr "クエリが \"ip\" の場合にあなたのIPを、クエリに\"user agent\"が含まれる場合にあなたのユーザーエージェントを表示します。" #: searx/plugins/tracker_url_remover.py:26 msgid "Tracker URL remover" -msgstr "" +msgstr "トラッカーURLリムーバー" #: searx/plugins/tracker_url_remover.py:27 msgid "Remove trackers arguments from the returned URL" -msgstr "" +msgstr "返されたURLからトラッカー引数を消去します。" #: searx/templates/courgette/index.html:9 #: searx/templates/courgette/index.html:13 @@ -130,7 +135,7 @@ msgstr "設定" #: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 #: searx/templates/pix-art/index.html:7 msgid "about" -msgstr "に関する" +msgstr "このサイトについて" #: searx/templates/courgette/preferences.html:5 #: searx/templates/default/preferences.html:5 @@ -144,7 +149,7 @@ msgstr "設定" #: searx/templates/oscar/preferences.html:36 #: searx/templates/oscar/preferences.html:38 msgid "Default categories" -msgstr "" +msgstr "デフォルトのカテゴリ" #: searx/templates/courgette/preferences.html:13 #: searx/templates/default/preferences.html:14 @@ -158,32 +163,32 @@ msgstr "検索の言語" #: searx/templates/oscar/preferences.html:48 #: searx/templates/pix-art/preferences.html:12 msgid "Automatic" -msgstr "" +msgstr "自動" #: searx/templates/courgette/preferences.html:24 #: searx/templates/default/preferences.html:25 #: searx/templates/oscar/preferences.html:55 #: searx/templates/pix-art/preferences.html:20 msgid "Interface language" -msgstr "界面の言語" +msgstr "インターフェースの言語" #: searx/templates/courgette/preferences.html:34 #: searx/templates/default/preferences.html:35 #: searx/templates/oscar/preferences.html:65 msgid "Autocomplete" -msgstr "" +msgstr "オートコンプリート" #: searx/templates/courgette/preferences.html:45 #: searx/templates/default/preferences.html:46 #: searx/templates/oscar/preferences.html:76 msgid "Image proxy" -msgstr "" +msgstr "画像プロキシ" #: searx/templates/courgette/preferences.html:48 #: searx/templates/default/preferences.html:49 #: searx/templates/oscar/preferences.html:80 msgid "Enabled" -msgstr "活性化する" +msgstr "有効にする" #: searx/templates/courgette/preferences.html:49 #: searx/templates/default/preferences.html:50 @@ -196,7 +201,7 @@ msgstr "使用不可能にする" #: searx/templates/oscar/preferences.html:85 #: searx/templates/pix-art/preferences.html:30 msgid "Method" -msgstr "" +msgstr "方法" #: searx/templates/courgette/preferences.html:63 #: searx/templates/default/preferences.html:64 @@ -210,13 +215,13 @@ msgstr "安全な検索" #: searx/templates/default/preferences.html:67 #: searx/templates/oscar/preferences.html:98 msgid "Strict" -msgstr "たくさん。" +msgstr "厳しく" #: searx/templates/courgette/preferences.html:67 #: searx/templates/default/preferences.html:68 #: searx/templates/oscar/preferences.html:99 msgid "Moderate" -msgstr "少し" +msgstr "ゆるく" #: searx/templates/courgette/preferences.html:68 #: searx/templates/default/preferences.html:69 @@ -229,7 +234,7 @@ msgstr "なし" #: searx/templates/oscar/preferences.html:104 #: searx/templates/pix-art/preferences.html:39 msgid "Themes" -msgstr "図様" +msgstr "テーマ" #: searx/templates/courgette/preferences.html:83 msgid "Color" @@ -237,33 +242,33 @@ msgstr "色" #: searx/templates/courgette/preferences.html:86 msgid "Blue (default)" -msgstr "青色 (初期設定)" +msgstr "青 (初期設定)" #: searx/templates/courgette/preferences.html:87 msgid "Violet" -msgstr "菫色" +msgstr "紫" #: searx/templates/courgette/preferences.html:88 msgid "Green" -msgstr "緑色" +msgstr "緑" #: searx/templates/courgette/preferences.html:89 msgid "Cyan" -msgstr "シアン色" +msgstr "シアン" #: searx/templates/courgette/preferences.html:90 msgid "Orange" -msgstr "朽葉色" +msgstr "オレンジ" #: searx/templates/courgette/preferences.html:91 msgid "Red" -msgstr "赤色" +msgstr "赤" #: searx/templates/courgette/preferences.html:96 #: searx/templates/default/preferences.html:84 #: searx/templates/pix-art/preferences.html:49 msgid "Currently used search engines" -msgstr "" +msgstr "現在使用中の検索エンジン" #: searx/templates/courgette/preferences.html:100 #: searx/templates/default/preferences.html:88 @@ -271,7 +276,7 @@ msgstr "" #: searx/templates/oscar/preferences.html:152 #: searx/templates/pix-art/preferences.html:53 msgid "Engine name" -msgstr "" +msgstr "検索エンジン名" #: searx/templates/courgette/preferences.html:101 #: searx/templates/default/preferences.html:89 @@ -282,7 +287,7 @@ msgstr "カテゴリー" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -294,11 +299,11 @@ msgstr "許可する" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" -msgstr "封鎖する" +msgstr "禁止する" #: searx/templates/courgette/preferences.html:122 #: searx/templates/default/preferences.html:110 @@ -307,7 +312,7 @@ msgstr "封鎖する" msgid "" "These settings are stored in your cookies, this allows us not to store this " "data about you." -msgstr "" +msgstr "これらの設定はあなたのクッキーに保存されますが、これはサーバーがあなたの情報の保存するわけではありません。" #: searx/templates/courgette/preferences.html:124 #: searx/templates/default/preferences.html:112 @@ -316,7 +321,7 @@ msgstr "" msgid "" "These cookies serve your sole convenience, we don't use these cookies to " "track you." -msgstr "" +msgstr "クッキーはあなたが便利に使えるようにするために使うのであって、サーバーはあなたを追跡するためにクッキーを使うことはありません。" #: searx/templates/courgette/preferences.html:127 #: searx/templates/default/preferences.html:115 @@ -329,31 +334,31 @@ msgstr "保存" #: searx/templates/default/preferences.html:116 #: searx/templates/oscar/preferences.html:242 msgid "Reset defaults" -msgstr "" +msgstr "デフォルト設定に戻す" #: searx/templates/courgette/preferences.html:129 #: searx/templates/default/preferences.html:117 #: searx/templates/oscar/preferences.html:241 #: searx/templates/pix-art/preferences.html:79 msgid "back" -msgstr "バック" +msgstr "戻る" #: searx/templates/courgette/results.html:12 #: searx/templates/default/results.html:13 #: searx/templates/oscar/results.html:110 msgid "Search URL" -msgstr "" +msgstr "URLを検索する" #: searx/templates/courgette/results.html:16 #: searx/templates/default/results.html:17 #: searx/templates/oscar/results.html:115 msgid "Download results" -msgstr "ダウンロードの結果" +msgstr "ダウンロードするファイル形式" #: searx/templates/courgette/results.html:34 #: searx/templates/default/results.html:35 msgid "Answers" -msgstr "" +msgstr "回答" #: searx/templates/courgette/results.html:42 #: searx/templates/default/results.html:43 @@ -383,13 +388,13 @@ msgstr "検索する..." #: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 #: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 msgid "Engine stats" -msgstr "" +msgstr "検索エンジンの状態" #: searx/templates/courgette/result_templates/images.html:4 #: searx/templates/default/result_templates/images.html:4 #: searx/templates/pix-art/result_templates/images.html:4 msgid "original context" -msgstr "" +msgstr "元の文脈" #: searx/templates/courgette/result_templates/torrent.html:7 #: searx/templates/default/result_templates/torrent.html:11 @@ -407,7 +412,7 @@ msgstr "リーチャー" #: searx/templates/default/result_templates/torrent.html:9 #: searx/templates/oscar/macros.html:21 msgid "magnet link" -msgstr "" +msgstr "マグネットリンク" #: searx/templates/courgette/result_templates/torrent.html:10 #: searx/templates/default/result_templates/torrent.html:10 @@ -417,22 +422,22 @@ msgstr "トレントファイル" #: searx/templates/default/categories.html:8 msgid "Click on the magnifier to perform search" -msgstr "" +msgstr "検索を実行するには虫めがねをクリックしてください" #: searx/templates/default/result_templates/code.html:3 #: searx/templates/default/result_templates/default.html:3 #: searx/templates/default/result_templates/map.html:9 #: searx/templates/oscar/macros.html:20 msgid "cached" -msgstr "" +msgstr "キャッシュ" #: searx/templates/oscar/base.html:78 msgid "Powered by" -msgstr "" +msgstr "提供:" #: searx/templates/oscar/base.html:78 msgid "a privacy-respecting, hackable metasearch engine" -msgstr "" +msgstr "プライバシー保護を重視した、ハッカブルなメタサーチエンジン" #: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33 msgid "home" @@ -440,91 +445,91 @@ msgstr "スタートページ" #: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24 msgid "Toggle navigation" -msgstr "" +msgstr "ナビゲーションをトグルする" #: searx/templates/oscar/preferences.html:17 #: searx/templates/oscar/preferences.html:25 msgid "General" -msgstr "" +msgstr "一般設定" #: searx/templates/oscar/preferences.html:18 #: searx/templates/oscar/preferences.html:126 msgid "Engines" -msgstr "" +msgstr "検索エンジン" #: searx/templates/oscar/preferences.html:19 #: searx/templates/oscar/preferences.html:187 msgid "Plugins" -msgstr "" +msgstr "プラグイン" #: searx/templates/oscar/preferences.html:20 #: searx/templates/oscar/preferences.html:210 msgid "Cookies" -msgstr "" +msgstr "クッキー" #: searx/templates/oscar/preferences.html:45 msgid "What language do you prefer for search?" -msgstr "" +msgstr "検索に使う言語はどれが良いですか?" #: searx/templates/oscar/preferences.html:56 msgid "Change the language of the layout" -msgstr "" +msgstr "表示する言語を変更できます" #: searx/templates/oscar/preferences.html:66 msgid "Find stuff as you type" -msgstr "" +msgstr "入力補助に使う検索エンジン" #: searx/templates/oscar/preferences.html:77 msgid "Proxying image results through searx" -msgstr "" +msgstr "画像検索結果をsearxでプロキシする" #: searx/templates/oscar/preferences.html:86 msgid "" "Change how forms are submited, <a " "href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" " rel=\"external\">learn more about request methods</a>" -msgstr "" +msgstr "フォームがどの方法で送信されるかを変更できます。<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">リクエストメソッドについて詳しく知るにはここをクリック</a>。" #: searx/templates/oscar/preferences.html:95 msgid "Filter content" -msgstr "" +msgstr "コンテンツをフィルタリングする" #: searx/templates/oscar/preferences.html:105 msgid "Change searx layout" -msgstr "レイアウトのsearxの変更" +msgstr "searxのレイアウトの変更" #: searx/templates/oscar/preferences.html:143 #: searx/templates/oscar/preferences.html:151 msgid "Shortcut" -msgstr "" +msgstr "ショートカット" #: searx/templates/oscar/preferences.html:145 #: searx/templates/oscar/preferences.html:149 msgid "Avg. time" -msgstr "" +msgstr "平均時間" #: searx/templates/oscar/preferences.html:146 #: searx/templates/oscar/preferences.html:148 msgid "Max time" -msgstr "" +msgstr "最大時間" #: searx/templates/oscar/preferences.html:213 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." -msgstr "" +msgstr "これはクッキーのリストで、これらの値はあなたのコンピュータに保存されています。" #: searx/templates/oscar/preferences.html:214 msgid "With that list, you can assess searx transparency." -msgstr "" +msgstr "このリストによって、あなたはsearxの透明性を評価できます。" #: searx/templates/oscar/preferences.html:219 msgid "Cookie name" -msgstr "" +msgstr "クッキー名" #: searx/templates/oscar/preferences.html:220 msgid "Value" -msgstr "" +msgstr "値" #: searx/templates/oscar/results.html:7 msgid "Search results" @@ -537,19 +542,19 @@ msgstr "リンク" #: searx/templates/oscar/search.html:6 #: searx/templates/oscar/search_full.html:11 msgid "Start search" -msgstr "" +msgstr "検索を開始" #: searx/templates/oscar/search_full.html:15 msgid "Show search filters" -msgstr "" +msgstr "サーチフィルタを表示" #: searx/templates/oscar/search_full.html:15 msgid "Hide search filters" -msgstr "" +msgstr "サーチフィルタを隠す" #: searx/templates/oscar/stats.html:2 msgid "stats" -msgstr "" +msgstr "統計" #: searx/templates/oscar/messages/first_time.html:4 #: searx/templates/oscar/messages/no_results.html:5 @@ -561,11 +566,11 @@ msgstr "閉じる" #: searx/templates/oscar/messages/first_time.html:6 #: searx/templates/oscar/messages/no_data_available.html:3 msgid "Heads up!" -msgstr "" +msgstr "お知らせ" #: searx/templates/oscar/messages/first_time.html:7 msgid "It look like you are using searx first time." -msgstr "" +msgstr "searxを使うのは初めてようですね。" #: searx/templates/oscar/messages/js_disabled.html:2 msgid "Warning!" @@ -573,29 +578,29 @@ msgstr "意見" #: searx/templates/oscar/messages/js_disabled.html:3 msgid "Please enable JavaScript to use full functionality of this site." -msgstr "" +msgstr "このサイトの機能を全て使うためにはJavaScriptを有効にしてください。" #: searx/templates/oscar/messages/no_cookies.html:3 msgid "Information!" -msgstr "異見" +msgstr "お知らせ" #: searx/templates/oscar/messages/no_cookies.html:4 msgid "currently, there are no cookies defined." -msgstr "" +msgstr "現在、クッキーは定義されていません。" #: searx/templates/oscar/messages/no_data_available.html:4 msgid "There is currently no data available. " -msgstr "" +msgstr "現在データがありません。" #: searx/templates/oscar/messages/no_results.html:7 msgid "Sorry!" -msgstr "申し訳ありません" +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 "" +msgstr "検索結果はありませんでした。別カテゴリで、他のクエリまたは検索を試してください。" #: searx/templates/oscar/messages/save_settings_successfull.html:7 msgid "Well done!" @@ -603,7 +608,7 @@ msgstr "あっぱれ。" #: searx/templates/oscar/messages/save_settings_successfull.html:8 msgid "Settings saved successfully." -msgstr "" +msgstr "設定の保存に成功しました。" #: searx/templates/oscar/messages/unknow_error.html:7 msgid "Oh snap!" @@ -611,39 +616,39 @@ msgstr "ちぇっ" #: searx/templates/oscar/messages/unknow_error.html:8 msgid "Something went wrong." -msgstr "" +msgstr "なにか問題が起こっているようです。" #: searx/templates/oscar/result_templates/default.html:7 msgid "show media" -msgstr "" +msgstr "メディアを表示する" #: searx/templates/oscar/result_templates/default.html:7 msgid "hide media" -msgstr "" +msgstr "メディアを隠す" #: searx/templates/oscar/result_templates/images.html:23 msgid "Get image" -msgstr "" +msgstr "画像を取得する" #: searx/templates/oscar/result_templates/images.html:24 msgid "View source" -msgstr "" +msgstr "ソースを閲覧する" #: searx/templates/oscar/result_templates/map.html:7 msgid "show map" -msgstr "" +msgstr "地図を表示する" #: searx/templates/oscar/result_templates/map.html:7 msgid "hide map" -msgstr "" +msgstr "地図を隠す" #: searx/templates/oscar/result_templates/map.html:11 msgid "show details" -msgstr "" +msgstr "詳細を表示する" #: searx/templates/oscar/result_templates/map.html:11 msgid "hide details" -msgstr "" +msgstr "詳細を隠す" #: searx/templates/oscar/result_templates/torrent.html:7 msgid "Filesize" @@ -651,23 +656,23 @@ msgstr "ファイル・サイズ" #: searx/templates/oscar/result_templates/torrent.html:9 msgid "Bytes" -msgstr "" +msgstr "バイト" #: searx/templates/oscar/result_templates/torrent.html:10 msgid "kiB" -msgstr "" +msgstr "キロバイト" #: searx/templates/oscar/result_templates/torrent.html:11 msgid "MiB" -msgstr "" +msgstr "メガバイト" #: searx/templates/oscar/result_templates/torrent.html:12 msgid "GiB" -msgstr "" +msgstr "ギガバイト" #: searx/templates/oscar/result_templates/torrent.html:13 msgid "TiB" -msgstr "" +msgstr "テラバイト" #: searx/templates/oscar/result_templates/torrent.html:15 msgid "Number of Files" @@ -675,12 +680,12 @@ msgstr "ファイル数" #: searx/templates/oscar/result_templates/videos.html:7 msgid "show video" -msgstr "" +msgstr "動画を表示する" #: searx/templates/oscar/result_templates/videos.html:7 msgid "hide video" -msgstr "" +msgstr "動画を隠す" #: searx/templates/pix-art/results.html:28 msgid "Load more..." -msgstr "" +msgstr "もっと見る…" diff --git a/searx/translations/nl/LC_MESSAGES/messages.mo b/searx/translations/nl/LC_MESSAGES/messages.mo Binary files differindex ea2052f97..bd55e44fd 100644 --- a/searx/translations/nl/LC_MESSAGES/messages.mo +++ b/searx/translations/nl/LC_MESSAGES/messages.mo diff --git a/searx/translations/nl/LC_MESSAGES/messages.po b/searx/translations/nl/LC_MESSAGES/messages.po index 1871d7e77..b04ede24b 100644 --- a/searx/translations/nl/LC_MESSAGES/messages.po +++ b/searx/translations/nl/LC_MESSAGES/messages.po @@ -1,22 +1,22 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: # André Koot <meneer@tken.net>, 2014-2015 -# Nathan Follens, 2015 +# Nathan Follens, 2015-2016 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 14:41+0000\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-31 11:35+0000\n" "Last-Translator: Nathan Follens\n" "Language-Team: Dutch (http://www.transifex.com/asciimoo/searx/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -56,11 +56,15 @@ msgstr "nieuws" msgid "map" msgstr "kaart" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "wetenschap" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes} min geleden" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} uur, {minutes} min geleden" @@ -279,7 +283,7 @@ msgstr "Categorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -291,7 +295,7 @@ msgstr "Toestaan" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/pt/LC_MESSAGES/messages.mo b/searx/translations/pt/LC_MESSAGES/messages.mo Binary files differindex 34430905f..acf83eb6f 100644 --- a/searx/translations/pt/LC_MESSAGES/messages.mo +++ b/searx/translations/pt/LC_MESSAGES/messages.mo diff --git a/searx/translations/pt/LC_MESSAGES/messages.po b/searx/translations/pt/LC_MESSAGES/messages.po index 7c58ebcb7..2899a65e0 100644 --- a/searx/translations/pt/LC_MESSAGES/messages.po +++ b/searx/translations/pt/LC_MESSAGES/messages.po @@ -1,189 +1,232 @@ # Portuguese translations for PROJECT. -# Copyright (C) 2014 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2014. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2016. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-02-13 18:27+0100\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" "PO-Revision-Date: 2014-01-30 15:22+0100\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language: pt\n" "Language-Team: en <LL@li.org>\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" -#: searx/webapp.py:100 +#: searx/webapp.py:114 msgid "files" msgstr "arquivos" -#: searx/webapp.py:101 +#: searx/webapp.py:115 msgid "general" msgstr "geral" -#: searx/webapp.py:102 +#: searx/webapp.py:116 msgid "music" msgstr "música" -#: searx/webapp.py:103 +#: searx/webapp.py:117 msgid "social media" msgstr "mídias sociais" -#: searx/webapp.py:104 +#: searx/webapp.py:118 msgid "images" msgstr "imagens" -#: searx/webapp.py:105 +#: searx/webapp.py:119 msgid "videos" msgstr "vídeos" -#: searx/webapp.py:106 +#: searx/webapp.py:120 msgid "it" msgstr "informática" -#: searx/webapp.py:107 +#: searx/webapp.py:121 msgid "news" msgstr "notícias" -#: searx/webapp.py:108 +#: searx/webapp.py:122 msgid "map" msgstr "mapa" -#: searx/webapp.py:361 +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "Há {minutes} minutos" -#: searx/webapp.py:363 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "Há {hours} e {minutes} minutos" -#: searx/engines/__init__.py:182 +#: searx/engines/__init__.py:185 msgid "Page loads (sec)" msgstr "Tempo de carregamento (seg)" -#: searx/engines/__init__.py:186 +#: searx/engines/__init__.py:189 msgid "Number of results" msgstr "Número de resultados" -#: searx/engines/__init__.py:190 +#: searx/engines/__init__.py:193 msgid "Scores" msgstr "Pontuações" -#: searx/engines/__init__.py:194 +#: searx/engines/__init__.py:197 msgid "Scores per result" msgstr "Pontuações por resultado" -#: searx/engines/__init__.py:198 +#: searx/engines/__init__.py:201 msgid "Errors" msgstr "Erros" +#: searx/plugins/https_rewrite.py:29 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "" + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "" + #: searx/templates/courgette/index.html:9 #: searx/templates/courgette/index.html:13 #: searx/templates/courgette/results.html:5 #: searx/templates/default/index.html:8 searx/templates/default/index.html:12 #: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35 #: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 msgid "preferences" msgstr "preferências" #: searx/templates/courgette/index.html:11 #: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3 #: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 +#: searx/templates/pix-art/index.html:7 msgid "about" msgstr "sobre" #: searx/templates/courgette/preferences.html:5 #: searx/templates/default/preferences.html:5 #: searx/templates/oscar/preferences.html:12 +#: searx/templates/pix-art/preferences.html:5 msgid "Preferences" msgstr "Preferências" #: searx/templates/courgette/preferences.html:9 #: searx/templates/default/preferences.html:9 -#: searx/templates/oscar/preferences.html:34 #: searx/templates/oscar/preferences.html:36 +#: searx/templates/oscar/preferences.html:38 msgid "Default categories" msgstr "Categorias padrão" #: searx/templates/courgette/preferences.html:13 #: searx/templates/default/preferences.html:14 -#: searx/templates/oscar/preferences.html:42 +#: searx/templates/oscar/preferences.html:44 +#: searx/templates/pix-art/preferences.html:9 msgid "Search language" msgstr "Língua de pesquisa" #: searx/templates/courgette/preferences.html:16 #: searx/templates/default/preferences.html:17 -#: searx/templates/oscar/preferences.html:46 +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/pix-art/preferences.html:12 msgid "Automatic" msgstr "Automático" #: searx/templates/courgette/preferences.html:24 #: searx/templates/default/preferences.html:25 -#: searx/templates/oscar/preferences.html:53 +#: searx/templates/oscar/preferences.html:55 +#: searx/templates/pix-art/preferences.html:20 msgid "Interface language" msgstr "Linguagem da interface" #: searx/templates/courgette/preferences.html:34 #: searx/templates/default/preferences.html:35 -#: searx/templates/oscar/preferences.html:63 +#: searx/templates/oscar/preferences.html:65 msgid "Autocomplete" msgstr "Autocompletar" #: searx/templates/courgette/preferences.html:45 #: searx/templates/default/preferences.html:46 -#: searx/templates/oscar/preferences.html:74 +#: searx/templates/oscar/preferences.html:76 msgid "Image proxy" msgstr "Proxy de imagens" #: searx/templates/courgette/preferences.html:48 #: searx/templates/default/preferences.html:49 -#: searx/templates/oscar/preferences.html:78 +#: searx/templates/oscar/preferences.html:80 msgid "Enabled" msgstr "Ativado" #: searx/templates/courgette/preferences.html:49 #: searx/templates/default/preferences.html:50 -#: searx/templates/oscar/preferences.html:79 +#: searx/templates/oscar/preferences.html:81 msgid "Disabled" msgstr "Desativado" #: searx/templates/courgette/preferences.html:54 #: searx/templates/default/preferences.html:55 -#: searx/templates/oscar/preferences.html:83 +#: searx/templates/oscar/preferences.html:85 +#: searx/templates/pix-art/preferences.html:30 msgid "Method" msgstr "Método" #: searx/templates/courgette/preferences.html:63 #: searx/templates/default/preferences.html:64 -#: searx/templates/oscar/preferences.html:92 +#: searx/templates/oscar/preferences.html:94 +#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/preferences.html:150 msgid "SafeSearch" msgstr "Pesquisa segura" #: searx/templates/courgette/preferences.html:66 #: searx/templates/default/preferences.html:67 -#: searx/templates/oscar/preferences.html:96 +#: searx/templates/oscar/preferences.html:98 msgid "Strict" msgstr "Estrito" #: searx/templates/courgette/preferences.html:67 #: searx/templates/default/preferences.html:68 -#: searx/templates/oscar/preferences.html:97 +#: searx/templates/oscar/preferences.html:99 msgid "Moderate" msgstr "Moderado" #: searx/templates/courgette/preferences.html:68 #: searx/templates/default/preferences.html:69 -#: searx/templates/oscar/preferences.html:98 +#: searx/templates/oscar/preferences.html:100 msgid "None" msgstr "Nenhum" #: searx/templates/courgette/preferences.html:73 #: searx/templates/default/preferences.html:74 -#: searx/templates/oscar/preferences.html:102 +#: searx/templates/oscar/preferences.html:104 +#: searx/templates/pix-art/preferences.html:39 msgid "Themes" msgstr "Temas" @@ -217,11 +260,15 @@ msgstr "Vermelho" #: searx/templates/courgette/preferences.html:96 #: searx/templates/default/preferences.html:84 +#: searx/templates/pix-art/preferences.html:49 msgid "Currently used search engines" msgstr "Motores de busca sendo usados atualmente" #: searx/templates/courgette/preferences.html:100 #: searx/templates/default/preferences.html:88 +#: searx/templates/oscar/preferences.html:142 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/pix-art/preferences.html:53 msgid "Engine name" msgstr "Nome do motor" @@ -234,7 +281,11 @@ msgstr "Categoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/macros.html:71 +#: searx/templates/oscar/preferences.html:141 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 msgid "Allow" msgstr "Permitir" @@ -242,35 +293,51 @@ msgstr "Permitir" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/macros.html:70 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 msgid "Block" msgstr "Bloquear" #: searx/templates/courgette/preferences.html:122 #: searx/templates/default/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 +#: searx/templates/oscar/preferences.html:235 +#: searx/templates/pix-art/preferences.html:73 msgid "" "These settings are stored in your cookies, this allows us not to store " "this data about you." -msgstr "Essas configurações são armazenadas em seus cookies, isto nos permite não armazenar dados sobre você." +msgstr "" +"Essas configurações são armazenadas em seus cookies, isto nos permite não" +" armazenar dados sobre você." #: searx/templates/courgette/preferences.html:124 #: searx/templates/default/preferences.html:112 -#: searx/templates/oscar/preferences.html:163 +#: searx/templates/oscar/preferences.html:237 +#: searx/templates/pix-art/preferences.html:75 msgid "" "These cookies serve your sole convenience, we don't use these cookies to " "track you." -msgstr "Esses cookies servem unicamente para sua conveniência, nós não usamos eles para te rastrear." +msgstr "" +"Esses cookies servem unicamente para sua conveniência, nós não usamos " +"eles para te rastrear." #: searx/templates/courgette/preferences.html:127 #: searx/templates/default/preferences.html:115 -#: searx/templates/oscar/preferences.html:166 +#: searx/templates/oscar/preferences.html:240 +#: searx/templates/pix-art/preferences.html:78 msgid "save" msgstr "salvar" #: searx/templates/courgette/preferences.html:128 #: searx/templates/default/preferences.html:116 -#: searx/templates/oscar/preferences.html:167 +#: searx/templates/oscar/preferences.html:242 +msgid "Reset defaults" +msgstr "" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/default/preferences.html:117 +#: searx/templates/oscar/preferences.html:241 +#: searx/templates/pix-art/preferences.html:79 msgid "back" msgstr "voltar" @@ -312,16 +379,18 @@ msgstr "próxima página" #: searx/templates/courgette/search.html:3 #: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4 #: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 msgid "Search for..." msgstr "Pesquisar por..." #: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 -#: searx/templates/oscar/stats.html:5 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 msgid "Engine stats" msgstr "Estatísticas do motor de busca" #: searx/templates/courgette/result_templates/images.html:4 #: searx/templates/default/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 msgid "original context" msgstr "contexto original" @@ -360,11 +429,11 @@ msgstr "Clique na lupa para realizar a busca" msgid "cached" msgstr "em cache" -#: searx/templates/oscar/base.html:74 +#: searx/templates/oscar/base.html:78 msgid "Powered by" msgstr "Criado por" -#: searx/templates/oscar/base.html:74 +#: searx/templates/oscar/base.html:78 msgid "a privacy-respecting, hackable metasearch engine" msgstr "Um metapesquisador hackeável que respeita a privacidade" @@ -377,46 +446,92 @@ msgid "Toggle navigation" msgstr "Mudar navegação" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:23 +#: searx/templates/oscar/preferences.html:25 msgid "General" msgstr "Geral" #: searx/templates/oscar/preferences.html:18 -#: searx/templates/oscar/preferences.html:124 +#: searx/templates/oscar/preferences.html:126 msgid "Engines" msgstr "Motores de busca" -#: searx/templates/oscar/preferences.html:43 +#: searx/templates/oscar/preferences.html:19 +#: searx/templates/oscar/preferences.html:187 +msgid "Plugins" +msgstr "" + +#: searx/templates/oscar/preferences.html:20 +#: searx/templates/oscar/preferences.html:210 +msgid "Cookies" +msgstr "" + +#: searx/templates/oscar/preferences.html:45 msgid "What language do you prefer for search?" msgstr "Que linguagem você prefere para a busca?" -#: searx/templates/oscar/preferences.html:54 +#: searx/templates/oscar/preferences.html:56 msgid "Change the language of the layout" msgstr "Mudar a linguagem da interface" -#: searx/templates/oscar/preferences.html:64 +#: searx/templates/oscar/preferences.html:66 msgid "Find stuff as you type" msgstr "Achar coisas enquanto você digita" -#: searx/templates/oscar/preferences.html:75 +#: searx/templates/oscar/preferences.html:77 msgid "Proxying image results through searx" msgstr "Filtrar resultados de imagens no searx" -#: searx/templates/oscar/preferences.html:84 +#: searx/templates/oscar/preferences.html:86 msgid "" "Change how forms are submited, <a " "href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" " rel=\"external\">learn more about request methods</a>" -msgstr "Muda o modo como formulários são enviados <a href=\"https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9todosn\" rel=\"external\">mais informações sobre os modos de pedido</a>" +msgstr "" +"Muda o modo como formulários são enviados <a " +"href=\"https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9todosn\"" +" rel=\"external\">mais informações sobre os modos de pedido</a>" -#: searx/templates/oscar/preferences.html:93 +#: searx/templates/oscar/preferences.html:95 msgid "Filter content" msgstr "Filtrar conteúdo" -#: searx/templates/oscar/preferences.html:103 +#: searx/templates/oscar/preferences.html:105 msgid "Change searx layout" msgstr "Mudar a interface do searx" +#: searx/templates/oscar/preferences.html:143 +#: searx/templates/oscar/preferences.html:151 +msgid "Shortcut" +msgstr "" + +#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/preferences.html:149 +msgid "Avg. time" +msgstr "" + +#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:148 +msgid "Max time" +msgstr "" + +#: searx/templates/oscar/preferences.html:213 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "" + +#: searx/templates/oscar/preferences.html:214 +msgid "With that list, you can assess searx transparency." +msgstr "" + +#: searx/templates/oscar/preferences.html:219 +msgid "Cookie name" +msgstr "" + +#: searx/templates/oscar/preferences.html:220 +msgid "Value" +msgstr "" + #: searx/templates/oscar/results.html:7 msgid "Search results" msgstr "Pesquisar" @@ -464,7 +579,17 @@ msgstr "Atenção!" #: searx/templates/oscar/messages/js_disabled.html:3 msgid "Please enable JavaScript to use full functionality of this site." -msgstr "Ative o Javascript para poder usar toda a funcionalidade deste site, por favor." +msgstr "" +"Ative o Javascript para poder usar toda a funcionalidade deste site, por " +"favor." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "" #: searx/templates/oscar/messages/no_data_available.html:4 msgid "There is currently no data available. " @@ -478,7 +603,9 @@ msgstr "Desculpe!" msgid "" "we didn't find any results. Please use another query or search in more " "categories." -msgstr "Nós não achamos nenhum resultado. Reformule sua busca ou procure em outras categorias, por favor." +msgstr "" +"Nós não achamos nenhum resultado. Reformule sua busca ou procure em " +"outras categorias, por favor." #: searx/templates/oscar/messages/save_settings_successfull.html:7 msgid "Well done!" @@ -564,6 +691,10 @@ msgstr "mostrar vídeo" msgid "hide video" msgstr "esconder vídeo" +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "" + #~ msgid "Localization" #~ msgstr "Localização" @@ -572,3 +703,4 @@ msgstr "esconder vídeo" #~ msgid "No" #~ msgstr "Não" + diff --git a/searx/translations/pt_BR/LC_MESSAGES/messages.mo b/searx/translations/pt_BR/LC_MESSAGES/messages.mo Binary files differnew file mode 100644 index 000000000..325b8f267 --- /dev/null +++ b/searx/translations/pt_BR/LC_MESSAGES/messages.mo diff --git a/searx/translations/pt_BR/LC_MESSAGES/messages.po b/searx/translations/pt_BR/LC_MESSAGES/messages.po new file mode 100644 index 000000000..8580ff528 --- /dev/null +++ b/searx/translations/pt_BR/LC_MESSAGES/messages.po @@ -0,0 +1,686 @@ +# Translations template for PROJECT. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# Neton Brício <fervelinux@gmail.com>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/asciimoo/searx/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.2.0\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: searx/webapp.py:114 +msgid "files" +msgstr "Arquivos" + +#: searx/webapp.py:115 +msgid "general" +msgstr "geral" + +#: searx/webapp.py:116 +msgid "music" +msgstr "áudio" + +#: searx/webapp.py:117 +msgid "social media" +msgstr "rede social" + +#: searx/webapp.py:118 +msgid "images" +msgstr "imagens" + +#: searx/webapp.py:119 +msgid "videos" +msgstr "vídeos" + +#: searx/webapp.py:120 +msgid "it" +msgstr "códigos" + +#: searx/webapp.py:121 +msgid "news" +msgstr "notícias" + +#: searx/webapp.py:122 +msgid "map" +msgstr "mapas" + +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 +msgid "{minutes} minute(s) ago" +msgstr "{minutos} minuto(s) atrás" + +#: searx/webapp.py:417 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "{horas} hora(s), {minutos} minuto(s) atrás" + +#: searx/engines/__init__.py:185 +msgid "Page loads (sec)" +msgstr "Carregamento da página (sec)" + +#: searx/engines/__init__.py:189 +msgid "Number of results" +msgstr "Número de resultados" + +#: searx/engines/__init__.py:193 +msgid "Scores" +msgstr "Pontuações" + +#: searx/engines/__init__.py:197 +msgid "Scores per result" +msgstr "Pontuações por resultado" + +#: searx/engines/__init__.py:201 +msgid "Errors" +msgstr "Erros" + +#: searx/plugins/https_rewrite.py:29 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "Redirecionar conexões HTTP para HTTPS, se possível" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "Pesquisar na categoria selecionada" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "Executar a busca imediatamente se a categoria está selecionada. Desativar para selecionar várias categorias. (Necessário JavaScript)" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "Exibe o seu IP se a consulta é \"ip\" e seu agente de usuário, se a consulta contém \"user agent\"." + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "Remover Tracker da url" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "Remover argumentos de url retornáveis" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/default/index.html:8 searx/templates/default/index.html:12 +#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "configurações" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3 +#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34 +#: searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "sobre" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/default/preferences.html:5 +#: searx/templates/oscar/preferences.html:12 +#: searx/templates/pix-art/preferences.html:5 +msgid "Preferences" +msgstr "Configurações" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/default/preferences.html:9 +#: searx/templates/oscar/preferences.html:36 +#: searx/templates/oscar/preferences.html:38 +msgid "Default categories" +msgstr "Categoria padrão" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/default/preferences.html:14 +#: searx/templates/oscar/preferences.html:44 +#: searx/templates/pix-art/preferences.html:9 +msgid "Search language" +msgstr "Idioma de busca" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/default/preferences.html:17 +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/pix-art/preferences.html:12 +msgid "Automatic" +msgstr "Automático" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/default/preferences.html:25 +#: searx/templates/oscar/preferences.html:55 +#: searx/templates/pix-art/preferences.html:20 +msgid "Interface language" +msgstr "Idioma da interface " + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/default/preferences.html:35 +#: searx/templates/oscar/preferences.html:65 +msgid "Autocomplete" +msgstr "Autocompletar" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/default/preferences.html:46 +#: searx/templates/oscar/preferences.html:76 +msgid "Image proxy" +msgstr "Imagem proxy" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/default/preferences.html:49 +#: searx/templates/oscar/preferences.html:80 +msgid "Enabled" +msgstr "Habilitado " + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/default/preferences.html:50 +#: searx/templates/oscar/preferences.html:81 +msgid "Disabled" +msgstr "Desabilitado" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/default/preferences.html:55 +#: searx/templates/oscar/preferences.html:85 +#: searx/templates/pix-art/preferences.html:30 +msgid "Method" +msgstr "Método" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/default/preferences.html:64 +#: searx/templates/oscar/preferences.html:94 +#: searx/templates/oscar/preferences.html:144 +#: searx/templates/oscar/preferences.html:150 +msgid "SafeSearch" +msgstr "Busca Segura" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/default/preferences.html:67 +#: searx/templates/oscar/preferences.html:98 +msgid "Strict" +msgstr "Forte" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/default/preferences.html:68 +#: searx/templates/oscar/preferences.html:99 +msgid "Moderate" +msgstr "Moderado" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/default/preferences.html:69 +#: searx/templates/oscar/preferences.html:100 +msgid "None" +msgstr "Nenhum" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/default/preferences.html:74 +#: searx/templates/oscar/preferences.html:104 +#: searx/templates/pix-art/preferences.html:39 +msgid "Themes" +msgstr "Temas" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Cor" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Azul (padrão)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Violeta" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Verde" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "Ciano" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Laranja" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Vermelho" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/default/preferences.html:84 +#: searx/templates/pix-art/preferences.html:49 +msgid "Currently used search engines" +msgstr "Serviço de busca usado atualmente" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/default/preferences.html:88 +#: searx/templates/oscar/preferences.html:142 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/pix-art/preferences.html:53 +msgid "Engine name" +msgstr "Nome do serviço" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/default/preferences.html:89 +msgid "Category" +msgstr "Categoria" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:101 +#: searx/templates/oscar/macros.html:71 +#: searx/templates/oscar/preferences.html:141 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +msgid "Allow" +msgstr "Ativo" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/default/preferences.html:90 +#: searx/templates/default/preferences.html:102 +#: searx/templates/oscar/macros.html:70 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "Bloqueado" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/default/preferences.html:110 +#: searx/templates/oscar/preferences.html:235 +#: searx/templates/pix-art/preferences.html:73 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "Essas configurações são armazenadas em seus cookies, nos não armazenamos nenhum dado a seu respeito." + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/default/preferences.html:112 +#: searx/templates/oscar/preferences.html:237 +#: searx/templates/pix-art/preferences.html:75 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "Estes cookies servem ao seu único propósito, nós não usamos esses cookies para rastreá-lo." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/default/preferences.html:115 +#: searx/templates/oscar/preferences.html:240 +#: searx/templates/pix-art/preferences.html:78 +msgid "save" +msgstr "salvar" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/default/preferences.html:116 +#: searx/templates/oscar/preferences.html:242 +msgid "Reset defaults" +msgstr "Redefinir configurações" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/default/preferences.html:117 +#: searx/templates/oscar/preferences.html:241 +#: searx/templates/pix-art/preferences.html:79 +msgid "back" +msgstr "voltar" + +#: searx/templates/courgette/results.html:12 +#: 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:17 +#: searx/templates/oscar/results.html:115 +msgid "Download results" +msgstr "Resultados para download" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/default/results.html:35 +msgid "Answers" +msgstr "Perguntas" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/default/results.html:43 +#: searx/templates/oscar/results.html:90 +msgid "Suggestions" +msgstr "Sugestões" + +#: 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:81 +#: searx/templates/default/results.html:92 +#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71 +msgid "next page" +msgstr "Próxima página" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 +msgid "Search for..." +msgstr "Buscar por..." + +#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +msgid "Engine stats" +msgstr "Estatísticas de busca" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/default/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "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 "Semeador" + +#: 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 "Link magnético" + +#: 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 "Arquivo torrent" + +#: searx/templates/default/categories.html:8 +msgid "Click on the magnifier to perform search" +msgstr "Clique na lupa para executar a busca" + +#: searx/templates/default/result_templates/code.html:3 +#: searx/templates/default/result_templates/default.html:3 +#: searx/templates/default/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:20 +msgid "cached" +msgstr "em cache" + +#: searx/templates/oscar/base.html:78 +msgid "Powered by" +msgstr "Distribuído por" + +#: searx/templates/oscar/base.html:78 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "um mecanismo de metabusca que respeita a sua privacidade" + +#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33 +msgid "home" +msgstr "Início" + +#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24 +msgid "Toggle navigation" +msgstr "Alternar navegação" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:25 +msgid "General" +msgstr "Geral" + +#: searx/templates/oscar/preferences.html:18 +#: searx/templates/oscar/preferences.html:126 +msgid "Engines" +msgstr "Buscadores" + +#: searx/templates/oscar/preferences.html:19 +#: searx/templates/oscar/preferences.html:187 +msgid "Plugins" +msgstr "Complementos" + +#: searx/templates/oscar/preferences.html:20 +#: searx/templates/oscar/preferences.html:210 +msgid "Cookies" +msgstr "Cookies" + +#: searx/templates/oscar/preferences.html:45 +msgid "What language do you prefer for search?" +msgstr "Qual idioma padrão para pesquisar?" + +#: searx/templates/oscar/preferences.html:56 +msgid "Change the language of the layout" +msgstr "Alterar o idioma da interface" + +#: searx/templates/oscar/preferences.html:66 +msgid "Find stuff as you type" +msgstr "Exibir sugestões enquanto você digita" + +#: searx/templates/oscar/preferences.html:77 +msgid "Proxying image results through searx" +msgstr "Usar proxy para resultado de imagens exibidas através do searx" + +#: searx/templates/oscar/preferences.html:86 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "Alterar o modo como os formulários são submetidos<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">ganhar desempenho sobre métodos de solicitação</a>" + +#: searx/templates/oscar/preferences.html:95 +msgid "Filter content" +msgstr "Filtrar conteúdo" + +#: searx/templates/oscar/preferences.html:105 +msgid "Change searx layout" +msgstr "Alterar interface do searx" + +#: searx/templates/oscar/preferences.html:143 +#: searx/templates/oscar/preferences.html:151 +msgid "Shortcut" +msgstr "Atalhos" + +#: searx/templates/oscar/preferences.html:145 +#: searx/templates/oscar/preferences.html:149 +msgid "Avg. time" +msgstr "Avg.tempo" + +#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:148 +msgid "Max time" +msgstr "Tempo máximo" + +#: searx/templates/oscar/preferences.html:213 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "Esta é a lista de cookies que searx está armazenando em seu computador." + +#: searx/templates/oscar/preferences.html:214 +msgid "With that list, you can assess searx transparency." +msgstr "Com essa lista, você pode avaliar a transparência do searx." + +#: searx/templates/oscar/preferences.html:219 +msgid "Cookie name" +msgstr "Nome do cookie" + +#: searx/templates/oscar/preferences.html:220 +msgid "Value" +msgstr "Valor" + +#: searx/templates/oscar/results.html:7 +msgid "Search results" +msgstr "Procurar resultados" + +#: searx/templates/oscar/results.html:105 +msgid "Links" +msgstr "Links" + +#: searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:11 +msgid "Start search" +msgstr "Iniciar busca" + +#: searx/templates/oscar/search_full.html:15 +msgid "Show search filters" +msgstr "Mostrar filtros de busca" + +#: searx/templates/oscar/search_full.html:15 +msgid "Hide search filters" +msgstr "Ocultar filtros de busca" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "estatísticas" + +#: 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 "Fechar" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "Atenção!" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "Parece que você está usando searx primeira vez." + +#: searx/templates/oscar/messages/js_disabled.html:2 +msgid "Warning!" +msgstr "Aviso!" + +#: searx/templates/oscar/messages/js_disabled.html:3 +msgid "Please enable JavaScript to use full functionality of this site." +msgstr "Você deve ativar o JavaScript para usar todas as funcionalidades deste site." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "Informação" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "Atualmente, não há cookies definidos" + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "Atualmente, não há dados disponíveis." + +#: searx/templates/oscar/messages/no_results.html:7 +msgid "Sorry!" +msgstr "Desculpe!" + +#: 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 "Não encontramos nenhum resultado. Utilize outra consulta ou pesquisa em mais categorias." + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "Muito bem!" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "Configurações salvas com sucesso" + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "Oh não!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "Algo deu errado." + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "show media" +msgstr "exibir mídia" + +#: searx/templates/oscar/result_templates/default.html:7 +msgid "hide media" +msgstr "ocultar mídia" + +#: searx/templates/oscar/result_templates/images.html:23 +msgid "Get image" +msgstr "Obter imagem" + +#: searx/templates/oscar/result_templates/images.html:24 +msgid "View source" +msgstr "Ver código-fonte" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "show map" +msgstr "exibir mapas" + +#: searx/templates/oscar/result_templates/map.html:7 +msgid "hide map" +msgstr "ocultar mapas" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "show details" +msgstr "Exibir detalhes" + +#: searx/templates/oscar/result_templates/map.html:11 +msgid "hide details" +msgstr "ocultar detalhes" + +#: searx/templates/oscar/result_templates/torrent.html:7 +msgid "Filesize" +msgstr "Tamanho do arquivo" + +#: searx/templates/oscar/result_templates/torrent.html:9 +msgid "Bytes" +msgstr "Bytes" + +#: searx/templates/oscar/result_templates/torrent.html:10 +msgid "kiB" +msgstr "kiB" + +#: searx/templates/oscar/result_templates/torrent.html:11 +msgid "MiB" +msgstr "MiB" + +#: searx/templates/oscar/result_templates/torrent.html:12 +msgid "GiB" +msgstr "GiB" + +#: searx/templates/oscar/result_templates/torrent.html:13 +msgid "TiB" +msgstr "TiB" + +#: searx/templates/oscar/result_templates/torrent.html:15 +msgid "Number of Files" +msgstr "Número de Arquivos" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "show video" +msgstr "exibir vídeo" + +#: searx/templates/oscar/result_templates/videos.html:7 +msgid "hide video" +msgstr "ocultar vídeo" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "Mostrar mais ..." diff --git a/searx/translations/ro/LC_MESSAGES/messages.mo b/searx/translations/ro/LC_MESSAGES/messages.mo Binary files differindex 13731ff92..25cbf25a8 100644 --- a/searx/translations/ro/LC_MESSAGES/messages.mo +++ b/searx/translations/ro/LC_MESSAGES/messages.mo diff --git a/searx/translations/ro/LC_MESSAGES/messages.po b/searx/translations/ro/LC_MESSAGES/messages.po index 58041d5bd..9abe0fb9f 100644 --- a/searx/translations/ro/LC_MESSAGES/messages.po +++ b/searx/translations/ro/LC_MESSAGES/messages.po @@ -1,5 +1,5 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 09:45+0000\n" -"Last-Translator: pointhi\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" "Language-Team: Romanian (http://www.transifex.com/asciimoo/searx/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" @@ -55,11 +55,15 @@ msgstr "știri" msgid "map" msgstr "hartă" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes} minut(e) în urmă" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} oră(e), {minutes} minut(e) în urmă" @@ -278,7 +282,7 @@ msgstr "Categorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -290,7 +294,7 @@ msgstr "Permite" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/ru/LC_MESSAGES/messages.mo b/searx/translations/ru/LC_MESSAGES/messages.mo Binary files differindex ebaa142ac..b3777d074 100644 --- a/searx/translations/ru/LC_MESSAGES/messages.mo +++ b/searx/translations/ru/LC_MESSAGES/messages.mo diff --git a/searx/translations/ru/LC_MESSAGES/messages.po b/searx/translations/ru/LC_MESSAGES/messages.po index f9f36674b..2319625d5 100644 --- a/searx/translations/ru/LC_MESSAGES/messages.po +++ b/searx/translations/ru/LC_MESSAGES/messages.po @@ -1,5 +1,5 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: @@ -9,14 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 09:45+0000\n" -"Last-Translator: pointhi\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" "Language-Team: Russian (http://www.transifex.com/asciimoo/searx/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" @@ -56,11 +56,15 @@ msgstr "новости" msgid "map" msgstr "карты" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes} минут назад" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} час, {minutes} минут назад" @@ -279,7 +283,7 @@ msgstr "Категория" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -291,7 +295,7 @@ msgstr "Разрешить" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/tr/LC_MESSAGES/messages.mo b/searx/translations/tr/LC_MESSAGES/messages.mo Binary files differindex deacd6c8d..7b785fa9a 100644 --- a/searx/translations/tr/LC_MESSAGES/messages.mo +++ b/searx/translations/tr/LC_MESSAGES/messages.mo diff --git a/searx/translations/tr/LC_MESSAGES/messages.po b/searx/translations/tr/LC_MESSAGES/messages.po index 62678c095..eb9fe8fa4 100644 --- a/searx/translations/tr/LC_MESSAGES/messages.po +++ b/searx/translations/tr/LC_MESSAGES/messages.po @@ -1,5 +1,5 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: @@ -9,14 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-24 09:45+0000\n" -"Last-Translator: pointhi\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 15:06+0000\n" +"Last-Translator: Thomas Pointhuber\n" "Language-Team: Turkish (http://www.transifex.com/asciimoo/searx/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -56,11 +56,15 @@ msgstr "haberler" msgid "map" msgstr "harita" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes} dakika() önce" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} saat(), {minutes} dakika() önce" @@ -279,7 +283,7 @@ msgstr "Türü" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -291,7 +295,7 @@ msgstr "İzin ver" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" diff --git a/searx/translations/zh_CN/LC_MESSAGES/messages.mo b/searx/translations/zh_CN/LC_MESSAGES/messages.mo Binary files differindex 64101a5a6..0cd5edd96 100644 --- a/searx/translations/zh_CN/LC_MESSAGES/messages.mo +++ b/searx/translations/zh_CN/LC_MESSAGES/messages.mo diff --git a/searx/translations/zh_CN/LC_MESSAGES/messages.po b/searx/translations/zh_CN/LC_MESSAGES/messages.po index 666b781da..c7903563c 100644 --- a/searx/translations/zh_CN/LC_MESSAGES/messages.po +++ b/searx/translations/zh_CN/LC_MESSAGES/messages.po @@ -1,21 +1,22 @@ # Translations template for PROJECT. -# Copyright (C) 2015 ORGANIZATION +# Copyright (C) 2016 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # # Translators: -# 文科, 2015 +# wenke, 2015 +# wenke, 2015-2016 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2015-08-24 11:44+0200\n" -"PO-Revision-Date: 2015-08-29 07:35+0000\n" -"Last-Translator: 文科\n" +"POT-Creation-Date: 2016-01-21 16:05+0100\n" +"PO-Revision-Date: 2016-01-21 16:25+0000\n" +"Last-Translator: wenke\n" "Language-Team: Chinese (China) (http://www.transifex.com/asciimoo/searx/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Generated-By: Babel 2.2.0\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -55,11 +56,15 @@ msgstr "新闻" msgid "map" msgstr "地图" -#: searx/webapp.py:414 +#: searx/webapp.py:123 +msgid "science" +msgstr "学术" + +#: searx/webapp.py:415 msgid "{minutes} minute(s) ago" msgstr "{minutes}分钟之前" -#: searx/webapp.py:416 +#: searx/webapp.py:417 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours}小时{minutes}分钟之前" @@ -167,7 +172,7 @@ msgstr "界面语言" #: searx/templates/default/preferences.html:35 #: searx/templates/oscar/preferences.html:65 msgid "Autocomplete" -msgstr "自动完成" +msgstr "自动补全" #: searx/templates/courgette/preferences.html:45 #: searx/templates/default/preferences.html:46 @@ -267,7 +272,7 @@ msgstr "目前使用的搜索引擎" #: searx/templates/oscar/preferences.html:152 #: searx/templates/pix-art/preferences.html:53 msgid "Engine name" -msgstr "搜索引擎名字" +msgstr "搜索引擎名称" #: searx/templates/courgette/preferences.html:101 #: searx/templates/default/preferences.html:89 @@ -278,7 +283,7 @@ msgstr "类别" #: searx/templates/courgette/preferences.html:113 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:101 -#: searx/templates/oscar/macros.html:67 +#: searx/templates/oscar/macros.html:71 #: searx/templates/oscar/preferences.html:141 #: searx/templates/oscar/preferences.html:153 #: searx/templates/pix-art/preferences.html:54 @@ -290,11 +295,11 @@ msgstr "允许" #: searx/templates/courgette/preferences.html:114 #: searx/templates/default/preferences.html:90 #: searx/templates/default/preferences.html:102 -#: searx/templates/oscar/macros.html:66 +#: searx/templates/oscar/macros.html:70 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:65 msgid "Block" -msgstr "屏蔽" +msgstr "阻止" #: searx/templates/courgette/preferences.html:122 #: searx/templates/default/preferences.html:110 @@ -332,7 +337,7 @@ msgstr "恢复默认" #: searx/templates/oscar/preferences.html:241 #: searx/templates/pix-art/preferences.html:79 msgid "back" -msgstr "后" +msgstr "返回" #: searx/templates/courgette/results.html:12 #: searx/templates/default/results.html:13 @@ -391,13 +396,13 @@ msgstr "原始上下文" #: searx/templates/default/result_templates/torrent.html:11 #: searx/templates/oscar/result_templates/torrent.html:6 msgid "Seeder" -msgstr "" +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 "" +msgstr "Leecher" #: searx/templates/courgette/result_templates/torrent.html:9 #: searx/templates/default/result_templates/torrent.html:9 @@ -468,7 +473,7 @@ msgstr "改变界面语言" #: searx/templates/oscar/preferences.html:66 msgid "Find stuff as you type" -msgstr "找到你的搜索的东西" +msgstr "自动补全搜索字词" #: searx/templates/oscar/preferences.html:77 msgid "Proxying image results through searx" @@ -479,7 +484,7 @@ 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://zh.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">关于请求方法了解更多</a>" +msgstr "更改请求方法,<a href=\"http://zh.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">了解更多请求方法相关</a>" #: searx/templates/oscar/preferences.html:95 msgid "Filter content" diff --git a/searx/webapp.py b/searx/webapp.py index 794b7ea8c..665eeef24 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -119,7 +119,8 @@ _category_names = (gettext('files'), gettext('videos'), gettext('it'), gettext('news'), - gettext('map')) + gettext('map'), + gettext('science')) outgoing_proxies = settings['outgoing'].get('proxies', None) @@ -327,6 +328,8 @@ def render(template_name, override_theme=None, **kwargs): kwargs['cookies'] = request.cookies + kwargs['instance_name'] = settings['general']['instance_name'] + kwargs['scripts'] = set() for plugin in request.user_plugins: for script in plugin.js_dependencies: @@ -746,7 +749,8 @@ def opensearch(): ret = render('opensearch.xml', opensearch_method=method, - host=get_base_url()) + host=get_base_url(), + urljoin=urljoin) resp = Response(response=ret, status=200, @@ -17,6 +17,8 @@ def read(*rnames): long_description = read('README.rst') +requirements = map(str.strip, open('requirements.txt').readlines()) +dev_requirements = map(str.strip, open('requirements-dev.txt').readlines()) setup( name='searx', @@ -38,35 +40,9 @@ setup( license='GNU Affero General Public License', packages=find_packages('.'), zip_safe=False, - install_requires=[ - 'flask', - 'flask-babel', - 'requests', - 'lxml', - 'pyyaml', - 'pygments', - 'setuptools', - 'python-dateutil', - 'pyopenssl', - 'ndg-httpsclient', - 'pyasn1', - 'pyasn1-modules', - 'certifi' - ], + install_requires=requirements, extras_require={ - 'test': [ - 'coverage', - 'flake8', - 'mock', - 'plone.testing', - 'robotframework', - 'robotframework-debuglibrary', - 'robotframework-httplibrary', - 'robotframework-selenium2library', - 'robotsuite', - 'unittest2', - 'zope.testrunner', - ] + 'test': dev_requirements }, entry_points={ 'console_scripts': [ @@ -86,6 +62,9 @@ setup( 'static/*/*/*/*/*.*', 'templates/*/*.*', 'templates/*/*/*.*', + 'tests/*', + 'tests/*/*', + 'tests/*/*/*', 'translations/*/*/*' ], }, diff --git a/searx/tests/__init__.py b/tests/__init__.py index e69de29bb..e69de29bb 100644 --- a/searx/tests/__init__.py +++ b/tests/__init__.py diff --git a/searx/tests/engines/__init__.py b/tests/robot/__init__.py index e69de29bb..e69de29bb 100644 --- a/searx/tests/engines/__init__.py +++ b/tests/robot/__init__.py diff --git a/searx/tests/robot/test_basic.robot b/tests/robot/test_basic.robot index 1b8e78fff..1b8e78fff 100644 --- a/searx/tests/robot/test_basic.robot +++ b/tests/robot/test_basic.robot diff --git a/searx/tests/test_robot.py b/tests/test_robot.py index b48153fe4..b48153fe4 100644 --- a/searx/tests/test_robot.py +++ b/tests/test_robot.py diff --git a/searx/tests/robot/__init__.py b/tests/unit/__init__.py index e69de29bb..e69de29bb 100644 --- a/searx/tests/robot/__init__.py +++ b/tests/unit/__init__.py diff --git a/tests/unit/engines/__init__.py b/tests/unit/engines/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/unit/engines/__init__.py diff --git a/searx/tests/engines/test_bing.py b/tests/unit/engines/test_bing.py index bce221440..bce221440 100644 --- a/searx/tests/engines/test_bing.py +++ b/tests/unit/engines/test_bing.py diff --git a/searx/tests/engines/test_bing_images.py b/tests/unit/engines/test_bing_images.py index f42dff7e8..88538d8fa 100644 --- a/searx/tests/engines/test_bing_images.py +++ b/tests/unit/engines/test_bing_images.py @@ -39,28 +39,25 @@ class TestBingImagesEngine(SearxTestCase): html = """ <div class="dg_u" style="width:178px;height:144px;left:17px;top:0px"> - <a href="#" ihk="HN.608003696942779811" - m="{ns:"images",k:"5045", -mid:"659EB92C317974F34517A1CCAEBEF76A578E08DEE", -surl:"http://www.page.url/",imgurl:"http://test.url/Test%20Query.jpg", -oh:"238",tft:"0",oi:"http://www.image.url/Images/Test%20Query.jpg"}" - mid="59EB92C317974F34517A1CCAEBEF76A578E08DEE" onclick="return false;" - t1="Test Query" t2="650 x 517 · 31 kB · jpeg" t3="www.short.url" h="ID=images,5045.1"> - <img src="https://tse4.mm.bing.net/th?id=HN.608003696942779811&o=4&pid=1.7" - style="height:144px;" width="178" height="144"/> + <a href="/images/search?q=south&view=detailv2&&id=7E92863981CCFB89FBDD55205C742DFDA3290CF6&selectedIndex=9&ccid=vzvIfv5u&simid=608055786735667000&thid=OIP.Mbf3bc87efe6e0e476be8cc34bf6cd80eH0" ihk="OIP.Mbf3bc87efe6e0e476be8cc34bf6cd80eH0" t1="South Carolina" t2="747 x 589 · 29 kB · gif" t3="www.digital-topo-maps.com/county-map/south-carolina.shtml" hh="236" hw="300" m='{ns:"images",k:"5117",mid:"7E92863981CCFB89FBDD55205C742DFDA3290CF6",md5:"bf3bc87efe6e0e476be8cc34bf6cd80e",surl:"http://www.digital-topo-maps.com/county-map/south-carolina.shtml",imgurl:"http://www.digital-topo-maps.com/county-map/south-carolina-county-map.gif",tid:"OIP.Mbf3bc87efe6e0e476be8cc34bf6cd80eH0",ow:"480",docid:"608055786735667000",oh:"378",tft:"45"}' mid="7E92863981CCFB89FBDD55205C742DFDA3290CF6" h="ID=images,5117.1"> + <img class="img_hid" src2="https://tse4.mm.bing.net/th?id=OIP.Mbf3bc87efe6e0e476be8cc34bf6cd80eH0&w=210&h=154&c=7&rs=1&qlt=90&o=4&pid=1.1" style="width:210px;height:154px;" width="210" height="154"> </a> + </div> - """ + """ # noqa html = html.replace('\r\n', '').replace('\n', '').replace('\r', '') response = mock.Mock(text=html) results = bing_images.response(response) self.assertEqual(type(results), list) self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Test Query') - self.assertEqual(results[0]['url'], 'http://www.page.url/') + self.assertEqual(results[0]['title'], 'South Carolina') + self.assertEqual(results[0]['url'], + 'http://www.digital-topo-maps.com/county-map/south-carolina.shtml') self.assertEqual(results[0]['content'], '') - self.assertEqual(results[0]['thumbnail_src'], 'https://www.bing.com/th?id=HN.608003696942779811') - self.assertEqual(results[0]['img_src'], 'http://test.url/Test%20Query.jpg') + self.assertEqual(results[0]['thumbnail_src'], + 'https://www.bing.com/th?id=OIP.Mbf3bc87efe6e0e476be8cc34bf6cd80eH0') + self.assertEqual(results[0]['img_src'], + 'http://www.digital-topo-maps.com/county-map/south-carolina-county-map.gif') html = """ <a href="#" ihk="HN.608003696942779811" diff --git a/searx/tests/engines/test_bing_news.py b/tests/unit/engines/test_bing_news.py index a64d59b7b..a64d59b7b 100644 --- a/searx/tests/engines/test_bing_news.py +++ b/tests/unit/engines/test_bing_news.py diff --git a/searx/tests/engines/test_blekko_images.py b/tests/unit/engines/test_blekko_images.py index beb0853e3..beb0853e3 100644 --- a/searx/tests/engines/test_blekko_images.py +++ b/tests/unit/engines/test_blekko_images.py diff --git a/searx/tests/engines/test_btdigg.py b/tests/unit/engines/test_btdigg.py index 2721f4e7c..2721f4e7c 100644 --- a/searx/tests/engines/test_btdigg.py +++ b/tests/unit/engines/test_btdigg.py diff --git a/searx/tests/engines/test_currency_convert.py b/tests/unit/engines/test_currency_convert.py index 84ec3b742..84ec3b742 100644 --- a/searx/tests/engines/test_currency_convert.py +++ b/tests/unit/engines/test_currency_convert.py diff --git a/searx/tests/engines/test_dailymotion.py b/tests/unit/engines/test_dailymotion.py index 4c31ff5d5..4c31ff5d5 100644 --- a/searx/tests/engines/test_dailymotion.py +++ b/tests/unit/engines/test_dailymotion.py diff --git a/searx/tests/engines/test_deezer.py b/tests/unit/engines/test_deezer.py index ad09d2a2c..ad09d2a2c 100644 --- a/searx/tests/engines/test_deezer.py +++ b/tests/unit/engines/test_deezer.py diff --git a/searx/tests/engines/test_deviantart.py b/tests/unit/engines/test_deviantart.py index 78a391334..78a391334 100644 --- a/searx/tests/engines/test_deviantart.py +++ b/tests/unit/engines/test_deviantart.py diff --git a/searx/tests/engines/test_digg.py b/tests/unit/engines/test_digg.py index 6e7c9cc99..6e7c9cc99 100644 --- a/searx/tests/engines/test_digg.py +++ b/tests/unit/engines/test_digg.py diff --git a/searx/tests/engines/test_duckduckgo.py b/tests/unit/engines/test_duckduckgo.py index 14cd9cd87..14cd9cd87 100644 --- a/searx/tests/engines/test_duckduckgo.py +++ b/tests/unit/engines/test_duckduckgo.py diff --git a/searx/tests/engines/test_duckduckgo_definitions.py b/tests/unit/engines/test_duckduckgo_definitions.py index 71c84235c..71c84235c 100644 --- a/searx/tests/engines/test_duckduckgo_definitions.py +++ b/tests/unit/engines/test_duckduckgo_definitions.py diff --git a/searx/tests/engines/test_dummy.py b/tests/unit/engines/test_dummy.py index 9399beaaf..9399beaaf 100644 --- a/searx/tests/engines/test_dummy.py +++ b/tests/unit/engines/test_dummy.py diff --git a/searx/tests/engines/test_faroo.py b/tests/unit/engines/test_faroo.py index acebdda86..acebdda86 100644 --- a/searx/tests/engines/test_faroo.py +++ b/tests/unit/engines/test_faroo.py diff --git a/searx/tests/engines/test_flickr.py b/tests/unit/engines/test_flickr.py index 8b39e922f..8b39e922f 100644 --- a/searx/tests/engines/test_flickr.py +++ b/tests/unit/engines/test_flickr.py diff --git a/searx/tests/engines/test_flickr_noapi.py b/tests/unit/engines/test_flickr_noapi.py index 3b337a2d8..3b337a2d8 100644 --- a/searx/tests/engines/test_flickr_noapi.py +++ b/tests/unit/engines/test_flickr_noapi.py diff --git a/tests/unit/engines/test_frinkiac.py b/tests/unit/engines/test_frinkiac.py new file mode 100644 index 000000000..f3eb021d2 --- /dev/null +++ b/tests/unit/engines/test_frinkiac.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +from collections import defaultdict +import mock +from json import dumps +from searx.engines import frinkiac +from searx.testing import SearxTestCase + + +class TestFrinkiacEngine(SearxTestCase): + + def test_request(self): + query = 'test_query' + request_dict = defaultdict(dict) + params = frinkiac.request(query, request_dict) + self.assertTrue('url' in params) + + def test_response(self): + self.assertRaises(AttributeError, frinkiac.response, None) + self.assertRaises(AttributeError, frinkiac.response, []) + self.assertRaises(AttributeError, frinkiac.response, '') + self.assertRaises(AttributeError, frinkiac.response, '[]') + + text = """ +[{"Id":770931, + "Episode":"S06E18", + "Timestamp":534616, + "Filename":""}, + {"Id":1657080, + "Episode":"S12E14", + "Timestamp":910868, + "Filename":""}, + {"Id":1943753, + "Episode":"S14E21", + "Timestamp":773439, + "Filename":""}, + {"Id":107835, + "Episode":"S02E03", + "Timestamp":531709, + "Filename":""}] + """ + + response = mock.Mock(text=text) + results = frinkiac.response(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 4) + self.assertEqual(results[0]['title'], u'S06E18') + self.assertEqual(results[0]['url'], 'https://frinkiac.com/?p=caption&e=S06E18&t=534616') + self.assertEqual(results[0]['thumbnail_src'], 'https://frinkiac.com/img/S06E18/534616/medium.jpg') + self.assertEqual(results[0]['img_src'], 'https://frinkiac.com/img/S06E18/534616.jpg') diff --git a/tests/unit/engines/test_gigablast.py b/tests/unit/engines/test_gigablast.py new file mode 100644 index 000000000..cb96f3cd1 --- /dev/null +++ b/tests/unit/engines/test_gigablast.py @@ -0,0 +1,85 @@ +from collections import defaultdict +import mock +from searx.engines import gigablast +from searx.testing import SearxTestCase + + +class TestGigablastEngine(SearxTestCase): + + def test_request(self): + query = 'test_query' + dicto = defaultdict(dict) + dicto['pageno'] = 0 + dicto['language'] = 'all' + params = gigablast.request(query, dicto) + self.assertTrue('url' in params) + self.assertTrue(query in params['url']) + self.assertTrue('gigablast.com' in params['url']) + + def test_response(self): + self.assertRaises(AttributeError, gigablast.response, None) + self.assertRaises(AttributeError, gigablast.response, []) + self.assertRaises(AttributeError, gigablast.response, '') + self.assertRaises(AttributeError, gigablast.response, '[]') + + response = mock.Mock(text='{"results": []}') + self.assertEqual(gigablast.response(response), []) + + json = """{"results": [ + { + "title":"South by Southwest 2016", + "dmozEntry":{ + "dmozCatId":1041152, + "directCatId":1, + "dmozCatStr":"Top: Regional: North America: United States", + "dmozTitle":"South by Southwest (SXSW)", + "dmozSum":"Annual music, film, and interactive conference.", + "dmozAnchor":"" + }, + "dmozEntry":{ + "dmozCatId":763945, + "directCatId":1, + "dmozCatStr":"Top: Regional: North America: United States", + "dmozTitle":"South by Southwest (SXSW)", + "dmozSum":"", + "dmozAnchor":"www.sxsw.com" + }, + "dmozEntry":{ + "dmozCatId":761446, + "directCatId":1, + "dmozCatStr":"Top: Regional: North America: United States", + "dmozTitle":"South by Southwest (SXSW)", + "dmozSum":"Music, film, and interactive conference and festival.", + "dmozAnchor":"" + }, + "indirectDmozCatId":1041152, + "indirectDmozCatId":763945, + "indirectDmozCatId":761446, + "contentType":"html", + "sum":"This should be the content.", + "url":"www.sxsw.com", + "hopCount":0, + "size":" 102k", + "sizeInBytes":104306, + "bytesUsedToComputeSummary":70000, + "docId":269411794364, + "docScore":586571136.000000, + "summaryGenTimeMS":12, + "summaryTagdbLookupTimeMS":0, + "summaryTitleRecLoadTimeMS":1, + "site":"www.sxsw.com", + "spidered":1452203608, + "firstIndexedDateUTC":1444167123, + "contentHash32":2170650347, + "language":"English", + "langAbbr":"en" + } +]} + """ + response = mock.Mock(text=json) + results = gigablast.response(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 1) + self.assertEqual(results[0]['title'], 'South by Southwest 2016') + self.assertEqual(results[0]['url'], 'www.sxsw.com') + self.assertEqual(results[0]['content'], 'This should be the content.') diff --git a/searx/tests/engines/test_github.py b/tests/unit/engines/test_github.py index 460be8c3d..460be8c3d 100644 --- a/searx/tests/engines/test_github.py +++ b/tests/unit/engines/test_github.py diff --git a/searx/tests/engines/test_google.py b/tests/unit/engines/test_google.py index 04f12b830..37a83cae3 100644 --- a/searx/tests/engines/test_google.py +++ b/tests/unit/engines/test_google.py @@ -40,7 +40,7 @@ class TestGoogleEngine(SearxTestCase): self.assertEqual(google.response(response), []) html = """ - <li class="g"> + <div class="g"> <h3 class="r"> <a href="http://this.should.be.the.link/"> <b>This</b> is <b>the</b> title @@ -94,35 +94,35 @@ class TestGoogleEngine(SearxTestCase): </a> </div> </div> - </li> - <li class="g"> + </div> + <div class="g"> <h3 class="r"> <a href="http://www.google.com/images?q=toto"> <b>This</b> </a> </h3> - </li> - <li class="g"> + </div> + <div class="g"> <h3 class="r"> <a href="http://www.google.com/search?q=toto"> <b>This</b> is </a> </h3> - </li> - <li class="g"> + </div> + <div class="g"> <h3 class="r"> <a href="€"> <b>This</b> is <b>the</b> </a> </h3> - </li> - <li class="g"> + </div> + <div class="g"> <h3 class="r"> <a href="/url?q=url"> <b>This</b> is <b>the</b> </a> </h3> - </li> + </div> <p class="_Bmc" style="margin:3px 8px"> <a href="/search?num=20&safe=off&q=t&revid=1754833769&sa=X&ei=-&ved="> suggestion <b>title</b> diff --git a/searx/tests/engines/test_google_images.py b/tests/unit/engines/test_google_images.py index 876d0af1e..876d0af1e 100644 --- a/searx/tests/engines/test_google_images.py +++ b/tests/unit/engines/test_google_images.py diff --git a/searx/tests/engines/test_google_news.py b/tests/unit/engines/test_google_news.py index 31d674121..31d674121 100644 --- a/searx/tests/engines/test_google_news.py +++ b/tests/unit/engines/test_google_news.py diff --git a/searx/tests/engines/test_kickass.py b/tests/unit/engines/test_kickass.py index 4cfcaa63c..4cfcaa63c 100644 --- a/searx/tests/engines/test_kickass.py +++ b/tests/unit/engines/test_kickass.py diff --git a/searx/tests/engines/test_mediawiki.py b/tests/unit/engines/test_mediawiki.py index 63f7da6b2..63f7da6b2 100644 --- a/searx/tests/engines/test_mediawiki.py +++ b/tests/unit/engines/test_mediawiki.py diff --git a/searx/tests/engines/test_mixcloud.py b/tests/unit/engines/test_mixcloud.py index a2ea47cf9..a2ea47cf9 100644 --- a/searx/tests/engines/test_mixcloud.py +++ b/tests/unit/engines/test_mixcloud.py diff --git a/searx/tests/engines/test_openstreetmap.py b/tests/unit/engines/test_openstreetmap.py index 7b7783f04..7b7783f04 100644 --- a/searx/tests/engines/test_openstreetmap.py +++ b/tests/unit/engines/test_openstreetmap.py diff --git a/searx/tests/engines/test_photon.py b/tests/unit/engines/test_photon.py index 734497884..734497884 100644 --- a/searx/tests/engines/test_photon.py +++ b/tests/unit/engines/test_photon.py diff --git a/searx/tests/engines/test_piratebay.py b/tests/unit/engines/test_piratebay.py index 5699380be..5699380be 100644 --- a/searx/tests/engines/test_piratebay.py +++ b/tests/unit/engines/test_piratebay.py diff --git a/searx/tests/engines/test_qwant.py b/tests/unit/engines/test_qwant.py index 7d79d13d8..7d79d13d8 100644 --- a/searx/tests/engines/test_qwant.py +++ b/tests/unit/engines/test_qwant.py diff --git a/searx/tests/engines/test_searchcode_code.py b/tests/unit/engines/test_searchcode_code.py index c0ac2025c..c0ac2025c 100644 --- a/searx/tests/engines/test_searchcode_code.py +++ b/tests/unit/engines/test_searchcode_code.py diff --git a/searx/tests/engines/test_searchcode_doc.py b/tests/unit/engines/test_searchcode_doc.py index b9dcf380b..b9dcf380b 100644 --- a/searx/tests/engines/test_searchcode_doc.py +++ b/tests/unit/engines/test_searchcode_doc.py diff --git a/searx/tests/engines/test_soundcloud.py b/tests/unit/engines/test_soundcloud.py index 85495dc57..85495dc57 100644 --- a/searx/tests/engines/test_soundcloud.py +++ b/tests/unit/engines/test_soundcloud.py diff --git a/searx/tests/engines/test_spotify.py b/tests/unit/engines/test_spotify.py index fd274abbd..fd274abbd 100644 --- a/searx/tests/engines/test_spotify.py +++ b/tests/unit/engines/test_spotify.py diff --git a/searx/tests/engines/test_stackoverflow.py b/tests/unit/engines/test_stackoverflow.py index 18a1ff4bd..18a1ff4bd 100644 --- a/searx/tests/engines/test_stackoverflow.py +++ b/tests/unit/engines/test_stackoverflow.py diff --git a/searx/tests/engines/test_startpage.py b/tests/unit/engines/test_startpage.py index 9a1a09bc7..9a1a09bc7 100644 --- a/searx/tests/engines/test_startpage.py +++ b/tests/unit/engines/test_startpage.py diff --git a/searx/tests/engines/test_subtitleseeker.py b/tests/unit/engines/test_subtitleseeker.py index a641601b2..a641601b2 100644 --- a/searx/tests/engines/test_subtitleseeker.py +++ b/tests/unit/engines/test_subtitleseeker.py diff --git a/searx/tests/engines/test_swisscows.py b/tests/unit/engines/test_swisscows.py index 3b4ce7b0f..3b4ce7b0f 100644 --- a/searx/tests/engines/test_swisscows.py +++ b/tests/unit/engines/test_swisscows.py diff --git a/searx/tests/engines/test_twitter.py b/tests/unit/engines/test_twitter.py index b444b48ee..b444b48ee 100644 --- a/searx/tests/engines/test_twitter.py +++ b/tests/unit/engines/test_twitter.py diff --git a/searx/tests/engines/test_vimeo.py b/tests/unit/engines/test_vimeo.py index 50b1cb563..50b1cb563 100644 --- a/searx/tests/engines/test_vimeo.py +++ b/tests/unit/engines/test_vimeo.py diff --git a/tests/unit/engines/test_wolframalpha_api.py b/tests/unit/engines/test_wolframalpha_api.py new file mode 100644 index 000000000..76404e192 --- /dev/null +++ b/tests/unit/engines/test_wolframalpha_api.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- +from collections import defaultdict +import mock +from requests import Request +from searx.engines import wolframalpha_api +from searx.testing import SearxTestCase + + +class TestWolframAlphaAPIEngine(SearxTestCase): + + def test_request(self): + query = 'test_query' + dicto = defaultdict(dict) + params = wolframalpha_api.request(query, dicto) + + # TODO: test api_key + self.assertIn('url', params) + self.assertIn('https://api.wolframalpha.com/v2/query?', params['url']) + self.assertIn(query, params['url']) + self.assertEqual('https://www.wolframalpha.com/input/?i=test_query', params['headers']['Referer']) + + def test_replace_pua_chars(self): + self.assertEqual('i', wolframalpha_api.replace_pua_chars(u'\uf74e')) + + def test_response(self): + self.assertRaises(AttributeError, wolframalpha_api.response, None) + self.assertRaises(AttributeError, wolframalpha_api.response, []) + self.assertRaises(AttributeError, wolframalpha_api.response, '') + self.assertRaises(AttributeError, wolframalpha_api.response, '[]') + + referer_url = 'referer_url' + request = Request(headers={'Referer': referer_url}) + + # test failure + xml = '''<?xml version='1.0' encoding='UTF-8'?> + <queryresult success='false' error='false' /> + ''' + response = mock.Mock(content=xml) + self.assertEqual(wolframalpha_api.response(response), []) + + # test basic case + xml = """<?xml version='1.0' encoding='UTF-8'?> + <queryresult success='true' + error='false' + numpods='3' + datatypes='Math' + id='queryresult_id' + host='http://www4c.wolframalpha.com' + related='related_url' + version='2.6'> + <pod title='Input' + scanner='Identity' + id='Input' + numsubpods='1'> + <subpod title=''> + <img src='input_img_src.gif' + alt='input_img_alt' + title='input_img_title' /> + <plaintext>input_plaintext</plaintext> + </subpod> + </pod> + <pod title='Result' + scanner='Simplification' + id='Result' + numsubpods='1' + primary='true'> + <subpod title=''> + <img src='result_img_src.gif' + alt='result_img_alt' + title='result_img_title' /> + <plaintext>result_plaintext</plaintext> + </subpod> + </pod> + <pod title='Manipulatives illustration' + scanner='Arithmetic' + id='Illustration' + numsubpods='1'> + <subpod title=''> + <img src='illustration_img_src.gif' + alt='illustration_img_alt' /> + <plaintext>illustration_plaintext</plaintext> + </subpod> + </pod> + </queryresult> + """ + response = mock.Mock(content=xml, request=request) + results = wolframalpha_api.response(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 2) + self.assertEqual('input_plaintext', results[0]['infobox']) + + self.assertEqual(len(results[0]['attributes']), 3) + self.assertEqual('Input', results[0]['attributes'][0]['label']) + self.assertEqual('input_plaintext', results[0]['attributes'][0]['value']) + self.assertEqual('Result', results[0]['attributes'][1]['label']) + self.assertEqual('result_plaintext', results[0]['attributes'][1]['value']) + self.assertEqual('Manipulatives illustration', results[0]['attributes'][2]['label']) + self.assertEqual('illustration_img_src.gif', results[0]['attributes'][2]['image']['src']) + self.assertEqual('illustration_img_alt', results[0]['attributes'][2]['image']['alt']) + + self.assertEqual(len(results[0]['urls']), 1) + + self.assertEqual(referer_url, results[0]['urls'][0]['url']) + self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) + self.assertEqual(referer_url, results[1]['url']) + self.assertEqual('Wolfram|Alpha', results[1]['title']) + + # test calc + xml = """<?xml version='1.0' encoding='UTF-8'?> + <queryresult success='true' + error='false' + numpods='2' + datatypes='' + parsetimedout='false' + id='queryresult_id' + host='http://www5b.wolframalpha.com' + related='related_url' + version='2.6' > + <pod title='Indefinite integral' + scanner='Integral' + id='IndefiniteIntegral' + error='false' + numsubpods='1' + primary='true'> + <subpod title=''> + <img src='integral_image.gif' + alt='integral_img_alt' + title='integral_img_title' /> + <plaintext>integral_plaintext</plaintext> + </subpod> + </pod> + <pod title='Plot of the integral' + scanner='Integral' + id='Plot' + error='false' + numsubpods='1'> + <subpod title=''> + <img src='plot.gif' + alt='plot_alt' + title='' /> + <plaintext></plaintext> + </subpod> + </pod> + </queryresult> + """ + response = mock.Mock(content=xml, request=request) + results = wolframalpha_api.response(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 2) + self.assertEqual('integral_plaintext', results[0]['infobox']) + + self.assertEqual(len(results[0]['attributes']), 2) + self.assertEqual('Indefinite integral', results[0]['attributes'][0]['label']) + self.assertEqual('integral_plaintext', results[0]['attributes'][0]['value']) + self.assertEqual('Plot of the integral', results[0]['attributes'][1]['label']) + self.assertEqual('plot.gif', results[0]['attributes'][1]['image']['src']) + self.assertEqual('plot_alt', results[0]['attributes'][1]['image']['alt']) + + self.assertEqual(len(results[0]['urls']), 1) + + self.assertEqual(referer_url, results[0]['urls'][0]['url']) + self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) + self.assertEqual(referer_url, results[1]['url']) + self.assertEqual('Wolfram|Alpha', results[1]['title']) diff --git a/tests/unit/engines/test_wolframalpha_noapi.py b/tests/unit/engines/test_wolframalpha_noapi.py new file mode 100644 index 000000000..068c1be79 --- /dev/null +++ b/tests/unit/engines/test_wolframalpha_noapi.py @@ -0,0 +1,222 @@ +# -*- coding: utf-8 -*- +from collections import defaultdict +import mock +from requests import Request +from searx.engines import wolframalpha_noapi +from searx.testing import SearxTestCase + + +class TestWolframAlphaNoAPIEngine(SearxTestCase): + + def test_request(self): + query = 'test_query' + dicto = defaultdict(dict) + params = wolframalpha_noapi.request(query, dicto) + + self.assertIn('url', params) + self.assertIn('https://www.wolframalpha.com/input/json.jsp', params['url']) + self.assertIn(query, params['url']) + self.assertEqual('https://www.wolframalpha.com/input/?i=test_query', params['headers']['Referer']) + + def test_response(self): + self.assertRaises(AttributeError, wolframalpha_noapi.response, None) + self.assertRaises(AttributeError, wolframalpha_noapi.response, []) + self.assertRaises(AttributeError, wolframalpha_noapi.response, '') + self.assertRaises(AttributeError, wolframalpha_noapi.response, '[]') + + referer_url = 'referer_url' + request = Request(headers={'Referer': referer_url}) + + # test failure + json = ''' + {"queryresult" : { + "success" : false, + "error" : false, + "numpods" : 0, + "id" : "", + "host" : "https:\/\/www5a.wolframalpha.com", + "didyoumeans" : {} + }} + ''' + response = mock.Mock(text=json, request=request) + self.assertEqual(wolframalpha_noapi.response(response), []) + + # test basic case + json = ''' + {"queryresult" : { + "success" : true, + "error" : false, + "numpods" : 6, + "datatypes" : "Math", + "id" : "queryresult_id", + "host" : "https:\/\/www5b.wolframalpha.com", + "related" : "related_url", + "version" : "2.6", + "pods" : [ + { + "title" : "Input", + "scanners" : [ + "Identity" + ], + "id" : "Input", + "error" : false, + "numsubpods" : 1, + "subpods" : [ + { + "title" : "", + "img" : { + "src" : "input_img_src.gif", + "alt" : "input_img_alt", + "title" : "input_img_title" + }, + "plaintext" : "input_plaintext", + "minput" : "input_minput" + } + ] + }, + { + "title" : "Result", + "scanners" : [ + "Simplification" + ], + "id" : "Result", + "error" : false, + "numsubpods" : 1, + "primary" : true, + "subpods" : [ + { + "title" : "", + "img" : { + "src" : "result_img_src.gif", + "alt" : "result_img_alt", + "title" : "result_img_title" + }, + "plaintext" : "result_plaintext", + "moutput" : "result_moutput" + } + ] + }, + { + "title" : "Manipulatives illustration", + "scanners" : [ + "Arithmetic" + ], + "id" : "Illustration", + "error" : false, + "numsubpods" : 1, + "subpods" : [ + { + "title" : "", + "CDFcontent" : "Resizeable", + "img" : { + "src" : "illustration_img_src.gif", + "alt" : "illustration_img_alt", + "title" : "illustration_img_title" + }, + "plaintext" : "illustration_img_plaintext" + } + ] + } + ] + }} + ''' + response = mock.Mock(text=json, request=request) + results = wolframalpha_noapi.response(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 2) + self.assertEqual('input_plaintext', results[0]['infobox']) + + self.assertEqual(len(results[0]['attributes']), 3) + self.assertEqual('Input', results[0]['attributes'][0]['label']) + self.assertEqual('input_plaintext', results[0]['attributes'][0]['value']) + self.assertEqual('Result', results[0]['attributes'][1]['label']) + self.assertEqual('result_plaintext', results[0]['attributes'][1]['value']) + self.assertEqual('Manipulatives illustration', results[0]['attributes'][2]['label']) + self.assertEqual('illustration_img_src.gif', results[0]['attributes'][2]['image']['src']) + self.assertEqual('illustration_img_alt', results[0]['attributes'][2]['image']['alt']) + + self.assertEqual(len(results[0]['urls']), 1) + + self.assertEqual(referer_url, results[0]['urls'][0]['url']) + self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) + self.assertEqual(referer_url, results[1]['url']) + self.assertEqual('Wolfram|Alpha', results[1]['title']) + + # test calc + json = """ + {"queryresult" : { + "success" : true, + "error" : false, + "numpods" : 2, + "datatypes" : "", + "id" : "queryresult_id", + "host" : "https:\/\/www4b.wolframalpha.com", + "related" : "related_url", + "version" : "2.6", + "pods" : [ + { + "title" : "Indefinite integral", + "scanners" : [ + "Integral" + ], + "id" : "IndefiniteIntegral", + "error" : false, + "numsubpods" : 1, + "primary" : true, + "subpods" : [ + { + "title" : "", + "img" : { + "src" : "integral_img_src.gif", + "alt" : "integral_img_alt", + "title" : "integral_img_title" + }, + "plaintext" : "integral_plaintext", + "minput" : "integral_minput", + "moutput" : "integral_moutput" + } + ] + }, + { + "title" : "Plot of the integral", + "scanners" : [ + "Integral" + ], + "id" : "Plot", + "error" : false, + "numsubpods" : 1, + "subpods" : [ + { + "title" : "", + "img" : { + "src" : "plot.gif", + "alt" : "plot_alt", + "title" : "plot_title" + }, + "plaintext" : "", + "minput" : "plot_minput" + } + ] + } + ] + }} + """ + response = mock.Mock(text=json, request=request) + results = wolframalpha_noapi.response(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 2) + self.assertEqual('integral_plaintext', results[0]['infobox']) + + self.assertEqual(len(results[0]['attributes']), 2) + self.assertEqual('Indefinite integral', results[0]['attributes'][0]['label']) + self.assertEqual('integral_plaintext', results[0]['attributes'][0]['value']) + self.assertEqual('Plot of the integral', results[0]['attributes'][1]['label']) + self.assertEqual('plot.gif', results[0]['attributes'][1]['image']['src']) + self.assertEqual('plot_alt', results[0]['attributes'][1]['image']['alt']) + + self.assertEqual(len(results[0]['urls']), 1) + + self.assertEqual(referer_url, results[0]['urls'][0]['url']) + self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) + self.assertEqual(referer_url, results[1]['url']) + self.assertEqual('Wolfram|Alpha', results[1]['title']) diff --git a/searx/tests/engines/test_www1x.py b/tests/unit/engines/test_www1x.py index 9df8de6bf..9df8de6bf 100644 --- a/searx/tests/engines/test_www1x.py +++ b/tests/unit/engines/test_www1x.py diff --git a/searx/tests/engines/test_www500px.py b/tests/unit/engines/test_www500px.py index 8df15b945..8df15b945 100644 --- a/searx/tests/engines/test_www500px.py +++ b/tests/unit/engines/test_www500px.py diff --git a/searx/tests/engines/test_yacy.py b/tests/unit/engines/test_yacy.py index f49532cf4..f49532cf4 100644 --- a/searx/tests/engines/test_yacy.py +++ b/tests/unit/engines/test_yacy.py diff --git a/searx/tests/engines/test_yahoo.py b/tests/unit/engines/test_yahoo.py index 11ef9db22..11ef9db22 100644 --- a/searx/tests/engines/test_yahoo.py +++ b/tests/unit/engines/test_yahoo.py diff --git a/searx/tests/engines/test_yahoo_news.py b/tests/unit/engines/test_yahoo_news.py index 4d7fc0a10..4d7fc0a10 100644 --- a/searx/tests/engines/test_yahoo_news.py +++ b/tests/unit/engines/test_yahoo_news.py diff --git a/searx/tests/engines/test_youtube_api.py b/tests/unit/engines/test_youtube_api.py index 0d4d478c3..0d4d478c3 100644 --- a/searx/tests/engines/test_youtube_api.py +++ b/tests/unit/engines/test_youtube_api.py diff --git a/searx/tests/engines/test_youtube_noapi.py b/tests/unit/engines/test_youtube_noapi.py index 9fa8fd20e..9fa8fd20e 100644 --- a/searx/tests/engines/test_youtube_noapi.py +++ b/tests/unit/engines/test_youtube_noapi.py diff --git a/searx/tests/test_plugins.py b/tests/unit/test_plugins.py index 98d39ec14..98d39ec14 100644 --- a/searx/tests/test_plugins.py +++ b/tests/unit/test_plugins.py diff --git a/searx/tests/test_results.py b/tests/unit/test_results.py index 274b5b37a..274b5b37a 100644 --- a/searx/tests/test_results.py +++ b/tests/unit/test_results.py diff --git a/searx/tests/test_search.py b/tests/unit/test_search.py index af5fffd8b..af5fffd8b 100644 --- a/searx/tests/test_search.py +++ b/tests/unit/test_search.py diff --git a/searx/tests/test_utils.py b/tests/unit/test_utils.py index 04480791d..04480791d 100644 --- a/searx/tests/test_utils.py +++ b/tests/unit/test_utils.py diff --git a/searx/tests/test_webapp.py b/tests/unit/test_webapp.py index 071c01df3..071c01df3 100644 --- a/searx/tests/test_webapp.py +++ b/tests/unit/test_webapp.py diff --git a/versions.cfg b/versions.cfg deleted file mode 100644 index 6aad7a744..000000000 --- a/versions.cfg +++ /dev/null @@ -1,122 +0,0 @@ -[versions] -Babel = 1.3 -Flask = 0.10.1 -Flask-Babel = 0.9 -Jinja2 = 2.7.3 -MarkupSafe = 0.23 -Pygments = 2.0.2 -WebOb = 1.4.1 -WebTest = 2.0.18 -Werkzeug = 0.10.4 -collective.recipe.omelette = 0.16 -coverage = 3.7.1 -decorator = 3.4.2 -docutils = 0.12 -flake8 = 2.4.1 -itsdangerous = 0.24 -mccabe = 0.3.1 -mock = 1.0.1 -pep8 = 1.5.7 -plone.testing = 4.0.13 -pyflakes = 0.8.1 -pytz = 2015.4 -pyyaml = 3.11 -requests = 2.7.0 -robotframework-debuglibrary = 0.3 -robotframework-httplibrary = 0.4.2 -robotframework-selenium2library = 1.7.1 -robotsuite = 1.6.1 -selenium = 2.46.0 -speaklater = 1.3 -unittest2 = 1.0.1 -waitress = 0.8.9 -zc.recipe.testrunner = 2.0.0 -pyopenssl = 0.15.1 -ndg-httpsclient = 0.4.0 -pyasn1 = 0.1.8 -pyasn1-modules = 0.0.6 -certifi = 2015.04.28 - -cffi = 1.1.2 -cryptography = 0.9.1 - -# Required by: -# robotsuite==1.6.1 -# searx==0.7.0 -lxml = 3.4.4 - -# Required by: -# searx==0.7.0 -python-dateutil = 2.4.2 - -# Required by: -# searx==0.7.0 -# zope.exceptions==4.0.7 -# zope.interface==4.1.2 -# zope.testrunner==4.4.9 -setuptools = 18.0.1 - -# Required by: -# WebTest==2.0.18 -beautifulsoup4 = 4.3.2 - -# Required by: -# cryptography==0.9.1 -enum34 = 1.0.4 - -# Required by: -# cryptography==0.9.1 -idna = 2.0 - -# Required by: -# cryptography==0.9.1 -ipaddress = 1.0.7 - -# Required by: -# robotframework-httplibrary==0.4.2 -jsonpatch = 1.11 - -# Required by: -# robotframework-httplibrary==0.4.2 -jsonpointer = 1.9 - -# Required by: -# traceback2==1.4.0 -linecache2 = 1.0.0 - -# Required by: -# cffi==1.1.2 -pycparser = 2.12 - -# Required by: -# robotframework-httplibrary==0.4.2 -robotframework = 2.8.7 - -# Required by: -# robotsuite==1.6.1 -# zope.testrunner==4.4.9 -six = 1.9.0 - -# Required by: -# unittest2==1.0.1 -traceback2 = 1.4.0 - -# Required by: -# collective.recipe.omelette==0.16 -zc.recipe.egg = 2.0.1 - -# Required by: -# zope.testrunner==4.4.9 -zope.exceptions = 4.0.7 - -# Required by: -# zope.testrunner==4.4.9 -zope.interface = 4.1.2 - -# Required by: -# plone.testing==4.0.13 -zope.testing = 4.2.0 - -# Required by: -# zc.recipe.testrunner==2.0.0 -zope.testrunner = 4.4.9 |