Merge branch 'master' into engines-with-token
* master: (92 commits) [pylint] engines/currency_convert.py Update searx.data - update_firefox_version.py Update searx.data - update_ahmia_blacklist.py Update searx.data - update_currencies.py Update searx.data - update_wikidata_units.py [build] /static [simple] improve margin of #linkto_preferences [fix] engines description - currency_convert.py [simple] add aria-label to preferences link [simple] link preferences on /about and /stats [mod] tineye engine: minor changes [fix] 1x engine [build] /static [simple] introduce page_with_header.html template [mod] tineye engine: set engine_type to 'online_url_search' [enh] implement a OnlineUrlSearchProcessor Fix setup.py help folder [build] /static [fix] simple theme: /preferences: cookies table is LTR [mod] remove deprecate code ...
This commit is contained in:
commit
018abdcd80
@ -32,6 +32,10 @@
|
|||||||
;; Jedi, flycheck & other python stuff should use the 'python-shell-interpreter'
|
;; Jedi, flycheck & other python stuff should use the 'python-shell-interpreter'
|
||||||
;; from the local py3 environment.
|
;; from the local py3 environment.
|
||||||
;;
|
;;
|
||||||
|
;; For pyright support you need to install::
|
||||||
|
;;
|
||||||
|
;; M-x package-install lsp-pyright
|
||||||
|
;;
|
||||||
;; Other useful jedi stuff you might add to your ~/.emacs::
|
;; Other useful jedi stuff you might add to your ~/.emacs::
|
||||||
;;
|
;;
|
||||||
;; (global-set-key [f6] 'flycheck-mode)
|
;; (global-set-key [f6] 'flycheck-mode)
|
||||||
@ -99,12 +103,19 @@
|
|||||||
;; use nodejs from the (local) NVM environment (see nvm-dir)
|
;; use nodejs from the (local) NVM environment (see nvm-dir)
|
||||||
(nvm-use-for-buffer)
|
(nvm-use-for-buffer)
|
||||||
(setq-local js-indent-level 2)
|
(setq-local js-indent-level 2)
|
||||||
|
;; flycheck should use the eslint checker from developer tools
|
||||||
|
(setq-local flycheck-javascript-eslint-executable
|
||||||
|
(expand-file-name "node_modules/.bin/eslint" prj-root))
|
||||||
|
|
||||||
(flycheck-mode)
|
(flycheck-mode)
|
||||||
))))
|
))))
|
||||||
|
|
||||||
(python-mode
|
(python-mode
|
||||||
. ((eval . (progn
|
. ((eval . (progn
|
||||||
|
;; use nodejs from the (local) NVM environment (see nvm-dir)
|
||||||
|
(nvm-use-for-buffer)
|
||||||
|
(if (featurep 'lsp-pyright)
|
||||||
|
(lsp))
|
||||||
(setq-local python-environment-virtualenv
|
(setq-local python-environment-virtualenv
|
||||||
(list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root)
|
(list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root)
|
||||||
;;"--system-site-packages"
|
;;"--system-site-packages"
|
||||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,4 +1,4 @@
|
|||||||
# to sync with .dockerignore
|
# to sync with .dockerignore & pyrightconfig.json
|
||||||
|
|
||||||
*.pyc
|
*.pyc
|
||||||
*/*.pyc
|
*/*.pyc
|
||||||
@ -16,3 +16,6 @@ dist/
|
|||||||
local/
|
local/
|
||||||
gh-pages/
|
gh-pages/
|
||||||
*.egg-info/
|
*.egg-info/
|
||||||
|
|
||||||
|
/package-lock.json
|
||||||
|
/node_modules/
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
# -*- coding: utf-8; mode: conf-unix -*-
|
|
||||||
#
|
|
||||||
# Developement tools pre-installed in NVM's node installation [1]
|
|
||||||
#
|
|
||||||
# [1] https://github.com/nvm-sh/nvm#default-global-packages-from-file-while-installing
|
|
||||||
|
|
||||||
eslint
|
|
||||||
|
|
6
Makefile
6
Makefile
@ -50,8 +50,8 @@ search.checker.%: install
|
|||||||
$(Q)./manage pyenv.cmd searx-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))"
|
$(Q)./manage pyenv.cmd searx-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))"
|
||||||
|
|
||||||
PHONY += test ci.test test.shell
|
PHONY += test ci.test test.shell
|
||||||
ci.test: test.yamllint test.black test.pylint test.unit test.robot
|
ci.test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst
|
||||||
test: test.yamllint test.black test.pylint test.unit test.robot test.shell
|
test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst test.shell
|
||||||
test.shell:
|
test.shell:
|
||||||
$(Q)shellcheck -x -s dash \
|
$(Q)shellcheck -x -s dash \
|
||||||
dockerfiles/docker-entrypoint.sh
|
dockerfiles/docker-entrypoint.sh
|
||||||
@ -86,7 +86,7 @@ MANAGE += py.build py.clean
|
|||||||
MANAGE += pyenv pyenv.install pyenv.uninstall
|
MANAGE += pyenv pyenv.install pyenv.uninstall
|
||||||
MANAGE += pypi.upload pypi.upload.test
|
MANAGE += pypi.upload pypi.upload.test
|
||||||
MANAGE += format.python
|
MANAGE += format.python
|
||||||
MANAGE += test.yamllint test.pylint test.black test.unit test.coverage test.robot test.clean
|
MANAGE += test.yamllint test.pylint test.pyright test.black test.unit test.coverage test.robot test.rst test.clean
|
||||||
MANAGE += themes.all themes.oscar themes.simple themes.simple.test pygments.less
|
MANAGE += themes.all themes.oscar themes.simple themes.simple.test pygments.less
|
||||||
MANAGE += static.build.commit static.build.drop static.build.restore
|
MANAGE += static.build.commit static.build.drop static.build.restore
|
||||||
MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs
|
MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs
|
||||||
|
91
README.rst
91
README.rst
@ -1,11 +1,21 @@
|
|||||||
.. SPDX-License-Identifier: AGPL-3.0-or-later
|
.. SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
.. figure:: https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng.svg
|
.. figure:: https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng.svg
|
||||||
:target: https://docs.searxng.org/
|
:target: https://docs.searxng.org/
|
||||||
:alt: SearXNG
|
:alt: SearXNG
|
||||||
:width: 100%
|
:width: 100%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Privacy-respecting, hackable `metasearch engine`_
|
||||||
|
|
||||||
|
If you are looking for running instances, ready to use, then visit searx.space_.
|
||||||
|
Otherwise jump to the user_, admin_ and developer_ handbooks you will find on
|
||||||
|
our homepage_.
|
||||||
|
|
||||||
|SearXNG install|
|
|SearXNG install|
|
||||||
|SearXNG homepage|
|
|SearXNG homepage|
|
||||||
|SearXNG wiki|
|
|SearXNG wiki|
|
||||||
@ -15,16 +25,11 @@
|
|||||||
|weblate|
|
|weblate|
|
||||||
|SearXNG logo|
|
|SearXNG logo|
|
||||||
|
|
||||||
Privacy-respecting, hackable `metasearch engine`_
|
----
|
||||||
|
|
||||||
If you are looking for running instances, ready to use, then visit searx.space_.
|
|
||||||
|
|
||||||
Otherwise jump to the user_, admin_ and developer_ handbooks you will find on
|
|
||||||
our homepage_.
|
|
||||||
|
|
||||||
.. _searx.space: https://searx.space
|
.. _searx.space: https://searx.space
|
||||||
.. _user: https://docs.searxng.org/user
|
.. _user: https://docs.searxng.org/user
|
||||||
.. _admin: https://docs.searxng.org/user/admin
|
.. _admin: https://docs.searxng.org/admin
|
||||||
.. _developer: https://docs.searxng.org/dev
|
.. _developer: https://docs.searxng.org/dev
|
||||||
.. _homepage: https://docs.searxng.org/
|
.. _homepage: https://docs.searxng.org/
|
||||||
.. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine
|
.. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine
|
||||||
@ -58,26 +63,76 @@ our homepage_.
|
|||||||
:target: https://weblate.bubu1.eu/projects/searxng/
|
:target: https://weblate.bubu1.eu/projects/searxng/
|
||||||
|
|
||||||
|
|
||||||
SearXNG is a fork of `searx`_:
|
Contact
|
||||||
|
=======
|
||||||
|
|
||||||
* `the differences with searx <https://github.com/searxng/searxng/issues/46>`_
|
Come join us if you have questions or just want to chat about SearXNG.
|
||||||
* `exhaustive changelog <https://github.com/searxng/searxng/wiki/Changes-from-version-1.0.0>`_
|
|
||||||
|
Matrix
|
||||||
|
`#searxng:matrix.org <https://matrix.to/#/#searxng:matrix.org>`_
|
||||||
|
|
||||||
|
IRC
|
||||||
|
`#searxng on libera.chat <https://web.libera.chat/?channel=#searxng>`_
|
||||||
|
which is bridged to Matrix.
|
||||||
|
|
||||||
|
|
||||||
|
Differences to searx
|
||||||
|
====================
|
||||||
|
|
||||||
|
SearXNG is a fork of `searx`_. Here are some of the changes:
|
||||||
|
|
||||||
.. _searx: https://github.com/searx/searx
|
.. _searx: https://github.com/searx/searx
|
||||||
|
|
||||||
|
|
||||||
Contact
|
User experience
|
||||||
"""""""
|
---------------
|
||||||
|
|
||||||
Matrix: `#searxng:matrix.org <https://matrix.to/#/#searxng:matrix.org>`_
|
- Huge update of the simple theme:
|
||||||
|
|
||||||
|
* usable on desktop, tablet and mobile
|
||||||
|
* light and dark versions (you can choose in the preferences)
|
||||||
|
* support right-to-left languages
|
||||||
|
|
||||||
|
- the translations are up to date, you can contribute on `Weblate`_
|
||||||
|
- the preferences page has been updated:
|
||||||
|
|
||||||
|
* you can see which engines are reliable or not
|
||||||
|
* engines are grouped inside each tab
|
||||||
|
* each engine has a description
|
||||||
|
|
||||||
|
- it is easier to report a bug of an engine
|
||||||
|
- but you can also disable the recording of the metrics on the server
|
||||||
|
|
||||||
|
|
||||||
|
Setup
|
||||||
|
-----
|
||||||
|
|
||||||
|
- the Docker image is now also built for ARM64 and ARM/v7 architectures
|
||||||
|
- you don't need `Morty`_ to proxy the images even on a public instance
|
||||||
|
- on the way to embed `Filtron`_ into SearXNG
|
||||||
|
- up to date installation scripts
|
||||||
|
|
||||||
|
|
||||||
|
Contributing is easier
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
- readable debug log
|
||||||
|
- contributions to the themes are made easier, check out our `Development
|
||||||
|
Quickstart`_ guide
|
||||||
|
- a lot of code cleanup and bug fixes
|
||||||
|
- the dependencies are up to date
|
||||||
|
|
||||||
|
.. _Morty: https://github.com/asciimoo/morty
|
||||||
|
.. _Filtron: https://github.com/searxng/filtron
|
||||||
|
.. _Weblate: https://weblate.bubu1.eu/projects/searxng/searxng/
|
||||||
|
.. _Development Quickstart: https://docs.searxng.org/dev/quickstart.html
|
||||||
|
|
||||||
IRC: `#searxng on libera.chat <https://web.libera.chat/?channel=#searxng>`_ which is bridged to Matrix.
|
|
||||||
|
|
||||||
|
|
||||||
Translations
|
Translations
|
||||||
""""""""""""
|
============
|
||||||
|
|
||||||
We need translators, suggestions are welcome at https://weblate.bubu1.eu/projects/searxng/searxng/
|
We need translators, suggestions are welcome at
|
||||||
|
https://weblate.bubu1.eu/projects/searxng/searxng/
|
||||||
|
|
||||||
.. figure:: https://weblate.bubu1.eu/widgets/searxng/-/multi-auto.svg
|
.. figure:: https://weblate.bubu1.eu/widgets/searxng/-/multi-auto.svg
|
||||||
:target: https://weblate.bubu1.eu/projects/searxng/
|
:target: https://weblate.bubu1.eu/projects/searxng/
|
||||||
|
10
SECURITY.md
Normal file
10
SECURITY.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
We love responsible reports of (potential) security issues in SearXNG.
|
||||||
|
|
||||||
|
You can contact us at security@searxng.org.
|
||||||
|
|
||||||
|
Be sure to provide as much information as possible and if found
|
||||||
|
also reproduction steps of the identified vulnerability. Also
|
||||||
|
add the specific URL of the project as well as code you found
|
||||||
|
the issue in to your report.
|
@ -136,12 +136,10 @@ find an example configuration below:
|
|||||||
MySQL
|
MySQL
|
||||||
-----
|
-----
|
||||||
|
|
||||||
.. _mysql-connector-python: https://pypi.org/project/mysql-connector-python
|
|
||||||
|
|
||||||
.. sidebar:: info
|
.. sidebar:: info
|
||||||
|
|
||||||
- :origin:`mysql_server.py <searx/engines/mysql_server.py>`
|
- :origin:`mysql_server.py <searx/engines/mysql_server.py>`
|
||||||
- ``pip install`` mysql-connector-python_
|
- ``pip install`` :pypi:`mysql-connector-python <mysql-connector-python>`
|
||||||
|
|
||||||
MySQL is said to be the most popular open source database. Before enabling MySQL
|
MySQL is said to be the most popular open source database. Before enabling MySQL
|
||||||
engine, you must install the package ``mysql-connector-python``.
|
engine, you must install the package ``mysql-connector-python``.
|
||||||
|
@ -12,6 +12,7 @@ Administrator documentation
|
|||||||
installation-nginx
|
installation-nginx
|
||||||
installation-apache
|
installation-apache
|
||||||
installation-docker
|
installation-docker
|
||||||
|
installation-switch2ng
|
||||||
update-searxng
|
update-searxng
|
||||||
engines/index
|
engines/index
|
||||||
api
|
api
|
||||||
|
75
docs/admin/installation-switch2ng.rst
Normal file
75
docs/admin/installation-switch2ng.rst
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
.. _installation switch2ng:
|
||||||
|
|
||||||
|
============================
|
||||||
|
Switch from searx to SearXNG
|
||||||
|
============================
|
||||||
|
|
||||||
|
.. sidebar:: info
|
||||||
|
|
||||||
|
- :pull:`456`
|
||||||
|
- :pull:`A comment about rolling release <446#issuecomment-954730358>`
|
||||||
|
|
||||||
|
.. contents:: Contents
|
||||||
|
:depth: 2
|
||||||
|
:local:
|
||||||
|
:backlinks: entry
|
||||||
|
|
||||||
|
If you have a searx installation on your sever and want to switch to SearXNG,
|
||||||
|
you need to uninstall searx first. If you have an old searx docker installation
|
||||||
|
replace your docker image / see :ref:`installation docker`.
|
||||||
|
|
||||||
|
If your searx instance was installed *"Step by step"* or by the *"Installation
|
||||||
|
scripts"*, you need to undo the installation procedure completely. If you have
|
||||||
|
morty & filtron installed, it is recommended to uninstall these services also.
|
||||||
|
In case of scripts, to uninstall use the scripts from the origin you installed
|
||||||
|
searx from.
|
||||||
|
|
||||||
|
If you have removed the old searx installation, clone from SearXNG and and start
|
||||||
|
with your installation procedure (e.g. :ref:`installation scripts`):
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
$ cd ~/Downloads
|
||||||
|
$ git clone https://github.com/searxng/searxng.git searxng
|
||||||
|
$ cd searxng
|
||||||
|
$ ...
|
||||||
|
|
||||||
|
``.config.sh``
|
||||||
|
==============
|
||||||
|
|
||||||
|
Please take into account; SearXNG has normalized ``.config.sh`` with
|
||||||
|
``settings.yml`` and some of the environment settings has been removed from or
|
||||||
|
renamed in the ``.config.sh``:
|
||||||
|
|
||||||
|
- :patch:`[mod] normalize .config.sh with settings.yml <f61c918d>`
|
||||||
|
- :patch:`[fix] ./utils/filtron.sh - FILTRON_TARGET from YAML settings <7196a9b5>`
|
||||||
|
- :patch:`SearXNG: SEARXNG_SETTINGS_PATH <253b8503>`
|
||||||
|
|
||||||
|
|
||||||
|
Check after Installation
|
||||||
|
========================
|
||||||
|
|
||||||
|
Once you have done your installation, you can run a SearXNG *check* procedure,
|
||||||
|
to see if there are some left overs. In this example there exists a *old*
|
||||||
|
``/etc/searx/settings.yml``::
|
||||||
|
|
||||||
|
$ sudo -H ./utils/searx.sh install check
|
||||||
|
|
||||||
|
============================
|
||||||
|
SearXNG (check installation)
|
||||||
|
============================
|
||||||
|
ERROR: settings.yml in /etc/searx/ is deprecated, move file to folder /etc/searxng/
|
||||||
|
INFO: SearXNG instance already installed at: /usr/local/searx/searx-src
|
||||||
|
...
|
||||||
|
INFO: Service account searx exists.
|
||||||
|
INFO: ~searx: python environment is available.
|
||||||
|
INFO: ~searx: SearXNG software is installed.
|
||||||
|
INFO: uWSGI app searxng.ini is enabled.
|
||||||
|
INFO searx : merge the default settings ( /usr/local/searx/searx-src/searx/settings.yml ) and the user setttings ( /etc/searxng/settings.yml )
|
||||||
|
INFO searx : max_request_timeout=None
|
||||||
|
|
||||||
|
|
||||||
|
To *check* the filtron & morty installations, use similar commands::
|
||||||
|
|
||||||
|
$ sudo -H /utils/filtron.sh install check
|
||||||
|
$ sudo -H /utils/morty.sh install check
|
@ -4,6 +4,10 @@
|
|||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
|
.. sidebar:: info
|
||||||
|
|
||||||
|
:ref:`installation switch2ng`
|
||||||
|
|
||||||
*You're spoilt for choice*, choose your preferred method of installation.
|
*You're spoilt for choice*, choose your preferred method of installation.
|
||||||
|
|
||||||
- :ref:`installation docker`
|
- :ref:`installation docker`
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
import sys, os
|
import sys, os
|
||||||
from pallets_sphinx_themes import ProjectLink
|
from pallets_sphinx_themes import ProjectLink
|
||||||
from flask import Flask
|
|
||||||
|
|
||||||
from searx import get_setting
|
from searx import get_setting
|
||||||
from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH
|
from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH
|
||||||
@ -42,12 +41,12 @@ import searx.engines
|
|||||||
import searx.plugins
|
import searx.plugins
|
||||||
import searx.webutils
|
import searx.webutils
|
||||||
|
|
||||||
# bypass a creepy check of the secret_key in searx.webapp
|
# import searx.webapp is needed to init the engines & plugins, to init a
|
||||||
|
# (empty) secret_key is needed.
|
||||||
searx.settings['server']['secret_key'] = ''
|
searx.settings['server']['secret_key'] = ''
|
||||||
from searx.webapp import application
|
import searx.webapp
|
||||||
|
|
||||||
searx.engines.load_engines(searx.settings['engines'])
|
searx.engines.load_engines(searx.settings['engines'])
|
||||||
searx.plugins.initialize(application)
|
|
||||||
|
|
||||||
jinja_contexts = {
|
jinja_contexts = {
|
||||||
'searx': {
|
'searx': {
|
||||||
|
@ -238,10 +238,10 @@ and ``test.robot``. You can run tests selective, e.g.::
|
|||||||
...
|
...
|
||||||
TEST test.sh OK
|
TEST test.sh OK
|
||||||
|
|
||||||
.. _make test.sh:
|
.. _make test.shell:
|
||||||
|
|
||||||
``make test.sh``
|
``make test.shell``
|
||||||
================
|
===================
|
||||||
|
|
||||||
:ref:`sh lint` / if you have changed some bash scripting run this test before
|
:ref:`sh lint` / if you have changed some bash scripting run this test before
|
||||||
commit.
|
commit.
|
||||||
|
9
docs/src/searx.engines.tineye.rst
Normal file
9
docs/src/searx.engines.tineye.rst
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.. _tineye engine:
|
||||||
|
|
||||||
|
======
|
||||||
|
Tineye
|
||||||
|
======
|
||||||
|
|
||||||
|
.. automodule:: searx.engines.tineye
|
||||||
|
:members:
|
||||||
|
|
35
manage
35
manage
@ -20,6 +20,8 @@ source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_go.sh"
|
|||||||
# shellcheck source=utils/lib_redis.sh
|
# shellcheck source=utils/lib_redis.sh
|
||||||
source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_redis.sh"
|
source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_redis.sh"
|
||||||
|
|
||||||
|
PATH="${REPO_ROOT}/node_modules/.bin:${PATH}"
|
||||||
|
|
||||||
# config
|
# config
|
||||||
|
|
||||||
PYOBJECTS="searx"
|
PYOBJECTS="searx"
|
||||||
@ -46,6 +48,10 @@ while IFS= read -r line; do
|
|||||||
YAMLLINT_FILES+=("$line")
|
YAMLLINT_FILES+=("$line")
|
||||||
done <<< "$(git ls-files './tests/*.yml' './searx/*.yml' './utils/templates/etc/searxng/*.yml')"
|
done <<< "$(git ls-files './tests/*.yml' './searx/*.yml' './utils/templates/etc/searxng/*.yml')"
|
||||||
|
|
||||||
|
RST_FILES=(
|
||||||
|
'README.rst'
|
||||||
|
)
|
||||||
|
|
||||||
PYLINT_SEARXNG_DISABLE_OPTION="\
|
PYLINT_SEARXNG_DISABLE_OPTION="\
|
||||||
I,C,R,\
|
I,C,R,\
|
||||||
W0105,W0212,W0511,W0603,W0613,W0621,W0702,W0703,W1401,\
|
W0105,W0212,W0511,W0603,W0613,W0621,W0702,W0703,W1401,\
|
||||||
@ -99,10 +105,12 @@ format.:
|
|||||||
test.:
|
test.:
|
||||||
yamllint : lint YAML files (YAMLLINT_FILES)
|
yamllint : lint YAML files (YAMLLINT_FILES)
|
||||||
pylint : lint PYLINT_FILES, searx/engines, searx & tests
|
pylint : lint PYLINT_FILES, searx/engines, searx & tests
|
||||||
|
pyright : static type check of python sources
|
||||||
black : check black code format
|
black : check black code format
|
||||||
unit : run unit tests
|
unit : run unit tests
|
||||||
coverage : run unit tests with coverage
|
coverage : run unit tests with coverage
|
||||||
robot : run robot test
|
robot : run robot test
|
||||||
|
rst : test .rst files incl. README.rst
|
||||||
clean : clean intermediate test stuff
|
clean : clean intermediate test stuff
|
||||||
themes.:
|
themes.:
|
||||||
all : build all themes
|
all : build all themes
|
||||||
@ -553,6 +561,12 @@ node.env() {
|
|||||||
dump_return $?
|
dump_return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
node.env.devtools() {
|
||||||
|
nodejs.ensure
|
||||||
|
build_msg INSTALL "package.json: developer and CI tools"
|
||||||
|
npm install
|
||||||
|
}
|
||||||
|
|
||||||
node.clean() {
|
node.clean() {
|
||||||
if ! required_commands npm 2>/dev/null; then
|
if ! required_commands npm 2>/dev/null; then
|
||||||
build_msg CLEAN "npm is not installed / ignore npm dependencies"
|
build_msg CLEAN "npm is not installed / ignore npm dependencies"
|
||||||
@ -677,6 +691,20 @@ test.pylint() {
|
|||||||
dump_return $?
|
dump_return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test.pyright() {
|
||||||
|
build_msg TEST "[pyright] static type check of python sources"
|
||||||
|
node.env.devtools
|
||||||
|
# We run Pyright in the virtual environment because Pyright
|
||||||
|
# executes "python" to determine the Python version.
|
||||||
|
build_msg TEST "[pyright] suppress warnings related to intentional monkey patching"
|
||||||
|
pyenv.cmd npx --no-install pyright -p pyrightconfig-ci.json \
|
||||||
|
| grep -v ".py$" \
|
||||||
|
| grep -v '/engines/.*.py.* - warning: "logger" is not defined'\
|
||||||
|
| grep -v '/engines/.*.py.* - warning: "supported_languages" is not defined' \
|
||||||
|
| grep -v '/engines/.*.py.* - warning: "language_aliases" is not defined'
|
||||||
|
dump_return $?
|
||||||
|
}
|
||||||
|
|
||||||
test.black() {
|
test.black() {
|
||||||
build_msg TEST "[black] \$BLACK_TARGETS"
|
build_msg TEST "[black] \$BLACK_TARGETS"
|
||||||
pyenv.cmd black --check --diff "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}"
|
pyenv.cmd black --check --diff "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}"
|
||||||
@ -707,6 +735,13 @@ test.robot() {
|
|||||||
dump_return $?
|
dump_return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test.rst() {
|
||||||
|
build_msg TEST "[reST markup] ${RST_FILES[*]}"
|
||||||
|
for rst in "${RST_FILES[@]}"; do
|
||||||
|
pyenv.cmd rst2html.py --halt error "$rst" > /dev/null || die 42 "fix issue in $rst"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
test.clean() {
|
test.clean() {
|
||||||
build_msg CLEAN "test stuff"
|
build_msg CLEAN "test stuff"
|
||||||
rm -rf geckodriver.log .coverage coverage/
|
rm -rf geckodriver.log .coverage coverage/
|
||||||
|
6
package.json
Normal file
6
package.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"eslint": "^8.7.0",
|
||||||
|
"pyright": "^1.1.215"
|
||||||
|
}
|
||||||
|
}
|
10
pyrightconfig-ci.json
Normal file
10
pyrightconfig-ci.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"venvPath": "local",
|
||||||
|
"venv": "py3",
|
||||||
|
"include": [
|
||||||
|
"searx",
|
||||||
|
"searxng_extra",
|
||||||
|
"tests"
|
||||||
|
],
|
||||||
|
"typeCheckingMode": "off"
|
||||||
|
}
|
9
pyrightconfig.json
Normal file
9
pyrightconfig.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"venvPath": "local",
|
||||||
|
"venv": "py3",
|
||||||
|
"include": [
|
||||||
|
"searx",
|
||||||
|
"searxng_extra",
|
||||||
|
"tests"
|
||||||
|
]
|
||||||
|
}
|
@ -8,7 +8,7 @@ splinter==0.17.0
|
|||||||
selenium==4.1.0
|
selenium==4.1.0
|
||||||
twine==3.7.1
|
twine==3.7.1
|
||||||
Pallets-Sphinx-Themes==2.0.2
|
Pallets-Sphinx-Themes==2.0.2
|
||||||
Sphinx==4.3.2
|
Sphinx==4.4.0
|
||||||
sphinx-issues==3.0.1
|
sphinx-issues==3.0.1
|
||||||
sphinx-jinja==1.4.0
|
sphinx-jinja==1.4.0
|
||||||
sphinx-tabs==3.2.0
|
sphinx-tabs==3.2.0
|
||||||
|
@ -13,3 +13,6 @@ uvloop==0.16.0
|
|||||||
httpx-socks[asyncio]==0.7.2
|
httpx-socks[asyncio]==0.7.2
|
||||||
langdetect==1.0.9
|
langdetect==1.0.9
|
||||||
setproctitle==1.2.2
|
setproctitle==1.2.2
|
||||||
|
redis==4.1.2
|
||||||
|
mistletoe==0.8.1
|
||||||
|
typing_extensions==4.0.1
|
||||||
|
@ -1,33 +1,23 @@
|
|||||||
'''
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
searx is free software: you can redistribute it and/or modify
|
# lint: pylint
|
||||||
it under the terms of the GNU Affero General Public License as published by
|
"""This module implements functions needed for the autocompleter.
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
searx is distributed in the hope that it will be useful,
|
"""
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Affero General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
|
||||||
along with searx. If not, see < http://www.gnu.org/licenses/ >.
|
|
||||||
|
|
||||||
(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
|
|
||||||
'''
|
|
||||||
|
|
||||||
|
|
||||||
from lxml import etree
|
|
||||||
from json import loads
|
from json import loads
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
|
from lxml import etree
|
||||||
from httpx import HTTPError
|
from httpx import HTTPError
|
||||||
|
|
||||||
|
|
||||||
from searx import settings
|
from searx import settings
|
||||||
from searx.data import ENGINES_LANGUAGES
|
from searx.data import ENGINES_LANGUAGES
|
||||||
from searx.network import get as http_get
|
from searx.network import get as http_get
|
||||||
from searx.exceptions import SearxEngineResponseException
|
from searx.exceptions import SearxEngineResponseException
|
||||||
|
|
||||||
|
# a fetch_supported_languages() for XPath engines isn't available right now
|
||||||
|
# _brave = ENGINES_LANGUAGES['brave'].keys()
|
||||||
|
|
||||||
|
|
||||||
def get(*args, **kwargs):
|
def get(*args, **kwargs):
|
||||||
if 'timeout' not in kwargs:
|
if 'timeout' not in kwargs:
|
||||||
@ -36,7 +26,26 @@ def get(*args, **kwargs):
|
|||||||
return http_get(*args, **kwargs)
|
return http_get(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def dbpedia(query, lang):
|
def brave(query, _lang):
|
||||||
|
# brave search autocompleter
|
||||||
|
url = 'https://search.brave.com/api/suggest?'
|
||||||
|
url += urlencode({'q': query})
|
||||||
|
country = 'all'
|
||||||
|
# if lang in _brave:
|
||||||
|
# country = lang
|
||||||
|
kwargs = {'cookies': {'country': country}}
|
||||||
|
resp = get(url, **kwargs)
|
||||||
|
|
||||||
|
results = []
|
||||||
|
|
||||||
|
if resp.ok:
|
||||||
|
data = resp.json()
|
||||||
|
for item in data[1]:
|
||||||
|
results.append(item)
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def dbpedia(query, _lang):
|
||||||
# dbpedia autocompleter, no HTTPS
|
# dbpedia autocompleter, no HTTPS
|
||||||
autocomplete_url = 'https://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
|
autocomplete_url = 'https://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
|
||||||
|
|
||||||
@ -51,7 +60,7 @@ def dbpedia(query, lang):
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
def duckduckgo(query, lang):
|
def duckduckgo(query, _lang):
|
||||||
# duckduckgo autocompleter
|
# duckduckgo autocompleter
|
||||||
url = 'https://ac.duckduckgo.com/ac/?{0}&type=list'
|
url = 'https://ac.duckduckgo.com/ac/?{0}&type=list'
|
||||||
|
|
||||||
@ -85,7 +94,7 @@ def startpage(query, lang):
|
|||||||
return [e['text'] for e in data.get('suggestions', []) if 'text' in e]
|
return [e['text'] for e in data.get('suggestions', []) if 'text' in e]
|
||||||
|
|
||||||
|
|
||||||
def swisscows(query, lang):
|
def swisscows(query, _lang):
|
||||||
# swisscows autocompleter
|
# swisscows autocompleter
|
||||||
url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5'
|
url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5'
|
||||||
|
|
||||||
@ -128,6 +137,7 @@ backends = {
|
|||||||
'swisscows': swisscows,
|
'swisscows': swisscows,
|
||||||
'qwant': qwant,
|
'qwant': qwant,
|
||||||
'wikipedia': wikipedia,
|
'wikipedia': wikipedia,
|
||||||
|
'brave': brave,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ def ahmia_blacklist_loader():
|
|||||||
This function is used by :py:mod:`searx.plugins.ahmia_filter`.
|
This function is used by :py:mod:`searx.plugins.ahmia_filter`.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
with open(str(data_dir / 'ahmia_blacklist.txt'), encoding='utf-8') as f:
|
with open(data_dir / 'ahmia_blacklist.txt', encoding='utf-8') as f:
|
||||||
return f.read().split()
|
return f.read().split()
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -827,6 +827,7 @@
|
|||||||
"CNY"
|
"CNY"
|
||||||
],
|
],
|
||||||
"רנמינבי": "CNY",
|
"רנמינבי": "CNY",
|
||||||
|
"zsenminpi": "CNY",
|
||||||
"renminbi cinese": "CNY",
|
"renminbi cinese": "CNY",
|
||||||
"人民元": "CNY",
|
"人民元": "CNY",
|
||||||
"juanis": "CNY",
|
"juanis": "CNY",
|
||||||
@ -992,7 +993,7 @@
|
|||||||
"džibučio frankas": "DJF",
|
"džibučio frankas": "DJF",
|
||||||
"djiboutiaanse frank": "DJF",
|
"djiboutiaanse frank": "DJF",
|
||||||
"frank dżibuti": "DJF",
|
"frank dżibuti": "DJF",
|
||||||
"franco do djibouti": "DJF",
|
"franco do jibuti": "DJF",
|
||||||
"франк джибути": "DJF",
|
"франк джибути": "DJF",
|
||||||
"џибутски франак": "DJF",
|
"џибутски франак": "DJF",
|
||||||
"djiboutisk franc": "DJF",
|
"djiboutisk franc": "DJF",
|
||||||
@ -2324,11 +2325,10 @@
|
|||||||
"mazedonischer denar": "MKD",
|
"mazedonischer denar": "MKD",
|
||||||
"macedonian denar": "MKD",
|
"macedonian denar": "MKD",
|
||||||
"makedona denaro": "MKD",
|
"makedona denaro": "MKD",
|
||||||
"denar normacedonio": "MKD",
|
"denar macedonio": "MKD",
|
||||||
"põhja makedoonia denaar": "MKD",
|
"põhja makedoonia denaar": "MKD",
|
||||||
"pohjois makedonian denaari": "MKD",
|
"pohjois makedonian denaari": "MKD",
|
||||||
"denar macédonien": "MKD",
|
"denar macédonien": "MKD",
|
||||||
"denar macedonio": "MKD",
|
|
||||||
"דינר מקדוני": "MKD",
|
"דינר מקדוני": "MKD",
|
||||||
"makedonski denar": "MKD",
|
"makedonski denar": "MKD",
|
||||||
"macedón dénár": "MKD",
|
"macedón dénár": "MKD",
|
||||||
@ -4849,6 +4849,7 @@
|
|||||||
"belarus rubel": "BYN",
|
"belarus rubel": "BYN",
|
||||||
"br": "BYN",
|
"br": "BYN",
|
||||||
"nuevo rublo bierlorruso": "BYN",
|
"nuevo rublo bierlorruso": "BYN",
|
||||||
|
"зайчик": "BYN",
|
||||||
"білоруський рубль": "BYN",
|
"білоруський рубль": "BYN",
|
||||||
"Bz$": "BZD",
|
"Bz$": "BZD",
|
||||||
"bz$": "BZD",
|
"bz$": "BZD",
|
||||||
@ -5060,7 +5061,6 @@
|
|||||||
"יואן": "CNY",
|
"יואן": "CNY",
|
||||||
"יואן סיני": "CNY",
|
"יואן סיני": "CNY",
|
||||||
"kínai jüan": "CNY",
|
"kínai jüan": "CNY",
|
||||||
"zsenminpi": "CNY",
|
|
||||||
"yuan cinese": "CNY",
|
"yuan cinese": "CNY",
|
||||||
"人民幣": "CNY",
|
"人民幣": "CNY",
|
||||||
"中国元": "CNY",
|
"中国元": "CNY",
|
||||||
@ -5223,10 +5223,10 @@
|
|||||||
"המטבע של ג'יבוטי": "DJF",
|
"המטבע של ג'יבוטי": "DJF",
|
||||||
"franco di gibuti": "DJF",
|
"franco di gibuti": "DJF",
|
||||||
"djiboutische frank": "DJF",
|
"djiboutische frank": "DJF",
|
||||||
"franco do jibuti": "DJF",
|
|
||||||
"franco djibutiano": "DJF",
|
"franco djibutiano": "DJF",
|
||||||
"franco djibutiense": "DJF",
|
"franco djibutiense": "DJF",
|
||||||
"franco do djibuti": "DJF",
|
"franco do djibuti": "DJF",
|
||||||
|
"franco do djibouti": "DJF",
|
||||||
"franco jibutiano": "DJF",
|
"franco jibutiano": "DJF",
|
||||||
"franco jibutiense": "DJF",
|
"franco jibutiense": "DJF",
|
||||||
"валюта джибути": "DJF",
|
"валюта джибути": "DJF",
|
||||||
@ -6383,6 +6383,8 @@
|
|||||||
"M": "LSL",
|
"M": "LSL",
|
||||||
"lisente": "LSL",
|
"lisente": "LSL",
|
||||||
"loti lesothan": "LSL",
|
"loti lesothan": "LSL",
|
||||||
|
"לוטי": "LSL",
|
||||||
|
"לוטי לסוטו": "LSL",
|
||||||
"loti del lesotho": "LSL",
|
"loti del lesotho": "LSL",
|
||||||
"レソト・ロチ": "LSL",
|
"レソト・ロチ": "LSL",
|
||||||
"валюта лесото": "LSL",
|
"валюта лесото": "LSL",
|
||||||
@ -6494,15 +6496,12 @@
|
|||||||
"dinar normacedoni": "MKD",
|
"dinar normacedoni": "MKD",
|
||||||
"makedonský dinár": "MKD",
|
"makedonský dinár": "MKD",
|
||||||
"makedonsk denar": "MKD",
|
"makedonsk denar": "MKD",
|
||||||
"nordmazedonischer denar": "MKD",
|
|
||||||
"denari": "MKD",
|
"denari": "MKD",
|
||||||
"mkd": "MKD",
|
"mkd": "MKD",
|
||||||
"north macedonian denar": "MKD",
|
|
||||||
"makedonia denaro": "MKD",
|
"makedonia denaro": "MKD",
|
||||||
"dinar macedonio": "MKD",
|
"dinar macedonio": "MKD",
|
||||||
"makedoonia denaar": "MKD",
|
"makedoonia denaar": "MKD",
|
||||||
"makedonian denaari": "MKD",
|
"makedonian denaari": "MKD",
|
||||||
"dinar macédonien": "MKD",
|
|
||||||
"denar macedone": "MKD",
|
"denar macedone": "MKD",
|
||||||
"denaro macedone": "MKD",
|
"denaro macedone": "MKD",
|
||||||
"マケドニア・ディナール": "MKD",
|
"マケドニア・ディナール": "MKD",
|
||||||
@ -7031,8 +7030,6 @@
|
|||||||
"питкэрнский доллар": "PND",
|
"питкэрнский доллар": "PND",
|
||||||
"غواراني": "PYG",
|
"غواراني": "PYG",
|
||||||
"₲": "PYG",
|
"₲": "PYG",
|
||||||
"paraguajský guarani": "PYG",
|
|
||||||
"paraguajský guaraní": "PYG",
|
|
||||||
"paraguayský guarani": "PYG",
|
"paraguayský guarani": "PYG",
|
||||||
"pyg": "PYG",
|
"pyg": "PYG",
|
||||||
"paraguayan guarani": "PYG",
|
"paraguayan guarani": "PYG",
|
||||||
@ -8052,9 +8049,9 @@
|
|||||||
"unitate monetară europeană": "XEU",
|
"unitate monetară europeană": "XEU",
|
||||||
"европейская валютная единица": "XEU",
|
"европейская валютная единица": "XEU",
|
||||||
"europeiska valutaenhet": "XEU",
|
"europeiska valutaenhet": "XEU",
|
||||||
"xmr": "XMR",
|
|
||||||
"mo": "XMR",
|
|
||||||
"bitmonero": "XMR",
|
"bitmonero": "XMR",
|
||||||
|
"mo": "XMR",
|
||||||
|
"xmr": "XMR",
|
||||||
"فرنك س ف ا غرب أفريقيا": "XOF",
|
"فرنك س ف ا غرب أفريقيا": "XOF",
|
||||||
"F": "XOF",
|
"F": "XOF",
|
||||||
"xof": "XOF",
|
"xof": "XOF",
|
||||||
@ -8124,6 +8121,7 @@
|
|||||||
"единая система региональных взаиморасчетов": "XSU",
|
"единая система региональных взаиморасчетов": "XSU",
|
||||||
"единая система региональных взаиморасчётов": "XSU",
|
"единая система региональных взаиморасчётов": "XSU",
|
||||||
"rial del iemen del nord": "YER",
|
"rial del iemen del nord": "YER",
|
||||||
|
"nord jemena rialo": "YER",
|
||||||
"rial nord yéménite": "YER",
|
"rial nord yéménite": "YER",
|
||||||
"észak jemeni riál": "YER",
|
"észak jemeni riál": "YER",
|
||||||
"北イエメン・リアル": "YER",
|
"北イエメン・リアル": "YER",
|
||||||
@ -8155,6 +8153,7 @@
|
|||||||
"R": "ZAR",
|
"R": "ZAR",
|
||||||
"rand de sud àfrica": "ZAR",
|
"rand de sud àfrica": "ZAR",
|
||||||
"rand sud africà": "ZAR",
|
"rand sud africà": "ZAR",
|
||||||
|
"rand de affrica": "ZAR",
|
||||||
"rando": "ZAR",
|
"rando": "ZAR",
|
||||||
"sud afrika rando": "ZAR",
|
"sud afrika rando": "ZAR",
|
||||||
"zar": "ZAR",
|
"zar": "ZAR",
|
||||||
@ -8753,7 +8752,7 @@
|
|||||||
"sv": "Burundisk franc",
|
"sv": "Burundisk franc",
|
||||||
"ta": "புரூண்டி பிராங்க்",
|
"ta": "புரூண்டி பிராங்க்",
|
||||||
"tr": "Burundi frangı",
|
"tr": "Burundi frangı",
|
||||||
"uk": "Бурундійський франк",
|
"uk": "бурундійський франк",
|
||||||
"he": "פרנק בורונדי",
|
"he": "פרנק בורונדי",
|
||||||
"ro": "franc burundez"
|
"ro": "franc burundez"
|
||||||
},
|
},
|
||||||
@ -10965,7 +10964,7 @@
|
|||||||
"nl": "Sri Lankaanse roepie",
|
"nl": "Sri Lankaanse roepie",
|
||||||
"pl": "Rupia lankijska",
|
"pl": "Rupia lankijska",
|
||||||
"pt": "rúpia do Sri Lanka",
|
"pt": "rúpia do Sri Lanka",
|
||||||
"ru": "Ланкийская рупия",
|
"ru": "ланкийская рупия",
|
||||||
"sr": "шриланчанска рупија",
|
"sr": "шриланчанска рупија",
|
||||||
"sv": "Lankesisk rupie",
|
"sv": "Lankesisk rupie",
|
||||||
"ta": "இலங்கை ரூபாய்",
|
"ta": "இலங்கை ரூபாய்",
|
||||||
@ -11031,7 +11030,8 @@
|
|||||||
"sr": "лесотски лоти",
|
"sr": "лесотски лоти",
|
||||||
"sv": "Lesothisk Loti",
|
"sv": "Lesothisk Loti",
|
||||||
"tr": "Loti",
|
"tr": "Loti",
|
||||||
"uk": "Лоті"
|
"uk": "Лоті",
|
||||||
|
"he": "לוטי"
|
||||||
},
|
},
|
||||||
"LYD": {
|
"LYD": {
|
||||||
"ar": "دينار ليبي",
|
"ar": "دينار ليبي",
|
||||||
@ -11186,13 +11186,13 @@
|
|||||||
"ca": "denar",
|
"ca": "denar",
|
||||||
"cs": "Makedonský denár",
|
"cs": "Makedonský denár",
|
||||||
"da": "Makedonske denarer",
|
"da": "Makedonske denarer",
|
||||||
"de": "nordmazedonischer Denar",
|
"de": "mazedonischer Denar",
|
||||||
"en": "denar",
|
"en": "Macedonian denar",
|
||||||
"eo": "makedona denaro",
|
"eo": "makedona denaro",
|
||||||
"es": "denar macedonio",
|
"es": "denar macedonio",
|
||||||
"et": "Makedoonia denaar",
|
"et": "Makedoonia denaar",
|
||||||
"fi": "Makedonian denaari",
|
"fi": "Makedonian denaari",
|
||||||
"fr": "dinar macédonien",
|
"fr": "denar macédonien",
|
||||||
"gl": "Dinar macedonio",
|
"gl": "Dinar macedonio",
|
||||||
"he": "דינר מקדוני",
|
"he": "דינר מקדוני",
|
||||||
"hr": "Makedonski denar",
|
"hr": "Makedonski denar",
|
||||||
@ -11980,7 +11980,7 @@
|
|||||||
"PYG": {
|
"PYG": {
|
||||||
"ar": "غواراني باراغواي",
|
"ar": "غواراني باراغواي",
|
||||||
"ca": "guaraní",
|
"ca": "guaraní",
|
||||||
"cs": "Paraguayský guaraní",
|
"cs": "paraguayský guaraní",
|
||||||
"de": "Paraguayischer Guaraní",
|
"de": "Paraguayischer Guaraní",
|
||||||
"en": "Paraguayan guaraní",
|
"en": "Paraguayan guaraní",
|
||||||
"eo": "paragvaja gvaranio",
|
"eo": "paragvaja gvaranio",
|
||||||
@ -13662,7 +13662,8 @@
|
|||||||
"sr": "јужноафрички ранд",
|
"sr": "јужноафрички ранд",
|
||||||
"sv": "Rand",
|
"sv": "Rand",
|
||||||
"tr": "Güney Afrika randı",
|
"tr": "Güney Afrika randı",
|
||||||
"uk": "Ранд"
|
"uk": "Ранд",
|
||||||
|
"cy": "Rand De Affrica"
|
||||||
},
|
},
|
||||||
"ZMW": {
|
"ZMW": {
|
||||||
"ar": "كواشا زامبية",
|
"ar": "كواشا زامبية",
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
"versions": [
|
"versions": [
|
||||||
|
"96.0.3",
|
||||||
|
"96.0.2",
|
||||||
|
"96.0.1",
|
||||||
|
"96.0",
|
||||||
"95.0.2",
|
"95.0.2",
|
||||||
"95.0.1",
|
"95.0.1",
|
||||||
"95.0",
|
"95.0"
|
||||||
"94.0.2",
|
|
||||||
"94.0.1",
|
|
||||||
"94.0"
|
|
||||||
],
|
],
|
||||||
"os": [
|
"os": [
|
||||||
"Windows NT 10.0; Win64; x64",
|
"Windows NT 10.0; Win64; x64",
|
||||||
|
@ -211,6 +211,7 @@
|
|||||||
"Q1104069": "$",
|
"Q1104069": "$",
|
||||||
"Q11061003": "μm²",
|
"Q11061003": "μm²",
|
||||||
"Q11061005": "nm²",
|
"Q11061005": "nm²",
|
||||||
|
"Q110742003": "dppx",
|
||||||
"Q1131660": "st",
|
"Q1131660": "st",
|
||||||
"Q1137675": "cr",
|
"Q1137675": "cr",
|
||||||
"Q1140444": "Zb",
|
"Q1140444": "Zb",
|
||||||
|
@ -42,6 +42,7 @@ ENGINE_DEFAULT_ARGS = {
|
|||||||
"safesearch": False,
|
"safesearch": False,
|
||||||
"time_range_support": False,
|
"time_range_support": False,
|
||||||
"enable_http": False,
|
"enable_http": False,
|
||||||
|
"using_tor_proxy": False,
|
||||||
"display_error_messages": True,
|
"display_error_messages": True,
|
||||||
"tokens": [],
|
"tokens": [],
|
||||||
"about": {},
|
"about": {},
|
||||||
@ -230,8 +231,8 @@ def set_language_attributes(engine: Engine):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def update_attributes_for_tor(engine):
|
def update_attributes_for_tor(engine: Engine) -> bool:
|
||||||
if settings['outgoing'].get('using_tor_proxy') and hasattr(engine, 'onion_url'):
|
if using_tor_proxy(engine) and hasattr(engine, 'onion_url'):
|
||||||
engine.search_url = engine.onion_url + getattr(engine, 'search_path', '')
|
engine.search_url = engine.onion_url + getattr(engine, 'search_path', '')
|
||||||
engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0)
|
engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0)
|
||||||
|
|
||||||
@ -249,13 +250,18 @@ def is_missing_required_attributes(engine):
|
|||||||
return missing
|
return missing
|
||||||
|
|
||||||
|
|
||||||
|
def using_tor_proxy(engine: Engine):
|
||||||
|
"""Return True if the engine configuration declares to use Tor."""
|
||||||
|
return settings['outgoing'].get('using_tor_proxy') or getattr(engine, 'using_tor_proxy', False)
|
||||||
|
|
||||||
|
|
||||||
def is_engine_active(engine: Engine):
|
def is_engine_active(engine: Engine):
|
||||||
# check if engine is inactive
|
# check if engine is inactive
|
||||||
if engine.inactive is True:
|
if engine.inactive is True:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# exclude onion engines if not using tor
|
# exclude onion engines if not using tor
|
||||||
if 'onions' in engine.categories and not settings['outgoing'].get('using_tor_proxy'):
|
if 'onions' in engine.categories and not using_tor_proxy(engine):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
"""
|
# lint: pylint
|
||||||
currency convert (DuckDuckGo)
|
"""Currency convert (DuckDuckGo)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
@ -13,18 +13,19 @@ about = {
|
|||||||
"use_official_api": False,
|
"use_official_api": False,
|
||||||
"require_api_key": False,
|
"require_api_key": False,
|
||||||
"results": 'JSONP',
|
"results": 'JSONP',
|
||||||
|
"description": "Service from DuckDuckGo.",
|
||||||
}
|
}
|
||||||
|
|
||||||
engine_type = 'online_currency'
|
engine_type = 'online_currency'
|
||||||
categories = []
|
categories = []
|
||||||
url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}'
|
base_url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}'
|
||||||
weight = 100
|
weight = 100
|
||||||
|
|
||||||
https_support = True
|
https_support = True
|
||||||
|
|
||||||
|
|
||||||
def request(query, params):
|
def request(_query, params):
|
||||||
params['url'] = url.format(params['from'], params['to'])
|
params['url'] = base_url.format(params['from'], params['to'])
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ def response(resp):
|
|||||||
results = []
|
results = []
|
||||||
try:
|
try:
|
||||||
conversion_rate = float(json.loads(json_resp)['conversion']['converted-amount'])
|
conversion_rate = float(json.loads(json_resp)['conversion']['converted-amount'])
|
||||||
except:
|
except ValueError:
|
||||||
return results
|
return results
|
||||||
answer = '{0} {1} = {2} {3}, 1 {1} ({5}) = {4} {3} ({6})'.format(
|
answer = '{0} {1} = {2} {3}, 1 {1} ({5}) = {4} {3} ({6})'.format(
|
||||||
resp.search_params['amount'],
|
resp.search_params['amount'],
|
||||||
|
@ -111,8 +111,9 @@ filter_mapping = {0: 'off', 1: 'medium', 2: 'high'}
|
|||||||
# specific xpath variables
|
# specific xpath variables
|
||||||
# ------------------------
|
# ------------------------
|
||||||
|
|
||||||
# google results are grouped into <div class="g" ../>
|
# google results are grouped into <div class="g ..." ../>
|
||||||
results_xpath = '//div[@class="g"]'
|
results_xpath = '//div[@id="search"]//div[contains(@class, "g ")]'
|
||||||
|
results_xpath_mobile_ui = '//div[contains(@class, "g ")]'
|
||||||
|
|
||||||
# google *sections* are no usual *results*, we ignore them
|
# google *sections* are no usual *results*, we ignore them
|
||||||
g_section_with_header = './g-section-with-header'
|
g_section_with_header = './g-section-with-header'
|
||||||
@ -124,8 +125,8 @@ title_xpath = './/h3[1]'
|
|||||||
# href=...>
|
# href=...>
|
||||||
href_xpath = './/div[@class="yuRUbf"]//a/@href'
|
href_xpath = './/div[@class="yuRUbf"]//a/@href'
|
||||||
|
|
||||||
# in the result group there is <div class="IsZvec" ../> containing he *content*
|
# in the result group there is <div class="VwiC3b ..." ../> containing the *content*
|
||||||
content_xpath = './/div[@class="IsZvec"]'
|
content_xpath = './/div[contains(@class, "VwiC3b")]'
|
||||||
|
|
||||||
# Suggestions are links placed in a *card-section*, we extract only the text
|
# Suggestions are links placed in a *card-section*, we extract only the text
|
||||||
# from the links not the links itself.
|
# from the links not the links itself.
|
||||||
@ -336,7 +337,12 @@ def response(resp):
|
|||||||
logger.error(e, exc_info=True)
|
logger.error(e, exc_info=True)
|
||||||
|
|
||||||
# parse results
|
# parse results
|
||||||
for result in eval_xpath_list(dom, results_xpath):
|
|
||||||
|
_results_xpath = results_xpath
|
||||||
|
if use_mobile_ui:
|
||||||
|
_results_xpath = results_xpath_mobile_ui
|
||||||
|
|
||||||
|
for result in eval_xpath_list(dom, _results_xpath):
|
||||||
|
|
||||||
# google *sections*
|
# google *sections*
|
||||||
if extract_text(eval_xpath(result, g_section_with_header)):
|
if extract_text(eval_xpath(result, g_section_with_header)):
|
||||||
@ -347,20 +353,22 @@ def response(resp):
|
|||||||
title_tag = eval_xpath_getindex(result, title_xpath, 0, default=None)
|
title_tag = eval_xpath_getindex(result, title_xpath, 0, default=None)
|
||||||
if title_tag is None:
|
if title_tag is None:
|
||||||
# this not one of the common google results *section*
|
# this not one of the common google results *section*
|
||||||
logger.debug('ingoring <div class="g" ../> section: missing title')
|
logger.debug('ingoring item from the result_xpath list: missing title')
|
||||||
continue
|
continue
|
||||||
title = extract_text(title_tag)
|
title = extract_text(title_tag)
|
||||||
url = eval_xpath_getindex(result, href_xpath, 0, None)
|
url = eval_xpath_getindex(result, href_xpath, 0, None)
|
||||||
if url is None:
|
if url is None:
|
||||||
continue
|
continue
|
||||||
content = extract_text(eval_xpath_getindex(result, content_xpath, 0, default=None), allow_none=True)
|
content = extract_text(eval_xpath_getindex(result, content_xpath, 0, default=None), allow_none=True)
|
||||||
|
if content is None:
|
||||||
|
logger.debug('ingoring item from the result_xpath list: missing content of title "%s"', title)
|
||||||
|
continue
|
||||||
|
|
||||||
|
logger.debug('add link to results: %s', title)
|
||||||
results.append({'url': url, 'title': title, 'content': content})
|
results.append({'url': url, 'title': title, 'content': content})
|
||||||
|
|
||||||
except Exception as e: # pylint: disable=broad-except
|
except Exception as e: # pylint: disable=broad-except
|
||||||
logger.error(e, exc_info=True)
|
logger.error(e, exc_info=True)
|
||||||
# from lxml import etree
|
|
||||||
# logger.debug(etree.tostring(result, pretty_print=True))
|
|
||||||
# import pdb
|
|
||||||
# pdb.set_trace()
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# parse suggestion
|
# parse suggestion
|
||||||
|
@ -3,12 +3,10 @@
|
|||||||
INA (Videos)
|
INA (Videos)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from json import loads
|
|
||||||
from html import unescape
|
from html import unescape
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
from lxml import html
|
from lxml import html
|
||||||
from dateutil import parser
|
from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex
|
||||||
from searx.utils import extract_text
|
|
||||||
|
|
||||||
# about
|
# about
|
||||||
about = {
|
about = {
|
||||||
@ -24,25 +22,24 @@ about = {
|
|||||||
# engine dependent config
|
# engine dependent config
|
||||||
categories = ['videos']
|
categories = ['videos']
|
||||||
paging = True
|
paging = True
|
||||||
page_size = 48
|
page_size = 12
|
||||||
|
|
||||||
# search-url
|
# search-url
|
||||||
base_url = 'https://www.ina.fr'
|
base_url = 'https://www.ina.fr'
|
||||||
search_url = base_url + '/layout/set/ajax/recherche/result?autopromote=&hf={ps}&b={start}&type=Video&r=&{query}'
|
search_url = base_url + '/ajax/recherche?{query}&espace=1&sort=pertinence&order=desc&offset={start}&modified=size'
|
||||||
|
|
||||||
# specific xpath variables
|
# specific xpath variables
|
||||||
results_xpath = '//div[contains(@class,"search-results--list")]//div[@class="media-body"]'
|
results_xpath = '//div[@id="searchHits"]/div'
|
||||||
url_xpath = './/a/@href'
|
url_xpath = './/a/@href'
|
||||||
title_xpath = './/h3[@class="h3--title media-heading"]'
|
title_xpath = './/div[contains(@class,"title-bloc-small")]'
|
||||||
thumbnail_xpath = './/img/@src'
|
content_xpath = './/div[contains(@class,"sous-titre-fonction")]'
|
||||||
publishedDate_xpath = './/span[@class="broadcast"]'
|
thumbnail_xpath = './/img/@data-src'
|
||||||
content_xpath = './/p[@class="media-body__summary"]'
|
publishedDate_xpath = './/div[contains(@class,"dateAgenda")]'
|
||||||
|
|
||||||
|
|
||||||
# do search-request
|
# do search-request
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
params['url'] = search_url.format(ps=page_size, start=params['pageno'] * page_size, query=urlencode({'q': query}))
|
params['url'] = search_url.format(start=params['pageno'] * page_size, query=urlencode({'q': query}))
|
||||||
|
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
@ -51,26 +48,17 @@ def response(resp):
|
|||||||
results = []
|
results = []
|
||||||
|
|
||||||
# we get html in a JSON container...
|
# we get html in a JSON container...
|
||||||
response = loads(resp.text)
|
dom = html.fromstring(resp.text)
|
||||||
dom = html.fromstring(response)
|
|
||||||
|
|
||||||
# parse results
|
# parse results
|
||||||
for result in dom.xpath(results_xpath):
|
for result in eval_xpath_list(dom, results_xpath):
|
||||||
videoid = result.xpath(url_xpath)[0]
|
url_relative = eval_xpath_getindex(result, url_xpath, 0)
|
||||||
url = base_url + videoid
|
url = base_url + url_relative
|
||||||
title = unescape(extract_text(result.xpath(title_xpath)))
|
title = unescape(extract_text(eval_xpath(result, title_xpath)))
|
||||||
try:
|
thumbnail = extract_text(eval_xpath(result, thumbnail_xpath))
|
||||||
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
|
content = extract_text(eval_xpath(result, publishedDate_xpath)) + extract_text(
|
||||||
except:
|
eval_xpath(result, content_xpath)
|
||||||
thumbnail = ''
|
)
|
||||||
if thumbnail and thumbnail[0] == '/':
|
|
||||||
thumbnail = base_url + thumbnail
|
|
||||||
d = extract_text(result.xpath(publishedDate_xpath)[0])
|
|
||||||
d = d.split('/')
|
|
||||||
# force ISO date to avoid wrong parsing
|
|
||||||
d = "%s-%s-%s" % (d[2], d[1], d[0])
|
|
||||||
publishedDate = parser.parse(d)
|
|
||||||
content = extract_text(result.xpath(content_xpath))
|
|
||||||
|
|
||||||
# append result
|
# append result
|
||||||
results.append(
|
results.append(
|
||||||
@ -79,7 +67,6 @@ def response(resp):
|
|||||||
'title': title,
|
'title': title,
|
||||||
'content': content,
|
'content': content,
|
||||||
'template': 'videos.html',
|
'template': 'videos.html',
|
||||||
'publishedDate': publishedDate,
|
|
||||||
'thumbnail': thumbnail,
|
'thumbnail': thumbnail,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -11,6 +11,7 @@ import mysql.connector # pylint: disable=import-error
|
|||||||
engine_type = 'offline'
|
engine_type = 'offline'
|
||||||
auth_plugin = 'caching_sha2_password'
|
auth_plugin = 'caching_sha2_password'
|
||||||
host = "127.0.0.1"
|
host = "127.0.0.1"
|
||||||
|
port = 3306
|
||||||
database = ""
|
database = ""
|
||||||
username = ""
|
username = ""
|
||||||
password = ""
|
password = ""
|
||||||
@ -35,6 +36,7 @@ def init(engine_settings):
|
|||||||
user=username,
|
user=username,
|
||||||
password=password,
|
password=password,
|
||||||
host=host,
|
host=host,
|
||||||
|
port=port,
|
||||||
auth_plugin=auth_plugin,
|
auth_plugin=auth_plugin,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,16 +1,28 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
"""
|
# lint: pylint
|
||||||
Startpage (Web)
|
"""Startpage (Web)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from lxml import html
|
|
||||||
from dateutil import parser
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
import re
|
import re
|
||||||
|
from time import time
|
||||||
|
|
||||||
|
from urllib.parse import urlencode
|
||||||
from unicodedata import normalize, combining
|
from unicodedata import normalize, combining
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
from dateutil import parser
|
||||||
|
from lxml import html
|
||||||
from babel import Locale
|
from babel import Locale
|
||||||
from babel.localedata import locale_identifiers
|
from babel.localedata import locale_identifiers
|
||||||
|
|
||||||
|
from searx.network import get
|
||||||
from searx.utils import extract_text, eval_xpath, match_language
|
from searx.utils import extract_text, eval_xpath, match_language
|
||||||
|
from searx.exceptions import (
|
||||||
|
SearxEngineResponseException,
|
||||||
|
SearxEngineCaptchaException,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# about
|
# about
|
||||||
about = {
|
about = {
|
||||||
@ -33,7 +45,7 @@ supported_languages_url = 'https://www.startpage.com/do/settings'
|
|||||||
|
|
||||||
# search-url
|
# search-url
|
||||||
base_url = 'https://startpage.com/'
|
base_url = 'https://startpage.com/'
|
||||||
search_url = base_url + 'do/search'
|
search_url = base_url + 'sp/search?'
|
||||||
|
|
||||||
# specific xpath variables
|
# specific xpath variables
|
||||||
# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
|
# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
|
||||||
@ -42,18 +54,74 @@ results_xpath = '//div[@class="w-gl__result__main"]'
|
|||||||
link_xpath = './/a[@class="w-gl__result-title result-link"]'
|
link_xpath = './/a[@class="w-gl__result-title result-link"]'
|
||||||
content_xpath = './/p[@class="w-gl__description"]'
|
content_xpath = './/p[@class="w-gl__description"]'
|
||||||
|
|
||||||
|
# timestamp of the last fetch of 'sc' code
|
||||||
|
sc_code_ts = 0
|
||||||
|
sc_code = ''
|
||||||
|
|
||||||
|
|
||||||
|
def raise_captcha(resp):
|
||||||
|
|
||||||
|
if str(resp.url).startswith('https://www.startpage.com/sp/captcha'):
|
||||||
|
# suspend CAPTCHA for 7 days
|
||||||
|
raise SearxEngineCaptchaException(suspended_time=7 * 24 * 3600)
|
||||||
|
|
||||||
|
|
||||||
|
def get_sc_code(headers):
|
||||||
|
"""Get an actual `sc` argument from startpage's home page.
|
||||||
|
|
||||||
|
Startpage puts a `sc` argument on every link. Without this argument
|
||||||
|
startpage considers the request is from a bot. We do not know what is
|
||||||
|
encoded in the value of the `sc` argument, but it seems to be a kind of a
|
||||||
|
*time-stamp*. This *time-stamp* is valid for a few hours.
|
||||||
|
|
||||||
|
This function scrap a new *time-stamp* from startpage's home page every hour
|
||||||
|
(3000 sec).
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
global sc_code_ts, sc_code # pylint: disable=global-statement
|
||||||
|
|
||||||
|
if time() > (sc_code_ts + 3000):
|
||||||
|
logger.debug("query new sc time-stamp ...")
|
||||||
|
|
||||||
|
resp = get(base_url, headers=headers)
|
||||||
|
raise_captcha(resp)
|
||||||
|
dom = html.fromstring(resp.text)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# href --> '/?sc=adrKJMgF8xwp20'
|
||||||
|
href = eval_xpath(dom, '//a[@class="footer-home__logo"]')[0].get('href')
|
||||||
|
except IndexError as exc:
|
||||||
|
# suspend startpage API --> https://github.com/searxng/searxng/pull/695
|
||||||
|
raise SearxEngineResponseException(
|
||||||
|
suspended_time=7 * 24 * 3600, message="PR-695: query new sc time-stamp failed!"
|
||||||
|
) from exc
|
||||||
|
|
||||||
|
sc_code = href[5:]
|
||||||
|
sc_code_ts = time()
|
||||||
|
logger.debug("new value is: %s", sc_code)
|
||||||
|
|
||||||
|
return sc_code
|
||||||
|
|
||||||
|
|
||||||
# do search-request
|
# do search-request
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
|
|
||||||
params['url'] = search_url
|
# pylint: disable=line-too-long
|
||||||
params['method'] = 'POST'
|
# The format string from Startpage's FFox add-on [1]::
|
||||||
params['data'] = {
|
#
|
||||||
|
# https://www.startpage.com/do/dsearch?query={searchTerms}&cat=web&pl=ext-ff&language=__MSG_extensionUrlLanguage__&extVersion=1.3.0
|
||||||
|
#
|
||||||
|
# [1] https://addons.mozilla.org/en-US/firefox/addon/startpage-private-search/
|
||||||
|
|
||||||
|
args = {
|
||||||
'query': query,
|
'query': query,
|
||||||
'page': params['pageno'],
|
'page': params['pageno'],
|
||||||
'cat': 'web',
|
'cat': 'web',
|
||||||
'cmd': 'process_search',
|
# 'pl': 'ext-ff',
|
||||||
'engine0': 'v1all',
|
# 'extVersion': '1.3.0',
|
||||||
|
# 'abp': "-1",
|
||||||
|
'sc': get_sc_code(params['headers']),
|
||||||
}
|
}
|
||||||
|
|
||||||
# set language if specified
|
# set language if specified
|
||||||
@ -61,9 +129,10 @@ def request(query, params):
|
|||||||
lang_code = match_language(params['language'], supported_languages, fallback=None)
|
lang_code = match_language(params['language'], supported_languages, fallback=None)
|
||||||
if lang_code:
|
if lang_code:
|
||||||
language_name = supported_languages[lang_code]['alias']
|
language_name = supported_languages[lang_code]['alias']
|
||||||
params['data']['language'] = language_name
|
args['language'] = language_name
|
||||||
params['data']['lui'] = language_name
|
args['lui'] = language_name
|
||||||
|
|
||||||
|
params['url'] = search_url + urlencode(args)
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
@ -134,10 +203,11 @@ def response(resp):
|
|||||||
|
|
||||||
# get supported languages from their site
|
# get supported languages from their site
|
||||||
def _fetch_supported_languages(resp):
|
def _fetch_supported_languages(resp):
|
||||||
# startpage's language selector is a mess
|
# startpage's language selector is a mess each option has a displayed name
|
||||||
# each option has a displayed name and a value, either of which may represent the language name
|
# and a value, either of which may represent the language name in the native
|
||||||
# in the native script, the language name in English, an English transliteration of the native name,
|
# script, the language name in English, an English transliteration of the
|
||||||
# the English name of the writing script used by the language, or occasionally something else entirely.
|
# native name, the English name of the writing script used by the language,
|
||||||
|
# or occasionally something else entirely.
|
||||||
|
|
||||||
# this cases are so special they need to be hardcoded, a couple of them are mispellings
|
# this cases are so special they need to be hardcoded, a couple of them are mispellings
|
||||||
language_names = {
|
language_names = {
|
||||||
@ -151,7 +221,15 @@ def _fetch_supported_languages(resp):
|
|||||||
}
|
}
|
||||||
|
|
||||||
# get the English name of every language known by babel
|
# get the English name of every language known by babel
|
||||||
language_names.update({name.lower(): lang_code for lang_code, name in Locale('en')._data['languages'].items()})
|
language_names.update(
|
||||||
|
{
|
||||||
|
# fmt: off
|
||||||
|
name.lower(): lang_code
|
||||||
|
# pylint: disable=protected-access
|
||||||
|
for lang_code, name in Locale('en')._data['languages'].items()
|
||||||
|
# fmt: on
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
# get the native name of every language known by babel
|
# get the native name of every language known by babel
|
||||||
for lang_code in filter(lambda lang_code: lang_code.find('_') == -1, locale_identifiers()):
|
for lang_code in filter(lambda lang_code: lang_code.find('_') == -1, locale_identifiers()):
|
||||||
@ -176,8 +254,8 @@ def _fetch_supported_languages(resp):
|
|||||||
if isinstance(lang_code, str):
|
if isinstance(lang_code, str):
|
||||||
supported_languages[lang_code] = {'alias': sp_option_value}
|
supported_languages[lang_code] = {'alias': sp_option_value}
|
||||||
elif isinstance(lang_code, list):
|
elif isinstance(lang_code, list):
|
||||||
for lc in lang_code:
|
for _lc in lang_code:
|
||||||
supported_languages[lc] = {'alias': sp_option_value}
|
supported_languages[_lc] = {'alias': sp_option_value}
|
||||||
else:
|
else:
|
||||||
print('Unknown language option in Startpage: {} ({})'.format(sp_option_value, sp_option_text))
|
print('Unknown language option in Startpage: {} ({})'.format(sp_option_value, sp_option_text))
|
||||||
|
|
||||||
|
103
searx/engines/tineye.py
Normal file
103
searx/engines/tineye.py
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# lint: pylint
|
||||||
|
"""This engine implements *Tineye - reverse image search*
|
||||||
|
|
||||||
|
Using TinEye, you can search by image or perform what we call a reverse image
|
||||||
|
search. You can do that by uploading an image or searching by URL. You can also
|
||||||
|
simply drag and drop your images to start your search. TinEye constantly crawls
|
||||||
|
the web and adds images to its index. Today, the TinEye index is over 50.2
|
||||||
|
billion images `[tineye.com] <https://tineye.com/how>`_.
|
||||||
|
|
||||||
|
.. hint::
|
||||||
|
|
||||||
|
This SearXNG engine only supports *'searching by URL'* and it does not use
|
||||||
|
the official API `[api.tineye.com] <https://api.tineye.com/python/docs/>`_.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
about = {
|
||||||
|
"website": 'https://tineye.com',
|
||||||
|
"wikidata_id": 'Q2382535',
|
||||||
|
"official_api_documentation": 'https://api.tineye.com/python/docs/',
|
||||||
|
"use_official_api": False,
|
||||||
|
"require_api_key": False,
|
||||||
|
"results": 'JSON',
|
||||||
|
}
|
||||||
|
|
||||||
|
engine_type = 'online_url_search'
|
||||||
|
categories = ['general']
|
||||||
|
paging = True
|
||||||
|
safesearch = False
|
||||||
|
base_url = 'https://tineye.com'
|
||||||
|
search_string = '/result_json/?page={page}&{query}'
|
||||||
|
|
||||||
|
|
||||||
|
def request(query, params):
|
||||||
|
|
||||||
|
if params['search_urls']['data:image']:
|
||||||
|
query = params['search_urls']['data:image']
|
||||||
|
elif params['search_urls']['http']:
|
||||||
|
query = params['search_urls']['http']
|
||||||
|
|
||||||
|
query = urlencode({'url': query})
|
||||||
|
|
||||||
|
# see https://github.com/TinEye/pytineye/blob/main/pytineye/api.py
|
||||||
|
params['url'] = base_url + search_string.format(query=query, page=params['pageno'])
|
||||||
|
|
||||||
|
params['headers'].update(
|
||||||
|
{
|
||||||
|
'Connection': 'keep-alive',
|
||||||
|
'Accept-Encoding': 'gzip, defalte, br',
|
||||||
|
'Host': 'tineye.com',
|
||||||
|
'DNT': '1',
|
||||||
|
'TE': 'trailers',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return params
|
||||||
|
|
||||||
|
|
||||||
|
def response(resp):
|
||||||
|
results = []
|
||||||
|
|
||||||
|
# Define wanted results
|
||||||
|
json_data = resp.json()
|
||||||
|
number_of_results = json_data['num_matches']
|
||||||
|
|
||||||
|
for i in json_data['matches']:
|
||||||
|
image_format = i['format']
|
||||||
|
width = i['width']
|
||||||
|
height = i['height']
|
||||||
|
thumbnail_src = i['image_url']
|
||||||
|
backlink = i['domains'][0]['backlinks'][0]
|
||||||
|
url = backlink['backlink']
|
||||||
|
source = backlink['url']
|
||||||
|
title = backlink['image_name']
|
||||||
|
img_src = backlink['url']
|
||||||
|
|
||||||
|
# Get and convert published date
|
||||||
|
api_date = backlink['crawl_date'][:-3]
|
||||||
|
publishedDate = datetime.fromisoformat(api_date)
|
||||||
|
|
||||||
|
# Append results
|
||||||
|
results.append(
|
||||||
|
{
|
||||||
|
'template': 'images.html',
|
||||||
|
'url': url,
|
||||||
|
'thumbnail_src': thumbnail_src,
|
||||||
|
'source': source,
|
||||||
|
'title': title,
|
||||||
|
'img_src': img_src,
|
||||||
|
'format': image_format,
|
||||||
|
'widht': width,
|
||||||
|
'height': height,
|
||||||
|
'publishedDate': publishedDate,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Append number of results
|
||||||
|
results.append({'number_of_results': number_of_results})
|
||||||
|
|
||||||
|
return results
|
@ -1,10 +1,12 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
"""
|
# lint: pylint
|
||||||
1x (Images)
|
"""1x (Images)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from lxml import html, etree
|
|
||||||
from urllib.parse import urlencode, urljoin
|
from urllib.parse import urlencode, urljoin
|
||||||
|
from lxml import html, etree
|
||||||
|
|
||||||
from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex
|
from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex
|
||||||
|
|
||||||
# about
|
# about
|
||||||
@ -38,13 +40,14 @@ def request(query, params):
|
|||||||
def response(resp):
|
def response(resp):
|
||||||
results = []
|
results = []
|
||||||
xmldom = etree.fromstring(resp.content)
|
xmldom = etree.fromstring(resp.content)
|
||||||
xmlsearchresult = eval_xpath_getindex(xmldom, '//searchresult', 0)
|
xmlsearchresult = eval_xpath_getindex(xmldom, '//data', 0)
|
||||||
dom = html.fragment_fromstring(xmlsearchresult.text, create_parent='div')
|
dom = html.fragment_fromstring(xmlsearchresult.text, create_parent='div')
|
||||||
for link in eval_xpath_list(dom, '/div/table/tr/td/div[2]//a'):
|
for link in eval_xpath_list(dom, '//a'):
|
||||||
url = urljoin(base_url, link.attrib.get('href'))
|
url = urljoin(base_url, link.attrib.get('href'))
|
||||||
title = extract_text(link)
|
title = extract_text(link)
|
||||||
thumbnail_src = urljoin(gallery_url, eval_xpath_getindex(link, './/img', 0).attrib['src'])
|
thumbnail_src = urljoin(
|
||||||
|
gallery_url, (eval_xpath_getindex(link, './/img', 0).attrib['src']).replace(base_url, '')
|
||||||
|
)
|
||||||
# append result
|
# append result
|
||||||
results.append(
|
results.append(
|
||||||
{
|
{
|
||||||
|
@ -16,6 +16,9 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
from typing import Optional, Union
|
||||||
|
|
||||||
|
|
||||||
class SearxException(Exception):
|
class SearxException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -35,7 +38,7 @@ class SearxParameterException(SearxException):
|
|||||||
class SearxSettingsException(SearxException):
|
class SearxSettingsException(SearxException):
|
||||||
"""Error while loading the settings"""
|
"""Error while loading the settings"""
|
||||||
|
|
||||||
def __init__(self, message, filename):
|
def __init__(self, message: Union[str, Exception], filename: Optional[str]):
|
||||||
super().__init__(message)
|
super().__init__(message)
|
||||||
self.message = message
|
self.message = message
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
71
searx/help/about.md
Normal file
71
searx/help/about.md
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# About [searxng][url_for:index]
|
||||||
|
|
||||||
|
SearXNG is a fork from the well-known [searx] [metasearch engine], aggregating
|
||||||
|
the results of other [search engines][url_for:preferences] while not storing
|
||||||
|
information about its users.
|
||||||
|
|
||||||
|
More about SearXNG ...
|
||||||
|
|
||||||
|
* [SearXNG sources][brand.git_url]
|
||||||
|
* [weblate]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Why use it?
|
||||||
|
|
||||||
|
* SearXNG may not offer you as personalised results as Google,
|
||||||
|
but it doesn't generate a profile about you.
|
||||||
|
|
||||||
|
* SearXNG doesn't care about what you search for, never shares anything
|
||||||
|
with a third party, and it can't be used to compromise you.
|
||||||
|
|
||||||
|
* SearXNG is free software, the code is 100% open and you can help
|
||||||
|
to make it better. See more on [SearXNG sources][brand.git_url].
|
||||||
|
|
||||||
|
If you do care about privacy, want to be a conscious user, or otherwise
|
||||||
|
believe in digital freedom, make SearXNG your default search engine or run
|
||||||
|
it on your own server
|
||||||
|
|
||||||
|
## Technical details - How does it work?
|
||||||
|
|
||||||
|
SearXNG is a [metasearch engine], inspired by the [seeks project]. It provides
|
||||||
|
basic privacy by mixing your queries with searches on other platforms without
|
||||||
|
storing search data. Queries are made using a POST request on every browser
|
||||||
|
(except Chromium-based browsers*). Therefore they show up in neither our logs,
|
||||||
|
nor your url history. In the case of Chromium-based browser users there is an
|
||||||
|
exception: searx uses the search bar to perform GET requests. SearXNG can be
|
||||||
|
added to your browser's search bar; moreover, it can be set as the default
|
||||||
|
search engine.
|
||||||
|
|
||||||
|
<span id='add to browser'></span>
|
||||||
|
## How to set as the default search engine?
|
||||||
|
|
||||||
|
SearXNG supports [OpenSearch]. For more information on changing your default
|
||||||
|
search engine, see your browser's documentation:
|
||||||
|
|
||||||
|
* [Firefox](https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox)
|
||||||
|
* [Microsoft Edge](https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine)
|
||||||
|
* Chromium-based browsers [only add websites that the user navigates to without a path.](https://www.chromium.org/tab-to-search)
|
||||||
|
|
||||||
|
## Where to find anonymous usage statistics of this instance ?
|
||||||
|
|
||||||
|
[Stats page][url_for:stats] contains some useful data about the engines used.
|
||||||
|
|
||||||
|
## How can I make it my own?
|
||||||
|
|
||||||
|
SearXNG appreciates your concern regarding logs, so take the code from
|
||||||
|
the [SearXNG project][brand.git_url] and run it yourself!
|
||||||
|
|
||||||
|
Add your instance to this [list of public instances][brand.public_instances] to
|
||||||
|
help other people reclaim their privacy and make the Internet freer! The more
|
||||||
|
decentralized the Internet is, the more freedom we have!
|
||||||
|
|
||||||
|
## Where are the docs & code of this instance?
|
||||||
|
|
||||||
|
See the [SearXNG docs][brand.docs_url] and [SearXNG sources][brand.git_url]
|
||||||
|
|
||||||
|
[searx]: https://github.com/searx/searx
|
||||||
|
[metasearch engine]: https://en.wikipedia.org/wiki/Metasearch_engine
|
||||||
|
[weblate]: https://weblate.bubu1.eu/projects/searxng/
|
||||||
|
[seeks project]: https://beniz.github.io/seeks/
|
||||||
|
[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md
|
@ -5,40 +5,18 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import threading
|
import threading
|
||||||
import concurrent.futures
|
import concurrent.futures
|
||||||
|
from queue import SimpleQueue
|
||||||
from types import MethodType
|
from types import MethodType
|
||||||
from timeit import default_timer
|
from timeit import default_timer
|
||||||
|
from typing import Iterable, Tuple
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
import anyio
|
import anyio
|
||||||
import h2.exceptions
|
|
||||||
|
|
||||||
from .network import get_network, initialize, check_network_configuration
|
from .network import get_network, initialize, check_network_configuration
|
||||||
from .client import get_loop
|
from .client import get_loop
|
||||||
from .raise_for_httperror import raise_for_httperror
|
from .raise_for_httperror import raise_for_httperror
|
||||||
|
|
||||||
# queue.SimpleQueue: Support Python 3.6
|
|
||||||
try:
|
|
||||||
from queue import SimpleQueue
|
|
||||||
except ImportError:
|
|
||||||
from queue import Empty
|
|
||||||
from collections import deque
|
|
||||||
|
|
||||||
class SimpleQueue:
|
|
||||||
"""Minimal backport of queue.SimpleQueue"""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self._queue = deque()
|
|
||||||
self._count = threading.Semaphore(0)
|
|
||||||
|
|
||||||
def put(self, item):
|
|
||||||
self._queue.append(item)
|
|
||||||
self._count.release()
|
|
||||||
|
|
||||||
def get(self):
|
|
||||||
if not self._count.acquire(True): # pylint: disable=consider-using-with
|
|
||||||
raise Empty
|
|
||||||
return self._queue.popleft()
|
|
||||||
|
|
||||||
|
|
||||||
THREADLOCAL = threading.local()
|
THREADLOCAL = threading.local()
|
||||||
"""Thread-local data is data for thread specific values."""
|
"""Thread-local data is data for thread specific values."""
|
||||||
@ -210,7 +188,7 @@ def _close_response_method(self):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
def stream(method, url, **kwargs):
|
def stream(method, url, **kwargs) -> Tuple[httpx.Response, Iterable[bytes]]:
|
||||||
"""Replace httpx.stream.
|
"""Replace httpx.stream.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
from ssl import SSLContext
|
||||||
import threading
|
import threading
|
||||||
|
from typing import Any, Dict
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
from httpx_socks import AsyncProxyTransport
|
from httpx_socks import AsyncProxyTransport
|
||||||
@ -23,7 +25,7 @@ else:
|
|||||||
|
|
||||||
logger = logger.getChild('searx.network.client')
|
logger = logger.getChild('searx.network.client')
|
||||||
LOOP = None
|
LOOP = None
|
||||||
SSLCONTEXTS = {}
|
SSLCONTEXTS: Dict[Any, SSLContext] = {}
|
||||||
TRANSPORT_KWARGS = {
|
TRANSPORT_KWARGS = {
|
||||||
'trust_env': False,
|
'trust_env': False,
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import atexit
|
|||||||
import asyncio
|
import asyncio
|
||||||
import ipaddress
|
import ipaddress
|
||||||
from itertools import cycle
|
from itertools import cycle
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ from .client import new_client, get_loop, AsyncHTTPTransportNoHttp
|
|||||||
|
|
||||||
logger = logger.getChild('network')
|
logger = logger.getChild('network')
|
||||||
DEFAULT_NAME = '__DEFAULT__'
|
DEFAULT_NAME = '__DEFAULT__'
|
||||||
NETWORKS = {}
|
NETWORKS: Dict[str, 'Network'] = {}
|
||||||
# requests compatibility when reading proxy settings from settings.yml
|
# requests compatibility when reading proxy settings from settings.yml
|
||||||
PROXY_PATTERN_MAPPING = {
|
PROXY_PATTERN_MAPPING = {
|
||||||
'http': 'http://',
|
'http': 'http://',
|
||||||
@ -166,13 +167,14 @@ class Network:
|
|||||||
for transport in client._mounts.values(): # pylint: disable=protected-access
|
for transport in client._mounts.values(): # pylint: disable=protected-access
|
||||||
if isinstance(transport, AsyncHTTPTransportNoHttp):
|
if isinstance(transport, AsyncHTTPTransportNoHttp):
|
||||||
continue
|
continue
|
||||||
if not getattr(transport, '_rdns', False):
|
if getattr(transport, "_pool") and getattr(
|
||||||
result = False
|
transport._pool, "_rdns", False # pylint: disable=protected-access
|
||||||
break
|
):
|
||||||
else:
|
continue
|
||||||
response = await client.get('https://check.torproject.org/api/ip')
|
return False
|
||||||
if not response.json()['IsTor']:
|
response = await client.get("https://check.torproject.org/api/ip", timeout=10)
|
||||||
result = False
|
if not response.json()["IsTor"]:
|
||||||
|
result = False
|
||||||
Network._TOR_CHECK_RESULT[proxies] = result
|
Network._TOR_CHECK_RESULT[proxies] = result
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ from os.path import abspath, basename, dirname, exists, join
|
|||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from pkgutil import iter_modules
|
from pkgutil import iter_modules
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from typing import List
|
from typing import List, Tuple
|
||||||
|
|
||||||
from searx import logger, settings
|
from searx import logger, settings
|
||||||
|
|
||||||
@ -22,6 +22,9 @@ class Plugin: # pylint: disable=too-few-public-methods
|
|||||||
name: str
|
name: str
|
||||||
description: str
|
description: str
|
||||||
default_on: bool
|
default_on: bool
|
||||||
|
js_dependencies: Tuple[str]
|
||||||
|
css_dependencies: Tuple[str]
|
||||||
|
preference_section: str
|
||||||
|
|
||||||
|
|
||||||
logger = logger.getChild("plugins")
|
logger = logger.getChild("plugins")
|
||||||
|
@ -2,7 +2,9 @@ import re
|
|||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
|
from typing import List, NamedTuple, Set
|
||||||
from urllib.parse import urlparse, unquote
|
from urllib.parse import urlparse, unquote
|
||||||
|
|
||||||
from searx import logger
|
from searx import logger
|
||||||
from searx.engines import engines
|
from searx.engines import engines
|
||||||
from searx.metrics import histogram_observe, counter_add, count_error
|
from searx.metrics import histogram_observe, counter_add, count_error
|
||||||
@ -137,6 +139,18 @@ def result_score(result):
|
|||||||
return sum((occurences * weight) / position for position in result['positions'])
|
return sum((occurences * weight) / position for position in result['positions'])
|
||||||
|
|
||||||
|
|
||||||
|
class Timing(NamedTuple):
|
||||||
|
engine: str
|
||||||
|
total: float
|
||||||
|
load: float
|
||||||
|
|
||||||
|
|
||||||
|
class UnresponsiveEngine(NamedTuple):
|
||||||
|
engine: str
|
||||||
|
error_type: str
|
||||||
|
suspended: bool
|
||||||
|
|
||||||
|
|
||||||
class ResultContainer:
|
class ResultContainer:
|
||||||
"""docstring for ResultContainer"""
|
"""docstring for ResultContainer"""
|
||||||
|
|
||||||
@ -168,8 +182,8 @@ class ResultContainer:
|
|||||||
self.engine_data = defaultdict(dict)
|
self.engine_data = defaultdict(dict)
|
||||||
self._closed = False
|
self._closed = False
|
||||||
self.paging = False
|
self.paging = False
|
||||||
self.unresponsive_engines = set()
|
self.unresponsive_engines: Set[UnresponsiveEngine] = set()
|
||||||
self.timings = []
|
self.timings: List[Timing] = []
|
||||||
self.redirect_url = None
|
self.redirect_url = None
|
||||||
self.on_result = lambda _: True
|
self.on_result = lambda _: True
|
||||||
self._lock = RLock()
|
self._lock = RLock()
|
||||||
@ -401,17 +415,12 @@ class ResultContainer:
|
|||||||
return 0
|
return 0
|
||||||
return resultnum_sum / len(self._number_of_results)
|
return resultnum_sum / len(self._number_of_results)
|
||||||
|
|
||||||
def add_unresponsive_engine(self, engine_name, error_type, error_message=None, suspended=False):
|
def add_unresponsive_engine(self, engine_name: str, error_type: str, suspended: bool = False):
|
||||||
if engines[engine_name].display_error_messages:
|
if engines[engine_name].display_error_messages:
|
||||||
self.unresponsive_engines.add((engine_name, error_type, error_message, suspended))
|
self.unresponsive_engines.add(UnresponsiveEngine(engine_name, error_type, suspended))
|
||||||
|
|
||||||
def add_timing(self, engine_name, engine_time, page_load_time):
|
def add_timing(self, engine_name: str, engine_time: float, page_load_time: float):
|
||||||
timing = {
|
self.timings.append(Timing(engine_name, total=engine_time, load=page_load_time))
|
||||||
'engine': engines[engine_name].shortcut,
|
|
||||||
'total': engine_time,
|
|
||||||
'load': page_load_time,
|
|
||||||
}
|
|
||||||
self.timings.append(timing)
|
|
||||||
|
|
||||||
def get_timings(self):
|
def get_timings(self):
|
||||||
return self.timings
|
return self.timings
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
# lint: pylint
|
# lint: pylint
|
||||||
# pylint: disable=missing-module-docstring
|
# pylint: disable=missing-module-docstring
|
||||||
|
# pyright: strict
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import random
|
import random
|
||||||
@ -8,6 +9,8 @@ import time
|
|||||||
import threading
|
import threading
|
||||||
import os
|
import os
|
||||||
import signal
|
import signal
|
||||||
|
from typing import Dict, Union, List, Any, Tuple
|
||||||
|
from typing_extensions import TypedDict, Literal
|
||||||
|
|
||||||
from searx import logger, settings, searx_debug
|
from searx import logger, settings, searx_debug
|
||||||
from searx.exceptions import SearxSettingsException
|
from searx.exceptions import SearxSettingsException
|
||||||
@ -20,17 +23,58 @@ CHECKER_RESULT = 'CHECKER_RESULT'
|
|||||||
running = threading.Lock()
|
running = threading.Lock()
|
||||||
|
|
||||||
|
|
||||||
def _get_interval(every, error_msg):
|
CheckerResult = Union['CheckerOk', 'CheckerErr', 'CheckerOther']
|
||||||
|
|
||||||
|
|
||||||
|
class CheckerOk(TypedDict):
|
||||||
|
"""Checking the engines succeeded"""
|
||||||
|
|
||||||
|
status: Literal['ok']
|
||||||
|
engines: Dict[str, 'EngineResult']
|
||||||
|
timestamp: int
|
||||||
|
|
||||||
|
|
||||||
|
class CheckerErr(TypedDict):
|
||||||
|
"""Checking the engines failed"""
|
||||||
|
|
||||||
|
status: Literal['error']
|
||||||
|
timestamp: int
|
||||||
|
|
||||||
|
|
||||||
|
class CheckerOther(TypedDict):
|
||||||
|
"""The status is unknown or disabled"""
|
||||||
|
|
||||||
|
status: Literal['unknown', 'disabled']
|
||||||
|
|
||||||
|
|
||||||
|
EngineResult = Union['EngineOk', 'EngineErr']
|
||||||
|
|
||||||
|
|
||||||
|
class EngineOk(TypedDict):
|
||||||
|
"""Checking the engine succeeded"""
|
||||||
|
|
||||||
|
success: Literal[True]
|
||||||
|
|
||||||
|
|
||||||
|
class EngineErr(TypedDict):
|
||||||
|
"""Checking the engine failed"""
|
||||||
|
|
||||||
|
success: Literal[False]
|
||||||
|
errors: Dict[str, List[str]]
|
||||||
|
|
||||||
|
|
||||||
|
def _get_interval(every: Any, error_msg: str) -> Tuple[int, int]:
|
||||||
if isinstance(every, int):
|
if isinstance(every, int):
|
||||||
every = (every, every)
|
return (every, every)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
not isinstance(every, (tuple, list))
|
not isinstance(every, (tuple, list))
|
||||||
or len(every) != 2
|
or len(every) != 2 # type: ignore
|
||||||
or not isinstance(every[0], int)
|
or not isinstance(every[0], int)
|
||||||
or not isinstance(every[1], int)
|
or not isinstance(every[1], int)
|
||||||
):
|
):
|
||||||
raise SearxSettingsException(error_msg, None)
|
raise SearxSettingsException(error_msg, None)
|
||||||
return every
|
return (every[0], every[1])
|
||||||
|
|
||||||
|
|
||||||
def _get_every():
|
def _get_every():
|
||||||
@ -38,25 +82,27 @@ def _get_every():
|
|||||||
return _get_interval(every, 'checker.scheduling.every is not a int or list')
|
return _get_interval(every, 'checker.scheduling.every is not a int or list')
|
||||||
|
|
||||||
|
|
||||||
def get_result():
|
def get_result() -> CheckerResult:
|
||||||
serialized_result = storage.get_str(CHECKER_RESULT)
|
serialized_result = storage.get_str(CHECKER_RESULT)
|
||||||
if serialized_result is not None:
|
if serialized_result is not None:
|
||||||
return json.loads(serialized_result)
|
return json.loads(serialized_result)
|
||||||
return {'status': 'unknown'}
|
return {'status': 'unknown'}
|
||||||
|
|
||||||
|
|
||||||
def _set_result(result, include_timestamp=True):
|
def _set_result(result: CheckerResult):
|
||||||
if include_timestamp:
|
|
||||||
result['timestamp'] = int(time.time() / 3600) * 3600
|
|
||||||
storage.set_str(CHECKER_RESULT, json.dumps(result))
|
storage.set_str(CHECKER_RESULT, json.dumps(result))
|
||||||
|
|
||||||
|
|
||||||
|
def _timestamp():
|
||||||
|
return int(time.time() / 3600) * 3600
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
if not running.acquire(blocking=False): # pylint: disable=consider-using-with
|
if not running.acquire(blocking=False): # pylint: disable=consider-using-with
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
logger.info('Starting checker')
|
logger.info('Starting checker')
|
||||||
result = {'status': 'ok', 'engines': {}}
|
result: CheckerOk = {'status': 'ok', 'engines': {}, 'timestamp': _timestamp()}
|
||||||
for name, processor in PROCESSORS.items():
|
for name, processor in PROCESSORS.items():
|
||||||
logger.debug('Checking %s engine', name)
|
logger.debug('Checking %s engine', name)
|
||||||
checker = Checker(processor)
|
checker = Checker(processor)
|
||||||
@ -69,7 +115,7 @@ def run():
|
|||||||
_set_result(result)
|
_set_result(result)
|
||||||
logger.info('Check done')
|
logger.info('Check done')
|
||||||
except Exception: # pylint: disable=broad-except
|
except Exception: # pylint: disable=broad-except
|
||||||
_set_result({'status': 'error'})
|
_set_result({'status': 'error', 'timestamp': _timestamp()})
|
||||||
logger.exception('Error while running the checker')
|
logger.exception('Error while running the checker')
|
||||||
finally:
|
finally:
|
||||||
running.release()
|
running.release()
|
||||||
@ -89,7 +135,7 @@ def _start_scheduling():
|
|||||||
run()
|
run()
|
||||||
|
|
||||||
|
|
||||||
def _signal_handler(_signum, _frame):
|
def _signal_handler(_signum: int, _frame: Any):
|
||||||
t = threading.Thread(target=run)
|
t = threading.Thread(target=run)
|
||||||
t.daemon = True
|
t.daemon = True
|
||||||
t.start()
|
t.start()
|
||||||
@ -102,7 +148,7 @@ def initialize():
|
|||||||
signal.signal(signal.SIGUSR1, _signal_handler)
|
signal.signal(signal.SIGUSR1, _signal_handler)
|
||||||
|
|
||||||
# disabled by default
|
# disabled by default
|
||||||
_set_result({'status': 'disabled'}, include_timestamp=False)
|
_set_result({'status': 'disabled'})
|
||||||
|
|
||||||
# special case when debug is activate
|
# special case when debug is activate
|
||||||
if searx_debug and settings.get('checker', {}).get('off_when_debug', True):
|
if searx_debug and settings.get('checker', {}).get('off_when_debug', True):
|
||||||
@ -116,7 +162,7 @@ def initialize():
|
|||||||
return
|
return
|
||||||
|
|
||||||
#
|
#
|
||||||
_set_result({'status': 'unknown'}, include_timestamp=False)
|
_set_result({'status': 'unknown'})
|
||||||
|
|
||||||
start_after = scheduling.get('start_after', (300, 1800))
|
start_after = scheduling.get('start_after', (300, 1800))
|
||||||
start_after = _get_interval(start_after, 'checker.scheduling.start_after is not a int or list')
|
start_after = _get_interval(start_after, 'checker.scheduling.start_after is not a int or list')
|
||||||
|
@ -74,7 +74,7 @@ def _download_and_check_if_image(image_url: str) -> bool:
|
|||||||
try:
|
try:
|
||||||
# use "image_proxy" (avoid HTTP/2)
|
# use "image_proxy" (avoid HTTP/2)
|
||||||
network.set_context_network_name('image_proxy')
|
network.set_context_network_name('image_proxy')
|
||||||
stream = network.stream(
|
r, stream = network.stream(
|
||||||
'GET',
|
'GET',
|
||||||
image_url,
|
image_url,
|
||||||
timeout=10.0,
|
timeout=10.0,
|
||||||
@ -91,7 +91,6 @@ def _download_and_check_if_image(image_url: str) -> bool:
|
|||||||
'Cache-Control': 'max-age=0',
|
'Cache-Control': 'max-age=0',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
r = next(stream)
|
|
||||||
r.close()
|
r.close()
|
||||||
if r.status_code == 200:
|
if r.status_code == 200:
|
||||||
is_image = r.headers.get('content-type', '').startswith('image/')
|
is_image = r.headers.get('content-type', '').startswith('image/')
|
||||||
|
@ -11,10 +11,12 @@ __all__ = [
|
|||||||
'OnlineProcessor',
|
'OnlineProcessor',
|
||||||
'OnlineDictionaryProcessor',
|
'OnlineDictionaryProcessor',
|
||||||
'OnlineCurrencyProcessor',
|
'OnlineCurrencyProcessor',
|
||||||
|
'OnlineUrlSearchProcessor',
|
||||||
'PROCESSORS',
|
'PROCESSORS',
|
||||||
]
|
]
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
from searx import logger
|
from searx import logger
|
||||||
from searx import engines
|
from searx import engines
|
||||||
@ -23,16 +25,23 @@ from .online import OnlineProcessor
|
|||||||
from .offline import OfflineProcessor
|
from .offline import OfflineProcessor
|
||||||
from .online_dictionary import OnlineDictionaryProcessor
|
from .online_dictionary import OnlineDictionaryProcessor
|
||||||
from .online_currency import OnlineCurrencyProcessor
|
from .online_currency import OnlineCurrencyProcessor
|
||||||
|
from .online_url_search import OnlineUrlSearchProcessor
|
||||||
from .abstract import EngineProcessor
|
from .abstract import EngineProcessor
|
||||||
|
|
||||||
logger = logger.getChild('search.processors')
|
logger = logger.getChild('search.processors')
|
||||||
PROCESSORS = {}
|
PROCESSORS: Dict[str, EngineProcessor] = {}
|
||||||
"""Cache request processores, stored by *engine-name* (:py:func:`initialize`)"""
|
"""Cache request processores, stored by *engine-name* (:py:func:`initialize`)"""
|
||||||
|
|
||||||
|
|
||||||
def get_processor_class(engine_type):
|
def get_processor_class(engine_type):
|
||||||
"""Return processor class according to the ``engine_type``"""
|
"""Return processor class according to the ``engine_type``"""
|
||||||
for c in [OnlineProcessor, OfflineProcessor, OnlineDictionaryProcessor, OnlineCurrencyProcessor]:
|
for c in [
|
||||||
|
OnlineProcessor,
|
||||||
|
OfflineProcessor,
|
||||||
|
OnlineDictionaryProcessor,
|
||||||
|
OnlineCurrencyProcessor,
|
||||||
|
OnlineUrlSearchProcessor,
|
||||||
|
]:
|
||||||
if c.engine_type == engine_type:
|
if c.engine_type == engine_type:
|
||||||
return c
|
return c
|
||||||
return None
|
return None
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
import threading
|
import threading
|
||||||
from abc import abstractmethod, ABC
|
from abc import abstractmethod, ABC
|
||||||
from timeit import default_timer
|
from timeit import default_timer
|
||||||
|
from typing import Dict, Union
|
||||||
|
|
||||||
from searx import settings, logger
|
from searx import settings, logger
|
||||||
from searx.engines import engines
|
from searx.engines import engines
|
||||||
@ -17,7 +18,7 @@ from searx.exceptions import SearxEngineAccessDeniedException, SearxEngineRespon
|
|||||||
from searx.utils import get_engine_from_settings
|
from searx.utils import get_engine_from_settings
|
||||||
|
|
||||||
logger = logger.getChild('searx.search.processor')
|
logger = logger.getChild('searx.search.processor')
|
||||||
SUSPENDED_STATUS = {}
|
SUSPENDED_STATUS: Dict[Union[int, str], 'SuspendedStatus'] = {}
|
||||||
|
|
||||||
|
|
||||||
class SuspendedStatus:
|
class SuspendedStatus:
|
||||||
@ -61,7 +62,7 @@ class EngineProcessor(ABC):
|
|||||||
|
|
||||||
__slots__ = 'engine', 'engine_name', 'lock', 'suspended_status', 'logger'
|
__slots__ = 'engine', 'engine_name', 'lock', 'suspended_status', 'logger'
|
||||||
|
|
||||||
def __init__(self, engine, engine_name):
|
def __init__(self, engine, engine_name: str):
|
||||||
self.engine = engine
|
self.engine = engine
|
||||||
self.engine_name = engine_name
|
self.engine_name = engine_name
|
||||||
self.logger = engines[engine_name].logger
|
self.logger = engines[engine_name].logger
|
||||||
|
42
searx/search/processors/online_url_search.py
Normal file
42
searx/search/processors/online_url_search.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# lint: pylint
|
||||||
|
"""Processores for engine-type: ``online_url_search``
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
from .online import OnlineProcessor
|
||||||
|
|
||||||
|
re_search_urls = {
|
||||||
|
'http': re.compile(r'https?:\/\/[^ ]*'),
|
||||||
|
'ftp': re.compile(r'ftps?:\/\/[^ ]*'),
|
||||||
|
'data:image': re.compile('data:image/[^; ]*;base64,[^ ]*'),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class OnlineUrlSearchProcessor(OnlineProcessor):
|
||||||
|
"""Processor class used by ``online_url_search`` engines."""
|
||||||
|
|
||||||
|
engine_type = 'online_url_search'
|
||||||
|
|
||||||
|
def get_params(self, search_query, engine_category):
|
||||||
|
params = super().get_params(search_query, engine_category)
|
||||||
|
if params is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
url_match = False
|
||||||
|
search_urls = {}
|
||||||
|
|
||||||
|
for k, v in re_search_urls.items():
|
||||||
|
m = v.search(search_query.query)
|
||||||
|
v = None
|
||||||
|
if m:
|
||||||
|
url_match = True
|
||||||
|
v = m[0]
|
||||||
|
search_urls[k] = v
|
||||||
|
|
||||||
|
if not url_match:
|
||||||
|
return None
|
||||||
|
|
||||||
|
params['search_urls'] = search_urls
|
||||||
|
return params
|
@ -483,6 +483,11 @@ engines:
|
|||||||
timeout: 3.0
|
timeout: 3.0
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|
||||||
|
- name: tineye
|
||||||
|
engine: tineye
|
||||||
|
shortcut: tin
|
||||||
|
timeout: 9.0
|
||||||
|
|
||||||
- name: etymonline
|
- name: etymonline
|
||||||
engine: xpath
|
engine: xpath
|
||||||
paging: true
|
paging: true
|
||||||
@ -777,11 +782,16 @@ engines:
|
|||||||
|
|
||||||
- name: invidious
|
- name: invidious
|
||||||
engine: invidious
|
engine: invidious
|
||||||
|
# Instanes will be selected randomly, see https://api.invidious.io/ for
|
||||||
|
# instances that are stable (good uptime) and close to you.
|
||||||
base_url:
|
base_url:
|
||||||
- https://invidious.tube/
|
|
||||||
- https://invidious.snopyta.org/
|
- https://invidious.snopyta.org/
|
||||||
|
- https://vid.puffyan.us/
|
||||||
|
- https://invidious.kavin.rocks/
|
||||||
|
- https://invidio.xamh.de/
|
||||||
|
- https://inv.riverside.rocks/
|
||||||
shortcut: iv
|
shortcut: iv
|
||||||
timeout: 5.0
|
timeout: 3.0
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|
||||||
- name: kickass
|
- name: kickass
|
||||||
@ -1455,7 +1465,7 @@ engines:
|
|||||||
# Or you can use the html non-stable engine, activated by default
|
# Or you can use the html non-stable engine, activated by default
|
||||||
engine: wolframalpha_noapi
|
engine: wolframalpha_noapi
|
||||||
timeout: 6.0
|
timeout: 6.0
|
||||||
categories: science
|
categories: []
|
||||||
|
|
||||||
- name: dictzone
|
- name: dictzone
|
||||||
engine: dictzone
|
engine: dictzone
|
||||||
|
@ -20,6 +20,7 @@ A redis DB connect can be tested by::
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import redis
|
||||||
from searx import get_setting
|
from searx import get_setting
|
||||||
|
|
||||||
logger = logging.getLogger('searx.shared.redis')
|
logger = logging.getLogger('searx.shared.redis')
|
||||||
@ -28,8 +29,6 @@ _client = None
|
|||||||
|
|
||||||
def client():
|
def client():
|
||||||
global _client # pylint: disable=global-statement
|
global _client # pylint: disable=global-statement
|
||||||
import redis # pylint: disable=import-error, import-outside-toplevel
|
|
||||||
|
|
||||||
if _client is None:
|
if _client is None:
|
||||||
# not thread safe: in the worst case scenario, two or more clients are
|
# not thread safe: in the worst case scenario, two or more clients are
|
||||||
# initialized only one is kept, the others are garbage collected.
|
# initialized only one is kept, the others are garbage collected.
|
||||||
@ -38,8 +37,6 @@ def client():
|
|||||||
|
|
||||||
|
|
||||||
def init():
|
def init():
|
||||||
import redis # pylint: disable=import-error, import-outside-toplevel
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
c = client()
|
c = client()
|
||||||
logger.info("connected redis DB --> %s", c.acl_whoami())
|
logger.info("connected redis DB --> %s", c.acl_whoami())
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# pyright: strict
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
class SharedDict(ABC):
|
class SharedDict(ABC):
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_int(self, key):
|
def get_int(self, key: str) -> Optional[int]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def set_int(self, key, value):
|
def set_int(self, key: str, value: int):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_str(self, key):
|
def get_str(self, key: str) -> Optional[str]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def set_str(self, key, value):
|
def set_str(self, key: str, value: str):
|
||||||
pass
|
pass
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from . import shared_abstract
|
from . import shared_abstract
|
||||||
|
|
||||||
@ -12,16 +13,16 @@ class SimpleSharedDict(shared_abstract.SharedDict):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.d = {}
|
self.d = {}
|
||||||
|
|
||||||
def get_int(self, key):
|
def get_int(self, key: str) -> Optional[int]:
|
||||||
return self.d.get(key, None)
|
return self.d.get(key, None)
|
||||||
|
|
||||||
def set_int(self, key, value):
|
def set_int(self, key: str, value: int):
|
||||||
self.d[key] = value
|
self.d[key] = value
|
||||||
|
|
||||||
def get_str(self, key):
|
def get_str(self, key: str) -> Optional[str]:
|
||||||
return self.d.get(key, None)
|
return self.d.get(key, None)
|
||||||
|
|
||||||
def set_str(self, key, value):
|
def set_str(self, key: str, value: str):
|
||||||
self.d[key] = value
|
self.d[key] = value
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
from typing import Optional
|
||||||
import uwsgi # pylint: disable=E0401
|
import uwsgi # pylint: disable=E0401
|
||||||
from . import shared_abstract
|
from . import shared_abstract
|
||||||
|
|
||||||
@ -9,25 +10,25 @@ _last_signal = 10
|
|||||||
|
|
||||||
|
|
||||||
class UwsgiCacheSharedDict(shared_abstract.SharedDict):
|
class UwsgiCacheSharedDict(shared_abstract.SharedDict):
|
||||||
def get_int(self, key):
|
def get_int(self, key: str) -> Optional[int]:
|
||||||
value = uwsgi.cache_get(key)
|
value = uwsgi.cache_get(key)
|
||||||
if value is None:
|
if value is None:
|
||||||
return value
|
return value
|
||||||
else:
|
else:
|
||||||
return int.from_bytes(value, 'big')
|
return int.from_bytes(value, 'big')
|
||||||
|
|
||||||
def set_int(self, key, value):
|
def set_int(self, key: str, value: int):
|
||||||
b = value.to_bytes(4, 'big')
|
b = value.to_bytes(4, 'big')
|
||||||
uwsgi.cache_update(key, b)
|
uwsgi.cache_update(key, b)
|
||||||
|
|
||||||
def get_str(self, key):
|
def get_str(self, key: str) -> Optional[str]:
|
||||||
value = uwsgi.cache_get(key)
|
value = uwsgi.cache_get(key)
|
||||||
if value is None:
|
if value is None:
|
||||||
return value
|
return value
|
||||||
else:
|
else:
|
||||||
return value.decode('utf-8')
|
return value.decode('utf-8')
|
||||||
|
|
||||||
def set_str(self, key, value):
|
def set_str(self, key: str, value: str):
|
||||||
b = value.encode('utf-8')
|
b = value.encode('utf-8')
|
||||||
uwsgi.cache_update(key, b)
|
uwsgi.cache_update(key, b)
|
||||||
|
|
||||||
|
BIN
searx/static/themes/oscar/js/searxng.min.js
vendored
BIN
searx/static/themes/oscar/js/searxng.min.js
vendored
Binary file not shown.
Binary file not shown.
@ -1,3 +1,7 @@
|
|||||||
{
|
{
|
||||||
"extends": "stylelint-config-standard"
|
"extends": "stylelint-config-standard",
|
||||||
|
"rules": {
|
||||||
|
"declaration-empty-line-before": null,
|
||||||
|
"no-invalid-position-at-import-rule": null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
searx/static/themes/simple/css/searxng-rtl.min.css
vendored
BIN
searx/static/themes/simple/css/searxng-rtl.min.css
vendored
Binary file not shown.
Binary file not shown.
BIN
searx/static/themes/simple/css/searxng.min.css
vendored
BIN
searx/static/themes/simple/css/searxng.min.css
vendored
Binary file not shown.
Binary file not shown.
@ -127,7 +127,7 @@ module.exports = function (grunt) {
|
|||||||
},
|
},
|
||||||
files: [
|
files: [
|
||||||
{
|
{
|
||||||
src: ['src/less/style.less'],
|
src: ['src/less/style-ltr.less'],
|
||||||
dest: 'css/searxng.min.css',
|
dest: 'css/searxng.min.css',
|
||||||
nonull: true,
|
nonull: true,
|
||||||
filter: file_exists,
|
filter: file_exists,
|
||||||
@ -177,7 +177,7 @@ module.exports = function (grunt) {
|
|||||||
'chevron-up-outline': 'node_modules/ionicons/dist/svg/chevron-up-outline.svg',
|
'chevron-up-outline': 'node_modules/ionicons/dist/svg/chevron-up-outline.svg',
|
||||||
'chevron-right': 'node_modules/ionicons/dist/svg/chevron-forward-outline.svg',
|
'chevron-right': 'node_modules/ionicons/dist/svg/chevron-forward-outline.svg',
|
||||||
'chevron-left': 'node_modules/ionicons/dist/svg/chevron-back-outline.svg',
|
'chevron-left': 'node_modules/ionicons/dist/svg/chevron-back-outline.svg',
|
||||||
'menu-outline': 'node_modules/ionicons/dist/svg/menu-outline.svg',
|
'menu-outline': 'node_modules/ionicons/dist/svg/settings-outline.svg',
|
||||||
'ellipsis-vertical-outline': 'node_modules/ionicons/dist/svg/ellipsis-vertical-outline.svg',
|
'ellipsis-vertical-outline': 'node_modules/ionicons/dist/svg/ellipsis-vertical-outline.svg',
|
||||||
'magnet-outline': 'node_modules/ionicons/dist/svg/magnet-outline.svg',
|
'magnet-outline': 'node_modules/ionicons/dist/svg/magnet-outline.svg',
|
||||||
'globe-outline': 'node_modules/ionicons/dist/svg/globe-outline.svg',
|
'globe-outline': 'node_modules/ionicons/dist/svg/globe-outline.svg',
|
||||||
|
BIN
searx/static/themes/simple/js/searxng.min.js
vendored
BIN
searx/static/themes/simple/js/searxng.min.js
vendored
Binary file not shown.
@ -4,7 +4,8 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
max-height: 0;
|
max-height: 0;
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
|
|
||||||
.rounded-corners;
|
.rounded-corners;
|
||||||
|
|
||||||
&:active,
|
&:active,
|
||||||
@ -24,7 +25,7 @@
|
|||||||
|
|
||||||
> li {
|
> li {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 8px 0 8px 8px;
|
padding: 0.5rem;
|
||||||
|
|
||||||
&.active,
|
&.active,
|
||||||
&:active,
|
&:active,
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#main_results #results.only_template_images.image-detail-open #backToTop {
|
#main_results #results.only_template_images.image-detail-open #backToTop {
|
||||||
left: 56.75rem !important;
|
.ltr-left(56.75rem) !important;
|
||||||
right: inherit;
|
.ltr-right(inherit);
|
||||||
}
|
}
|
||||||
|
|
||||||
article.result-images .detail {
|
article.result-images .detail {
|
||||||
@ -15,8 +15,8 @@ article.result-images .detail {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 60rem;
|
.ltr-left(60rem);
|
||||||
right: 0;
|
.ltr-right(0);
|
||||||
top: @search-height;
|
top: @search-height;
|
||||||
transition: top 0.064s ease-in 0s;
|
transition: top 0.064s ease-in 0s;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -76,7 +76,7 @@ article.result-images .detail {
|
|||||||
h4,
|
h4,
|
||||||
p,
|
p,
|
||||||
a {
|
a {
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
}
|
}
|
||||||
|
|
||||||
p.result-content {
|
p.result-content {
|
||||||
@ -113,20 +113,23 @@ article.result-images .detail {
|
|||||||
|
|
||||||
a.result-detail-close {
|
a.result-detail-close {
|
||||||
top: 1rem;
|
top: 1rem;
|
||||||
left: 1rem;
|
.ltr-left(1rem);
|
||||||
padding: 0.4rem;
|
padding: 0.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.result-detail-previous {
|
a.result-detail-previous {
|
||||||
top: 1rem;
|
top: 1rem;
|
||||||
right: 6rem;
|
.ltr-right(6rem);
|
||||||
// center the icon by moving it slightly on the left
|
// center the icon by moving it slightly on the left
|
||||||
padding: 0.4rem 0.5rem 0.4rem 0.3rem;
|
padding-top: 0.4rem;
|
||||||
|
.ltr-padding-right(0.5rem);
|
||||||
|
padding-bottom: 0.4rem;
|
||||||
|
.ltr-padding-left(0.3rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
a.result-detail-next {
|
a.result-detail-next {
|
||||||
top: 1rem;
|
top: 1rem;
|
||||||
right: 2rem;
|
.ltr-right(2rem);
|
||||||
padding: 0.4rem;
|
padding: 0.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,7 +189,7 @@ article.result-images .detail {
|
|||||||
.loader {
|
.loader {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 1rem;
|
top: 1rem;
|
||||||
right: 50%;
|
.ltr-right(50%);
|
||||||
border-top: 0.5em solid var(--color-result-detail-loader-border);
|
border-top: 0.5em solid var(--color-result-detail-loader-border);
|
||||||
border-right: 0.5em solid var(--color-result-detail-loader-border);
|
border-right: 0.5em solid var(--color-result-detail-loader-border);
|
||||||
border-bottom: 0.5em solid var(--color-result-detail-loader-border);
|
border-bottom: 0.5em solid var(--color-result-detail-loader-border);
|
||||||
@ -205,7 +208,7 @@ article.result-images .detail {
|
|||||||
@media screen and (max-width: @tablet) {
|
@media screen and (max-width: @tablet) {
|
||||||
#results.image-detail-open article.result-images[data-vim-selected] .detail {
|
#results.image-detail-open article.result-images[data-vim-selected] .detail {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
.ltr-left(0);
|
||||||
|
|
||||||
a.result-images-source {
|
a.result-images-source {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -219,7 +222,7 @@ article.result-images .detail {
|
|||||||
}
|
}
|
||||||
|
|
||||||
a.result-detail-next {
|
a.result-detail-next {
|
||||||
right: 1rem;
|
.ltr-right(1rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,7 +230,7 @@ article.result-images .detail {
|
|||||||
@media screen and (max-width: @phone) {
|
@media screen and (max-width: @phone) {
|
||||||
#results.image-detail-open article.result-images[data-vim-selected] .detail {
|
#results.image-detail-open article.result-images[data-vim-selected] .detail {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
.ltr-left(0);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
|
||||||
a.result-images-source img {
|
a.result-images-source img {
|
||||||
@ -238,7 +241,7 @@ article.result-images .detail {
|
|||||||
|
|
||||||
.result-images-labels p span {
|
.result-images-labels p span {
|
||||||
width: inherit;
|
width: inherit;
|
||||||
margin-right: 1rem;
|
.ltr-margin-right(1rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
#main_index {
|
#main_index {
|
||||||
margin-top: 26vh;
|
margin-top: 26vh;
|
||||||
|
|
||||||
#linkto_preferences {
|
|
||||||
right: 1.8rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.index {
|
.index {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#tab-contentquery table td,
|
#tab-contentquery table td,
|
||||||
#tab-contentquery table th {
|
#tab-contentquery table th {
|
||||||
text-align: left !important;
|
.ltr-text-align-right() !important;
|
||||||
height: 3rem;
|
height: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,20 +18,23 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 5px 0 0 0;
|
padding: 5px 0 0 0;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
.ltr-float-left();
|
||||||
width: 300px;
|
width: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.value {
|
.value {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
float: left;
|
.ltr-float-left();
|
||||||
width: 15em;
|
width: 15em;
|
||||||
|
|
||||||
select,
|
select,
|
||||||
input[type="text"] {
|
input[type="text"] {
|
||||||
font-size: inherit !important;
|
font-size: inherit !important;
|
||||||
margin: 0 1rem 0 0;
|
margin-top: 0;
|
||||||
|
.ltr-margin-right(1rem);
|
||||||
|
margin-bottom: 0;
|
||||||
|
.ltr-margin-left(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
@ -63,7 +66,7 @@
|
|||||||
.description {
|
.description {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 5px 0 0 0;
|
padding: 5px 0 0 0;
|
||||||
float: left;
|
.ltr-float-right();
|
||||||
width: 50%;
|
width: 50%;
|
||||||
color: var(--color-settings-engine-description-font);
|
color: var(--color-settings-engine-description-font);
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
@ -79,6 +82,7 @@
|
|||||||
|
|
||||||
table.cookies {
|
table.cookies {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
direction: ltr;
|
||||||
|
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
@ -106,7 +110,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.category {
|
.category {
|
||||||
margin-right: 0.5rem;
|
.ltr-margin-right(0.5rem);
|
||||||
|
|
||||||
label {
|
label {
|
||||||
border: 2px solid transparent;
|
border: 2px solid transparent;
|
||||||
@ -121,7 +125,7 @@
|
|||||||
|
|
||||||
.name,
|
.name,
|
||||||
.shortcut {
|
.shortcut {
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
}
|
}
|
||||||
|
|
||||||
.preferences_back {
|
.preferences_back {
|
||||||
@ -153,7 +157,7 @@
|
|||||||
th.name {
|
th.name {
|
||||||
.engine-tooltip {
|
.engine-tooltip {
|
||||||
margin-top: 1.8rem;
|
margin-top: 1.8rem;
|
||||||
left: calc((100% - 85em) / 2 + 10em);
|
.ltr-left(calc((100% - 85em) / 2 + 10em));
|
||||||
max-width: 40rem;
|
max-width: 40rem;
|
||||||
|
|
||||||
.engine-description {
|
.engine-description {
|
||||||
@ -163,7 +167,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.engine-group {
|
.engine-group {
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
background: var(--color-settings-engine-group-background);
|
background: var(--color-settings-engine-group-background);
|
||||||
}
|
}
|
||||||
@ -175,6 +179,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.engine-tooltip {
|
.engine-tooltip {
|
||||||
left: 10em !important;
|
.ltr-left(10em) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#search_header {
|
#search_header {
|
||||||
padding: 1.5em 2em 0 @results-offset - 3rem;
|
padding-top: 1.5em;
|
||||||
|
.ltr-padding-right(2em);
|
||||||
|
.ltr-padding-left(@results-offset - 3rem);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: var(--color-header-background);
|
background: var(--color-header-background);
|
||||||
border-bottom: 1px solid var(--color-header-border);
|
border-bottom: 1px solid var(--color-header-border);
|
||||||
@ -24,7 +26,7 @@
|
|||||||
.category {
|
.category {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-right: 1rem;
|
.ltr-margin-right(1rem);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
input {
|
input {
|
||||||
@ -127,11 +129,11 @@
|
|||||||
|
|
||||||
#q {
|
#q {
|
||||||
outline: medium none;
|
outline: medium none;
|
||||||
padding-left: 12px;
|
.ltr-padding-left(12px);
|
||||||
padding-right: 0 !important;
|
.ltr-padding-right(0) !important;
|
||||||
border-right: none;
|
.ltr-border-right(none);
|
||||||
width: @search-width;
|
width: @search-width;
|
||||||
border-radius: 10px 0 0 10px;
|
.ltr-rounded-left-corners(10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
#q::-ms-clear,
|
#q::-ms-clear,
|
||||||
@ -140,8 +142,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#send_search {
|
#send_search {
|
||||||
border-left: none;
|
.ltr-border-left(none);
|
||||||
border-radius: 0 10px 10px 0;
|
.ltr-rounded-right-corners(10px);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@ -153,12 +155,15 @@
|
|||||||
.no-js #clear_search,
|
.no-js #clear_search,
|
||||||
.no-js #send_search {
|
.no-js #send_search {
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
border-left: 1px solid var(--color-search-border);
|
.ltr-border-left(1px solid var(--color-search-border));
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search_filters {
|
.search_filters {
|
||||||
margin: 0.6rem 0 0 @results-offset + 0.6rem;
|
margin-top: 0.6rem;
|
||||||
|
.ltr-margin-right(0);
|
||||||
|
margin-bottom: 0;
|
||||||
|
.ltr-margin-left(@results-offset + 0.6rem);
|
||||||
|
|
||||||
select {
|
select {
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
@ -177,7 +182,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search_filters {
|
.search_filters {
|
||||||
margin: 0.6rem 0 0 @results-tablet-offset + 3rem;
|
margin-top: 0.6rem;
|
||||||
|
.ltr-margin-right(0);
|
||||||
|
margin-bottom: 0;
|
||||||
|
.ltr-margin-left(@results-tablet-offset + 3rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#categories {
|
#categories {
|
||||||
@ -204,7 +212,7 @@
|
|||||||
|
|
||||||
#categories {
|
#categories {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
@ -243,7 +251,7 @@
|
|||||||
|
|
||||||
#main_results #q:placeholder-shown ~ #send_search {
|
#main_results #q:placeholder-shown ~ #send_search {
|
||||||
margin-right: 2.6rem;
|
margin-right: 2.6rem;
|
||||||
transition: margin-right 0.1s;
|
transition: margin-right 0.1s; // FIX RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
.search_filters {
|
.search_filters {
|
||||||
|
69
searx/static/themes/simple/src/less/style-ltr.less
Normal file
69
searx/static/themes/simple/src/less/style-ltr.less
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
.ltr-left(@offset) {
|
||||||
|
left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-right(@offset) {
|
||||||
|
right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-margin-right(@offset) {
|
||||||
|
margin-right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-margin-left(@offset) {
|
||||||
|
margin-left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-right(@offset) {
|
||||||
|
border-right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-left(@offset) {
|
||||||
|
border-left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-padding-right(@offset) {
|
||||||
|
padding-right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-padding-left(@offset) {
|
||||||
|
padding-left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-float-left() {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-float-right() {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-text-align-right() {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-rounded-left-corners(@radius) {
|
||||||
|
border-radius: @radius 0 0 @radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-rounded-right-corners(@radius) {
|
||||||
|
border-radius: 0 @radius @radius 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-text-align-left() {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-left-width(@offset) {
|
||||||
|
border-left-width: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-right-width(@offset) {
|
||||||
|
border-right-width: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-transform() {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@import "style.less";
|
@ -1,6 +1,134 @@
|
|||||||
|
.ltr-left(@offset) {
|
||||||
|
right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-right(@offset) {
|
||||||
|
left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-margin-right(@offset) {
|
||||||
|
margin-left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-margin-left(@offset) {
|
||||||
|
margin-right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-right(@offset) {
|
||||||
|
border-left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-left(@offset) {
|
||||||
|
border-right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-padding-right(@offset) {
|
||||||
|
padding-left: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-padding-left(@offset) {
|
||||||
|
padding-right: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-float-left() {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-float-right() {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-text-align-right() {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-rounded-left-corners(@radius) {
|
||||||
|
border-radius: 0 @radius @radius 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-rounded-right-corners(@radius) {
|
||||||
|
border-radius: @radius 0 0 @radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-text-align-left() {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-left-width(@offset) {
|
||||||
|
border-right-width: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-border-right-width(@offset) {
|
||||||
|
border-left-width: @offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ltr-transform() {
|
||||||
|
transform: scale(-1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
@import "style.less";
|
@import "style.less";
|
||||||
|
|
||||||
#search_submit {
|
#q,
|
||||||
left: 1px;
|
#sidebar .infobox dt bdi {
|
||||||
right: auto;
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// URL are displayed LTR but align on the right
|
||||||
|
#urls {
|
||||||
|
direction: initial;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
.result .url_wrapper {
|
||||||
|
justify-content: end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Image detail
|
||||||
|
#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p {
|
||||||
|
direction: rtl;
|
||||||
|
|
||||||
|
&.result-url {
|
||||||
|
// Display URL using the LTR direction
|
||||||
|
direction: ltr;
|
||||||
|
|
||||||
|
span {
|
||||||
|
// And put the label on the right
|
||||||
|
direction: rtl;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// select HTML element
|
||||||
|
@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {
|
||||||
|
select {
|
||||||
|
border-width: 0 0 0 2rem;
|
||||||
|
background-position-x: -2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// vim hotkey helps is not translated
|
||||||
|
#vim-hotkeys-help table {
|
||||||
|
direction: ltr;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Logo on the right
|
||||||
|
#main_preferences h1,
|
||||||
|
#main_stats h1 {
|
||||||
|
background-position-x: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
// patch of searx/static/themes/__common__/less/stats.less
|
||||||
|
.bar-chart-serie1,
|
||||||
|
.bar-chart-serie2 {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.engine-stats .engine-name,
|
||||||
|
.engine-stats .engine-score,
|
||||||
|
.engine-stats .result-count,
|
||||||
|
.engine-stats .response-time,
|
||||||
|
.engine-stats .engine-reliability {
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
|
.ltr-transform();
|
||||||
}
|
}
|
||||||
|
|
||||||
.ion-icon-small {
|
.ion-icon-small {
|
||||||
@ -78,9 +79,7 @@ main {
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main_preferences,
|
.page_with_header {
|
||||||
#main_about,
|
|
||||||
#main_stats {
|
|
||||||
margin: 2em auto;
|
margin: 2em auto;
|
||||||
width: 85em;
|
width: 85em;
|
||||||
}
|
}
|
||||||
@ -100,16 +99,8 @@ footer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#main_preferences h1,
|
.page_with_header .logo {
|
||||||
#main_stats h1 {
|
height: 40px;
|
||||||
background: url('../img/searxng.png') no-repeat;
|
|
||||||
background-size: contain;
|
|
||||||
min-height: 40px;
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
span {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="submit"],
|
input[type="submit"],
|
||||||
@ -139,8 +130,8 @@ a {
|
|||||||
|
|
||||||
article[data-vim-selected] {
|
article[data-vim-selected] {
|
||||||
background: var(--color-result-vim-selected);
|
background: var(--color-result-vim-selected);
|
||||||
border-left: 0.2rem solid var(--color-result-vim-arrow);
|
.ltr-border-left(0.2rem solid var(--color-result-vim-arrow));
|
||||||
.rounded-right-corners;
|
.ltr-rounded-right-corners(10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
article.result-images[data-vim-selected] {
|
article.result-images[data-vim-selected] {
|
||||||
@ -166,7 +157,7 @@ article[data-vim-selected].category-social {
|
|||||||
.result {
|
.result {
|
||||||
margin: @results-margin 0;
|
margin: @results-margin 0;
|
||||||
padding: @result-padding;
|
padding: @result-padding;
|
||||||
border-left: 0.2rem solid transparent;
|
.ltr-border-left(0.2rem solid transparent);
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
@ -264,15 +255,17 @@ article[data-vim-selected].category-social {
|
|||||||
|
|
||||||
img {
|
img {
|
||||||
&.thumbnail {
|
&.thumbnail {
|
||||||
float: left;
|
.ltr-float-left();
|
||||||
padding: 0.6rem 1rem 0 0;
|
padding-top: 0.6rem;
|
||||||
|
.ltr-padding-right(1rem);
|
||||||
width: 20rem;
|
width: 20rem;
|
||||||
height: unset; // remove heigth value that was needed for lazy loading
|
height: unset; // remove heigth value that was needed for lazy loading
|
||||||
}
|
}
|
||||||
|
|
||||||
&.image {
|
&.image {
|
||||||
float: left;
|
.ltr-float-left();
|
||||||
padding: 0.6rem 1rem 0 0;
|
padding-top: 0.6rem;
|
||||||
|
.ltr-padding-right(1rem);
|
||||||
width: 7rem;
|
width: 7rem;
|
||||||
max-height: 7rem;
|
max-height: 7rem;
|
||||||
object-fit: scale-down;
|
object-fit: scale-down;
|
||||||
@ -308,12 +301,15 @@ article[data-vim-selected].category-social {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.engines {
|
.engines {
|
||||||
float: right;
|
.ltr-float-right();
|
||||||
color: var(--color-result-engines-font);
|
color: var(--color-result-engines-font);
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
margin: 0 0.5em 0 0;
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
.ltr-margin-right(0.5rem);
|
||||||
|
.ltr-margin-left(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,9 +352,12 @@ article[data-vim-selected].category-social {
|
|||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 0;
|
.ltr-right(0);
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
margin: 0 0 4px 4px;
|
margin-top: 0;
|
||||||
|
.ltr-margin-right(0);
|
||||||
|
margin-bottom: 4px;
|
||||||
|
.ltr-margin-left(4px);
|
||||||
// color: @color-result-image-span-font;
|
// color: @color-result-image-span-font;
|
||||||
background-color: var(--color-result-image-span-background-hover);
|
background-color: var(--color-result-image-span-background-hover);
|
||||||
font-size: 0.7em;
|
font-size: 0.7em;
|
||||||
@ -367,7 +366,7 @@ article[data-vim-selected].category-social {
|
|||||||
|
|
||||||
.result-map {
|
.result-map {
|
||||||
img.image {
|
img.image {
|
||||||
float: right !important;
|
.ltr-float-right() !important;
|
||||||
height: 100px !important;
|
height: 100px !important;
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
}
|
}
|
||||||
@ -382,12 +381,12 @@ article[data-vim-selected].category-social {
|
|||||||
font-weight: inherit;
|
font-weight: inherit;
|
||||||
width: 17rem;
|
width: 17rem;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
}
|
}
|
||||||
|
|
||||||
td {
|
td {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -397,7 +396,10 @@ article[data-vim-selected].category-social {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#results {
|
#results {
|
||||||
margin: 1rem 2rem 0 @results-offset;
|
margin-top: 1rem;
|
||||||
|
.ltr-margin-right(2rem);
|
||||||
|
margin-bottom: 0;
|
||||||
|
.ltr-margin-left(@results-offset);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: @results-width 25rem;
|
grid-template-columns: @results-width 25rem;
|
||||||
grid-template-rows: min-content min-content 1fr min-content;
|
grid-template-rows: min-content min-content 1fr min-content;
|
||||||
@ -533,7 +535,10 @@ article[data-vim-selected].category-social {
|
|||||||
|
|
||||||
dt {
|
dt {
|
||||||
display: inline;
|
display: inline;
|
||||||
margin: 0.5em 0.25em 0.5em 0;
|
margin-top: 0.5em;
|
||||||
|
.ltr-margin-right(0.25em);
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
.ltr-margin-left(0);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@ -571,7 +576,7 @@ article[data-vim-selected].category-social {
|
|||||||
|
|
||||||
#linkto_preferences {
|
#linkto_preferences {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
.ltr-right(1.8rem);
|
||||||
top: 2.2rem;
|
top: 2.2rem;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: 0;
|
border: 0;
|
||||||
@ -608,7 +613,7 @@ article[data-vim-selected].category-social {
|
|||||||
background: var(--color-backtotop-background);
|
background: var(--color-backtotop-background);
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 8rem;
|
bottom: 8rem;
|
||||||
left: @results-width + @results-offset + (0.5 * @results-gap - 1.2em);
|
.ltr-left(@results-width + @results-offset + (0.5 * @results-gap - 1.2em));
|
||||||
transition: opacity 0.5s;
|
transition: opacity 0.5s;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
.rounded-corners;
|
.rounded-corners;
|
||||||
@ -632,9 +637,7 @@ article[data-vim-selected].category-social {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: @tablet) {
|
@media screen and (max-width: @tablet) {
|
||||||
#main_preferences,
|
.page_with_header {
|
||||||
#main_about,
|
|
||||||
#main_stats {
|
|
||||||
margin: 2rem 0.5rem;
|
margin: 2rem 0.5rem;
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
@ -647,9 +650,12 @@ article[data-vim-selected].category-social {
|
|||||||
clear: both;
|
clear: both;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
float: left;
|
.ltr-float-left();
|
||||||
max-width: 10em;
|
max-width: 10em;
|
||||||
margin: 0.5em 0.5em 0.5em 0;
|
margin-top: 0.5em;
|
||||||
|
.ltr-margin-right(0.5em);
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
.ltr-margin-left(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -690,7 +696,7 @@ article[data-vim-selected].category-social {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.engines {
|
.engines {
|
||||||
float: right;
|
.ltr-float-right();
|
||||||
padding: 0 0 3px 0;
|
padding: 0 0 3px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -750,12 +756,12 @@ article[data-vim-selected].category-social {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#backToTop {
|
#backToTop {
|
||||||
left: auto;
|
.ltr-left(auto);
|
||||||
right: 1rem;
|
.ltr-right(1rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pagination {
|
#pagination {
|
||||||
margin-right: 4rem;
|
.ltr-margin-right(4rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -767,12 +773,12 @@ article[data-vim-selected].category-social {
|
|||||||
|
|
||||||
#linkto_preferences {
|
#linkto_preferences {
|
||||||
top: 0.8rem;
|
top: 0.8rem;
|
||||||
right: 0.7rem;
|
.ltr-right(0.7rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#main_index #linkto_preferences {
|
#main_index #linkto_preferences {
|
||||||
top: 0.5rem;
|
top: 0.5rem;
|
||||||
right: 0.5rem;
|
.ltr-right(0.5rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#results {
|
#results {
|
||||||
|
@ -125,11 +125,11 @@ div.selectable_url {
|
|||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
margin: 0 0 1em 0;
|
margin: 0 0 1em 0;
|
||||||
border: 1px solid var(--color-toolkit-dialog-border);
|
border: 1px solid var(--color-toolkit-dialog-border);
|
||||||
text-align: left;
|
.ltr-text-align-left();
|
||||||
.rounded-corners;
|
.rounded-corners;
|
||||||
|
|
||||||
.close {
|
.close {
|
||||||
float: right;
|
.ltr-float-right();
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -3px;
|
top: -3px;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
@ -156,6 +156,10 @@ div.selectable_url {
|
|||||||
|
|
||||||
td {
|
td {
|
||||||
padding: 0 1em 0 0;
|
padding: 0 1em 0 0;
|
||||||
|
padding-top: 0;
|
||||||
|
.ltr-padding-right(1rem);
|
||||||
|
padding-bottom: 0;
|
||||||
|
.ltr-padding-left(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
@ -301,7 +305,10 @@ html body .tabs > input:checked {
|
|||||||
/* -- select -- */
|
/* -- select -- */
|
||||||
select {
|
select {
|
||||||
height: 2.4rem;
|
height: 2.4rem;
|
||||||
margin: 0 1rem 0 0;
|
margin-top: 0;
|
||||||
|
.ltr-margin-right(1rem);
|
||||||
|
margin-bottom: 0;
|
||||||
|
.ltr-margin-left(0);
|
||||||
padding: 0.2rem !important;
|
padding: 0.2rem !important;
|
||||||
color: var(--color-search-font);
|
color: var(--color-search-font);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
|
@ -1,102 +0,0 @@
|
|||||||
<div{% if rtl %} dir="ltr"{% endif %}>
|
|
||||||
<h1>About <a href="{{ url_for('index') }}">searxng</a></h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
SearXNG is a fork from the well-known <a href="https://github.com/searx/searx">searx</a>
|
|
||||||
<a href="https://en.wikipedia.org/wiki/Metasearch_engine"> metasearch engine</a>,
|
|
||||||
aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a>
|
|
||||||
while not storing information about its users.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>More about SearXNG ...</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ searx_git_url }}">SearXNG sources</a></li>
|
|
||||||
<li><a href="https://weblate.bubu1.eu/projects/searxng/">weblate</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<h2>Why use it?</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
SearXNG may not offer you as personalised results as Google, but it doesn't
|
|
||||||
generate a profile about you.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
SearXNG doesn't care about what you search for, never shares anything with a
|
|
||||||
third party, and it can't be used to compromise you.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
SearXNG is free software, the code is 100% open and you can help to make
|
|
||||||
it better. See more on <a href="{{ searx_git_url
|
|
||||||
}}">SearXNG sources</a>.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
If you do care about privacy, want to be a conscious user, or otherwise
|
|
||||||
believe in digital freedom, make SearXNG your default search engine or run
|
|
||||||
it on your own server
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Technical details - How does it work?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
SearXNG is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>,
|
|
||||||
inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>.
|
|
||||||
|
|
||||||
It provides basic privacy by mixing your queries with searches on other
|
|
||||||
platforms without storing search data. Queries are made using a POST request
|
|
||||||
on every browser (except Chromium-based browsers*). Therefore they show up
|
|
||||||
in neither our logs, nor your url history. In the case of Chromium-based
|
|
||||||
browser users there is an exception: searx uses the search bar to perform GET
|
|
||||||
requests.
|
|
||||||
|
|
||||||
SearXNG can be added to your browser's search bar; moreover, it can be set as
|
|
||||||
the default search engine.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2 id='add to browser'>How to set as the default search engine?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
SearXNG supports <a href="https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md">OpenSearch</a>.
|
|
||||||
For more information on changing your default search engine, see your browser's documentation:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox">Firefox</a></li>
|
|
||||||
<li><a href="https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine">Microsoft Edge</a></li>
|
|
||||||
<li>Chromium-based browsers <a href="https://www.chromium.org/tab-to-search">only add websites that the user navigates to without a path.</a>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Where to find anonymous usage statistics of this instance ?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>How can I make it my own?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
SearXNG appreciates your concern regarding logs, so take the code from
|
|
||||||
the <a href="{{ searx_git_url }}">SearXNG project</a> and
|
|
||||||
run it yourself!
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Add your instance to this <a href="{{ get_setting('brand.public_instances') }}"> list of
|
|
||||||
public instances</a> to help other people reclaim their privacy and make the
|
|
||||||
Internet freer! The more decentralized the Internet is, the more freedom we
|
|
||||||
have!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Where are the docs & code of this instance?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
See the <a href="{{ get_setting('brand.docs_url') }}">SearXNG docs</a>
|
|
||||||
and <a href="{{ searx_git_url }}">SearXNG sources</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{% include "__common__/aboutextend.html" ignore missing %}
|
|
@ -1,5 +1,6 @@
|
|||||||
{% extends "oscar/base.html" %}
|
{% extends "oscar/base.html" %}
|
||||||
{% block title %}{{ _('about') }} - {% endblock %}
|
{% block title %}{{ _('about') }} - {% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% include '__common__/about.html' %}
|
{{ help.about | safe }}
|
||||||
|
{% include "__common__/aboutextend.html" ignore missing %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{% extends 'simple/base.html' %}
|
{% extends 'simple/page_with_header.html' %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% include '__common__/about.html' %}
|
{{ help.about | safe }}
|
||||||
|
{% include "__common__/aboutextend.html" ignore missing %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
<link rel="icon" href="{{ url_for('static', filename='img/favicon.svg') }}" type="image/svg+xml">
|
<link rel="icon" href="{{ url_for('static', filename='img/favicon.svg') }}" type="image/svg+xml">
|
||||||
</head>
|
</head>
|
||||||
<body class="{{ endpoint }}_endpoint" >
|
<body class="{{ endpoint }}_endpoint" >
|
||||||
<main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}">
|
<main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}" class="{{body_class}}">
|
||||||
{% if errors %}
|
{% if errors %}
|
||||||
<div class="dialog-error" role="alert">
|
<div class="dialog-error" role="alert">
|
||||||
<a href="#" class="close" aria-label="close" title="close">×</a>
|
<a href="#" class="close" aria-label="close" title="close">×</a>
|
||||||
@ -47,6 +47,12 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% block linkto_preferences %}
|
||||||
|
{% from 'simple/icons.html' import icon_big %}
|
||||||
|
<nav id="linkto_preferences"><a href="{{ url_for('preferences') }}" aria-label="{{ _('preferences') }}">{{ icon_big('menu-outline') }}</a></nav>
|
||||||
|
{% endblock %}
|
||||||
|
{% block header %}
|
||||||
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</main>
|
</main>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
'chevron-up-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M112 328l144-144 144 144"/></svg>',
|
'chevron-up-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M112 328l144-144 144 144"/></svg>',
|
||||||
'chevron-right':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M184 112l144 144-144 144"/></svg>',
|
'chevron-right':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M184 112l144 144-144 144"/></svg>',
|
||||||
'chevron-left':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M328 112L184 256l144 144"/></svg>',
|
'chevron-left':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M328 112L184 256l144 144"/></svg>',
|
||||||
'menu-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M80 160h352M80 256h352M80 352h352"/></svg>',
|
'menu-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M262.29 192.31a64 64 0 1057.4 57.4 64.13 64.13 0 00-57.4-57.4zM416.39 256a154.34 154.34 0 01-1.53 20.79l45.21 35.46a10.81 10.81 0 012.45 13.75l-42.77 74a10.81 10.81 0 01-13.14 4.59l-44.9-18.08a16.11 16.11 0 00-15.17 1.75A164.48 164.48 0 01325 400.8a15.94 15.94 0 00-8.82 12.14l-6.73 47.89a11.08 11.08 0 01-10.68 9.17h-85.54a11.11 11.11 0 01-10.69-8.87l-6.72-47.82a16.07 16.07 0 00-9-12.22 155.3 155.3 0 01-21.46-12.57 16 16 0 00-15.11-1.71l-44.89 18.07a10.81 10.81 0 01-13.14-4.58l-42.77-74a10.8 10.8 0 012.45-13.75l38.21-30a16.05 16.05 0 006-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 00-6.07-13.94l-38.19-30A10.81 10.81 0 0149.48 186l42.77-74a10.81 10.81 0 0113.14-4.59l44.9 18.08a16.11 16.11 0 0015.17-1.75A164.48 164.48 0 01187 111.2a15.94 15.94 0 008.82-12.14l6.73-47.89A11.08 11.08 0 01213.23 42h85.54a11.11 11.11 0 0110.69 8.87l6.72 47.82a16.07 16.07 0 009 12.22 155.3 155.3 0 0121.46 12.57 16 16 0 0015.11 1.71l44.89-18.07a10.81 10.81 0 0113.14 4.58l42.77 74a10.8 10.8 0 01-2.45 13.75l-38.21 30a16.05 16.05 0 00-6.05 14.08c.33 4.14.55 8.3.55 12.47z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
|
||||||
'ellipsis-vertical-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><circle cx="256" cy="256" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="416" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="96" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
|
'ellipsis-vertical-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><circle cx="256" cy="256" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="416" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="96" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
|
||||||
'magnet-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M421.83 293.82A144 144 0 00218.18 90.17M353.94 225.94a48 48 0 00-67.88-67.88" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M192 464v-48M90.18 421.82l33.94-33.94M48 320h48"/><path d="M286.06 158.06L172.92 271.19a32 32 0 01-45.25 0L105 248.57a32 32 0 010-45.26L218.18 90.17M421.83 293.82L308.69 407a32 32 0 01-45.26 0l-22.62-22.63a32 32 0 010-45.26l113.13-113.17M139.6 169.98l67.88 67.89M275.36 305.75l67.89 67.88" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/></svg>',
|
'magnet-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M421.83 293.82A144 144 0 00218.18 90.17M353.94 225.94a48 48 0 00-67.88-67.88" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M192 464v-48M90.18 421.82l33.94-33.94M48 320h48"/><path d="M286.06 158.06L172.92 271.19a32 32 0 01-45.25 0L105 248.57a32 32 0 010-45.26L218.18 90.17M421.83 293.82L308.69 407a32 32 0 01-45.26 0l-22.62-22.63a32 32 0 010-45.26l113.13-113.17M139.6 169.98l67.88 67.89M275.36 305.75l67.89 67.88" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/></svg>',
|
||||||
'globe-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M117.33 117.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 394.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32" d="M256 48v416M464 256H48"/></svg>',
|
'globe-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M117.33 117.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 394.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32" d="M256 48v416M464 256H48"/></svg>',
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
<link rel="preload" href="{{ url_for('static', filename='img/searxng.png') }}" as="image" />
|
<link rel="preload" href="{{ url_for('static', filename='img/searxng.png') }}" as="image" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<nav id="linkto_preferences"><a href="{{ url_for('preferences') }}">{{ icon_big('menu-outline') }}</a></nav>
|
|
||||||
<div class="index">
|
<div class="index">
|
||||||
<div class="title"><h1>SearXNG</h1></div>
|
<div class="title"><h1>SearXNG</h1></div>
|
||||||
{% include 'simple/simple_search.html' %}
|
{% include 'simple/simple_search.html' %}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
{% from 'simple/icons.html' import icon_small %}
|
||||||
|
|
||||||
<!-- Draw favicon -->
|
<!-- Draw favicon -->
|
||||||
{% macro draw_favicon(favicon) -%}
|
{% macro draw_favicon(favicon) -%}
|
||||||
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='themes/simple/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}">
|
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='themes/simple/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}">
|
||||||
|
5
searx/templates/simple/page_with_header.html
Normal file
5
searx/templates/simple/page_with_header.html
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{% set body_class = "page_with_header" %}
|
||||||
|
{% extends "simple/base.html" %}
|
||||||
|
{% block header %}
|
||||||
|
<a href="{{ url_for('index') }}"><img class="logo" src="{{ url_for('static', filename='img/searxng.png') }}" alt="SearXNG"></a>
|
||||||
|
{% endblock %}
|
@ -1,7 +1,7 @@
|
|||||||
{% from 'simple/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
|
{% from 'simple/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
|
||||||
{% from 'simple/icons.html' import icon_big %}
|
{% from 'simple/icons.html' import icon_big %}
|
||||||
|
|
||||||
{% extends "simple/base.html" %}
|
{% extends "simple/page_with_header.html" %}
|
||||||
|
|
||||||
{%- macro plugin_preferences(section) -%}
|
{%- macro plugin_preferences(section) -%}
|
||||||
{%- for plugin in plugins -%}
|
{%- for plugin in plugins -%}
|
||||||
@ -94,11 +94,9 @@
|
|||||||
{%- endmacro -%}
|
{%- endmacro -%}
|
||||||
|
|
||||||
{% block head %} {% endblock %}
|
{% block head %} {% endblock %}
|
||||||
|
{% block linkto_preferences %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<h1>{{ _('Preferences') }}</h1>
|
||||||
<a href="{{ url_for('index') }}"><h1><span>SearXNG</span></h1></a>
|
|
||||||
|
|
||||||
<h2>{{ _('Preferences') }}</h2>
|
|
||||||
|
|
||||||
<form id="search_form" method="post" action="{{ url_for('preferences') }}">
|
<form id="search_form" method="post" action="{{ url_for('preferences') }}">
|
||||||
|
|
||||||
@ -401,9 +399,9 @@
|
|||||||
{{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
|
{{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<input type="submit" value="{{ _('save') }}" />
|
<input type="submit" value="{{ _('Save') }}" />
|
||||||
<div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
|
<div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
|
||||||
<div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
|
<div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('Back') }}</a></div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
{% block title %}{% if query_in_title %}{{- q|e }} - {% endif %}{% endblock %}
|
{% block title %}{% if query_in_title %}{{- q|e }} - {% endif %}{% endblock %}
|
||||||
{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&categories={{ selected_categories|join(",") | replace(' ','+') }}&pageno={{ pageno }}&time_range={{ time_range }}&language={{ current_language }}&safesearch={{ safesearch }}&format=rss">{% endblock %}
|
{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&categories={{ selected_categories|join(",") | replace(' ','+') }}&pageno={{ pageno }}&time_range={{ time_range }}&language={{ current_language }}&safesearch={{ safesearch }}&format=rss">{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<nav id="linkto_preferences"><a href="{{ url_for('preferences') }}">{{ icon_big('menu-outline') }}</a></nav>
|
|
||||||
{% include 'simple/search.html' %}
|
{% include 'simple/search.html' %}
|
||||||
|
|
||||||
{% if results and results|map(attribute='template')|unique|list|count == 1 %}
|
{% if results and results|map(attribute='template')|unique|list|count == 1 %}
|
||||||
@ -162,7 +161,7 @@
|
|||||||
<input type="hidden" name="safesearch" value="{{ safesearch }}" >
|
<input type="hidden" name="safesearch" value="{{ safesearch }}" >
|
||||||
<input type="hidden" name="theme" value="{{ theme }}" >
|
<input type="hidden" name="theme" value="{{ theme }}" >
|
||||||
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}
|
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}
|
||||||
<button type="submit">{{ icon_small('chevron-left') }} {{ _('previous page') }}</button>
|
<button type="submit">{{ icon_small('chevron-left') }} {{ _('Previous page') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -179,7 +178,7 @@
|
|||||||
<input type="hidden" name="safesearch" value="{{ safesearch }}" >
|
<input type="hidden" name="safesearch" value="{{ safesearch }}" >
|
||||||
<input type="hidden" name="theme" value="{{ theme }}" >
|
<input type="hidden" name="theme" value="{{ theme }}" >
|
||||||
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}
|
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}
|
||||||
<button type="submit">{{ _('next page') }} {{ icon_small('chevron-right') }}</button>
|
<button type="submit">{{ _('Next page') }} {{ icon_small('chevron-right') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{% from 'simple/icons.html' import icon_big %}
|
{% from 'simple/icons.html' import icon_big %}
|
||||||
{% from '__common__/new_issue.html' import new_issue with context %}
|
{% from '__common__/new_issue.html' import new_issue with context %}
|
||||||
|
|
||||||
{% extends "simple/base.html" %}
|
{% extends "simple/page_with_header.html" %}
|
||||||
|
|
||||||
{%- macro th_sort(column_order, column_name) -%}
|
{%- macro th_sort(column_order, column_name) -%}
|
||||||
{% if selected_engine_name %}
|
{% if selected_engine_name %}
|
||||||
@ -15,10 +15,7 @@
|
|||||||
|
|
||||||
{% block head %} {% endblock %}
|
{% block head %} {% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<h1>{% if selected_engine_name %}<a href="{{ url_for('stats') }}">{% endif %}{{ _('Engine stats') }}{% if selected_engine_name %}</a> - {{ selected_engine_name }}{% endif %}</h1>
|
||||||
<a href="{{ url_for('index') }}"><h1><span>SearXNG</span></h1></a>
|
|
||||||
|
|
||||||
<h2>{% if selected_engine_name %}<a href="{{ url_for('stats') }}">{% endif %}{{ _('Engine stats') }}{% if selected_engine_name %}</a> - {{ selected_engine_name }}{% endif %}</h2>
|
|
||||||
|
|
||||||
{% if not engine_stats.get('time') %}
|
{% if not engine_stats.get('time') %}
|
||||||
{{ _('There is currently no data available. ') }}
|
{{ _('There is currently no data available. ') }}
|
||||||
|
Binary file not shown.
@ -8,187 +8,188 @@
|
|||||||
# d506c013dc1b502e7a53f91ebcbf8f29_985b4b3, 2017-2018
|
# d506c013dc1b502e7a53f91ebcbf8f29_985b4b3, 2017-2018
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-31 07:17+0000\n"
|
"PO-Revision-Date: 2022-01-28 07:16+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Arabic <https://weblate.bubu1.eu/projects/searxng/searxng/ar/>"
|
||||||
|
"\n"
|
||||||
"Language: ar\n"
|
"Language: ar\n"
|
||||||
"Language-Team: Arabic "
|
|
||||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/ar/>\n"
|
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
|
|
||||||
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||||
|
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||||
|
"X-Generator: Weblate 4.10.1\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "ملفات"
|
msgstr "ملفات"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "الرئيسية"
|
msgstr "الرئيسية"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "موسيقى"
|
msgstr "موسيقى"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "شبكات التواصل الإجتماعي"
|
msgstr "شبكات التواصل الإجتماعي"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "صور"
|
msgstr "صور"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "فيديوهات"
|
msgstr "فيديوهات"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "علوم و تكنولوجيا"
|
msgstr "علوم و تكنولوجيا"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "أخبار"
|
msgstr "أخبار"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "خرائط"
|
msgstr "خرائط"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr "onions"
|
msgstr "onions"
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "علوم"
|
msgstr "علوم"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr "تلقائي"
|
msgstr "تلقائي"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr "فاتح"
|
msgstr "فاتح"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr "مظلم"
|
msgstr "مظلم"
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr "نفذ الوقت"
|
msgstr "نفذ الوقت"
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr "خطأ في بروتوكول HTTP"
|
msgstr "خطأ في بروتوكول HTTP"
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr "خطأ في الشبكة"
|
msgstr "خطأ في الشبكة"
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr "تعطل غير متوقع"
|
msgstr "تعطل غير متوقع"
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr "خطأ HTTP"
|
msgstr "خطأ HTTP"
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr "خطأ في اتصال HTTP"
|
msgstr "خطأ في اتصال HTTP"
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr "خطأ في وكيل البروكسي"
|
msgstr "خطأ في وكيل البروكسي"
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr "الكثير من الطلبات"
|
msgstr "الكثير من الطلبات"
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr "خطأ في API الخادم"
|
msgstr "خطأ في API الخادم"
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "تعذر العثور على عناصر"
|
msgstr "تعذر العثور على عناصر"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "المصدر"
|
msgstr "المصدر"
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "إنّ الإعدادات خاطئة، يرجى تعديل خياراتك"
|
msgstr "إنّ الإعدادات خاطئة، يرجى تعديل خياراتك"
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "إعدادات غير صالحة"
|
msgstr "إعدادات غير صالحة"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "خطأ في البحث"
|
msgstr "خطأ في البحث"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "قبل دقائق"
|
msgstr "قبل دقائق"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "قبل {hours} ساعات، {minutes} دقائق"
|
msgstr "قبل {hours} ساعات، {minutes} دقائق"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr "معلق"
|
msgstr "معلق"
|
||||||
|
|
||||||
@ -389,13 +390,13 @@ msgstr "ملف تورنت"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "النسخة المخبأة"
|
msgstr "النسخة المخبأة"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr "النفاذ عبر البروكسي"
|
msgstr "النفاذ عبر البروكسي"
|
||||||
|
|
||||||
@ -523,7 +524,6 @@ msgstr "القوائم الإفتراضية"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "لغة البحث"
|
msgstr "لغة البحث"
|
||||||
|
|
||||||
@ -611,12 +611,12 @@ msgstr "يقوم بتغيير لغة واجهة البحث"
|
|||||||
#: searx/templates/oscar/preferences.html:210
|
#: searx/templates/oscar/preferences.html:210
|
||||||
#: searx/templates/simple/preferences.html:197
|
#: searx/templates/simple/preferences.html:197
|
||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
msgstr ""
|
msgstr "السمة"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:211
|
#: searx/templates/oscar/preferences.html:211
|
||||||
#: searx/templates/simple/preferences.html:205
|
#: searx/templates/simple/preferences.html:205
|
||||||
msgid "Change SearXNG layout"
|
msgid "Change SearXNG layout"
|
||||||
msgstr ""
|
msgstr "تغيير مظهر سيركس"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:222
|
#: searx/templates/oscar/preferences.html:222
|
||||||
#: searx/templates/oscar/preferences.html:228
|
#: searx/templates/oscar/preferences.html:228
|
||||||
@ -660,10 +660,11 @@ msgstr "عرض روابط نتائج البحث في ألسنة جديدة لل
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "الطريقة"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -678,7 +679,7 @@ msgstr "وكيل بروكسي الصور"
|
|||||||
#: searx/templates/oscar/preferences.html:274
|
#: searx/templates/oscar/preferences.html:274
|
||||||
#: searx/templates/simple/preferences.html:256
|
#: searx/templates/simple/preferences.html:256
|
||||||
msgid "Proxying image results through SearXNG"
|
msgid "Proxying image results through SearXNG"
|
||||||
msgstr ""
|
msgstr "تمرير نتائج البحث عن الصور عبر بروكسي SearXNG"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:277
|
#: searx/templates/oscar/preferences.html:277
|
||||||
#: searx/templates/oscar/preferences.html:288
|
#: searx/templates/oscar/preferences.html:288
|
||||||
@ -717,7 +718,7 @@ msgstr "تعطيل الكل"
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -852,12 +853,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "حفظ"
|
msgstr "حفظ"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "العودة"
|
msgstr "العودة"
|
||||||
|
|
||||||
@ -901,13 +900,11 @@ msgstr "حاول البحث عن :"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "الصفحة التالية"
|
msgstr "الصفحة التالية"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "الصفحة السابقة"
|
msgstr "الصفحة السابقة"
|
||||||
|
|
||||||
@ -986,7 +983,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/result_templates/files.html:35
|
#: searx/templates/oscar/result_templates/files.html:35
|
||||||
#: searx/templates/oscar/stats.html:126 searx/templates/simple/stats.html:125
|
#: searx/templates/oscar/stats.html:126 searx/templates/simple/stats.html:125
|
||||||
msgid "Filename"
|
msgid "Filename"
|
||||||
msgstr ""
|
msgstr "اسم الملف"
|
||||||
|
|
||||||
#: searx/templates/oscar/stats.html:127 searx/templates/simple/stats.html:126
|
#: searx/templates/oscar/stats.html:127 searx/templates/simple/stats.html:126
|
||||||
msgid "Function"
|
msgid "Function"
|
||||||
@ -1040,7 +1037,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/messages/first_time.html:7
|
#: searx/templates/oscar/messages/first_time.html:7
|
||||||
msgid "It look like you are using SearXNG first time."
|
msgid "It look like you are using SearXNG first time."
|
||||||
msgstr ""
|
msgstr "يظهر أنك تستخدم محرك سيركس لأول مرة."
|
||||||
|
|
||||||
#: searx/templates/oscar/messages/no_cookies.html:3
|
#: searx/templates/oscar/messages/no_cookies.html:3
|
||||||
msgid "Information!"
|
msgid "Information!"
|
||||||
@ -1064,6 +1061,8 @@ msgstr "لم تتمكن المحركات من العثور على أية نتي
|
|||||||
#: searx/templates/simple/messages/no_results.html:15
|
#: searx/templates/simple/messages/no_results.html:15
|
||||||
msgid "Please, try again later or find another SearXNG instance."
|
msgid "Please, try again later or find another SearXNG instance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"يرجى إعادة المحاولة لاحقًا. إن كنت في عجلة من أمرك، ندعوك إلى البحث عن مثيل "
|
||||||
|
"خادم آخر لمحرك سيركس."
|
||||||
|
|
||||||
#: searx/templates/oscar/messages/no_results.html:17
|
#: searx/templates/oscar/messages/no_results.html:17
|
||||||
#: searx/templates/simple/messages/no_results.html:20
|
#: searx/templates/simple/messages/no_results.html:20
|
||||||
@ -1239,10 +1238,26 @@ msgstr "محركات البحث المُستخدَمة حاليًا"
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "يدعم اللغة المختارة"
|
msgstr "يدعم اللغة المختارة"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "حفظ"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr "الخلف"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "الإجابات"
|
msgstr "الإجابات"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr "الصفحة السابقة"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr "الصفحة التالية"
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1379,3 +1394,11 @@ msgstr "محرك"
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "الطريقة"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-10 07:17+0000\n"
|
"PO-Revision-Date: 2021-12-10 07:17+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language: bg\n"
|
"Language: bg\n"
|
||||||
@ -21,172 +21,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "файлове"
|
msgstr "файлове"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "общо"
|
msgstr "общо"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "музика"
|
msgstr "музика"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "социална мрежа"
|
msgstr "социална мрежа"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "изображения"
|
msgstr "изображения"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "видео"
|
msgstr "видео"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "IT"
|
msgstr "IT"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "новини"
|
msgstr "новини"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "карта"
|
msgstr "карта"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr "onions"
|
msgstr "onions"
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "наука"
|
msgstr "наука"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr "автоматичен"
|
msgstr "автоматичен"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr "светъл"
|
msgstr "светъл"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr "тъмен"
|
msgstr "тъмен"
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr "изчакване"
|
msgstr "изчакване"
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr "грешка при анализа"
|
msgstr "грешка при анализа"
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr "Грешка в протокола HTTP"
|
msgstr "Грешка в протокола HTTP"
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr "мрежова грешка"
|
msgstr "мрежова грешка"
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr "неочакван срив"
|
msgstr "неочакван срив"
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr "HTTP грешка"
|
msgstr "HTTP грешка"
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr "HTTP грешка във връзката"
|
msgstr "HTTP грешка във връзката"
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr "прокси грешка"
|
msgstr "прокси грешка"
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr "Кепча"
|
msgstr "Кепча"
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr "твърде много искания"
|
msgstr "твърде много искания"
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr "отказан достъп"
|
msgstr "отказан достъп"
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr "грешка в API на сървъра"
|
msgstr "грешка в API на сървъра"
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Не е намерен артикул"
|
msgstr "Не е намерен артикул"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Източник"
|
msgstr "Източник"
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "Неправилни настройки, моля проверете предпочитанията си."
|
msgstr "Неправилни настройки, моля проверете предпочитанията си."
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "невалидни настройки"
|
msgstr "невалидни настройки"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "грешка при търсенето"
|
msgstr "грешка при търсенето"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "преди {minutes} минута(минути)"
|
msgstr "преди {minutes} минута(минути)"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "преди {hours} час(ове), {minutes} минута(минути)"
|
msgstr "преди {hours} час(ове), {minutes} минута(минути)"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr "преустановен"
|
msgstr "преустановен"
|
||||||
|
|
||||||
@ -396,13 +396,13 @@ msgstr "торент файл"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "кеширана"
|
msgstr "кеширана"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -530,7 +530,6 @@ msgstr "Първоначални категории"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Език на търсене"
|
msgstr "Език на търсене"
|
||||||
|
|
||||||
@ -667,10 +666,11 @@ msgstr "Отвори връзките в нов раздел."
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Метод"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -724,7 +724,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -863,12 +863,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "запази"
|
msgstr "запази"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "назад"
|
msgstr "назад"
|
||||||
|
|
||||||
@ -912,13 +910,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "следваща страница"
|
msgstr "следваща страница"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "предишна страница"
|
msgstr "предишна страница"
|
||||||
|
|
||||||
@ -1250,10 +1246,26 @@ msgstr "Използвани търсачки в момента"
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Поддържка на избраният език"
|
msgstr "Поддържка на избраният език"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Отговори"
|
msgstr "Отговори"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1390,3 +1402,12 @@ msgstr "Търсачка"
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Метод"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-17 07:17+0000\n"
|
"PO-Revision-Date: 2021-12-17 07:17+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language: bo\n"
|
"Language: bo\n"
|
||||||
@ -21,172 +21,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "ཡིག་ཚགས།"
|
msgstr "ཡིག་ཚགས།"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "དྲ་སྦྲེལ།"
|
msgstr "དྲ་སྦྲེལ།"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "རོལ་མོ།"
|
msgstr "རོལ་མོ།"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "སྤྱི་འབྲེལ།"
|
msgstr "སྤྱི་འབྲེལ།"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "པར་རིས།"
|
msgstr "པར་རིས།"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "བརྙན་ཟློས།"
|
msgstr "བརྙན་ཟློས།"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "ཆ་འཕྲིན་ལག་རྩལ།"
|
msgstr "ཆ་འཕྲིན་ལག་རྩལ།"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "གསར་འགྱུར།"
|
msgstr "གསར་འགྱུར།"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "ས་བཀྲ།"
|
msgstr "ས་བཀྲ།"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "ཚན་རིག"
|
msgstr "ཚན་རིག"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
|
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།ཁྱེད་ཀྱིས་གདམ་ཀ་ལ་བཅོས་སྒྲིག་གཏོང་རོགས།"
|
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།ཁྱེད་ཀྱིས་གདམ་ཀ་ལ་བཅོས་སྒྲིག་གཏོང་རོགས།"
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།"
|
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "འཚོལ་བཤེར་ལ་ནོར་འཁྲུལ་བྱུང་།"
|
msgstr "འཚོལ་བཤེར་ལ་ནོར་འཁྲུལ་བྱུང་།"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "སྐར་མ་ {minutes} སྔོན་ལ།"
|
msgstr "སྐར་མ་ {minutes} སྔོན་ལ།"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "ཆུ་ཚོད་ {hours} དང་སྐར་མ {minutes} སྔོན་ལ།"
|
msgstr "ཆུ་ཚོད་ {hours} དང་སྐར་མ {minutes} སྔོན་ལ།"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -391,13 +391,13 @@ msgstr "ས་བོན་ཡིག་ཆ།"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "འདྲ་བཤུས་རྒྱབ་ཚར།"
|
msgstr "འདྲ་བཤུས་རྒྱབ་ཚར།"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr "མངག་བཅོལ་བྱེད་ཟིན།"
|
msgstr "མངག་བཅོལ་བྱེད་ཟིན།"
|
||||||
|
|
||||||
@ -525,7 +525,6 @@ msgstr "གཞི་བཞག་གི་རིགས།"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "འཚོལ་བཤེར་ནང་དོན་མཚོན་བྱེད་ཀྱི་སྐད་རིགས།"
|
msgstr "འཚོལ་བཤེར་ནང་དོན་མཚོན་བྱེད་ཀྱི་སྐད་རིགས།"
|
||||||
|
|
||||||
@ -662,10 +661,11 @@ msgstr "ཤོག་ངོས་གསར་བ་ཞིག་ནས་དྲ་
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "ཐབས་ཤེས།"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -719,7 +719,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -854,12 +854,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "གསོག་འཇོག"
|
msgstr "གསོག་འཇོག"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "ཕྱིར་ལོག"
|
msgstr "ཕྱིར་ལོག"
|
||||||
|
|
||||||
@ -903,13 +901,11 @@ msgstr "འཚོལ་བཤེར་ནང་དོན་ནི།"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "དྲ་ངོས་གཞུག་མ།"
|
msgstr "དྲ་ངོས་གཞུག་མ།"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "དྲ་ངོས་སྔོན་མ།"
|
msgstr "དྲ་ངོས་སྔོན་མ།"
|
||||||
|
|
||||||
@ -1241,10 +1237,26 @@ msgstr "ཉེ་ལམ་སྤྱད་ཟིན་པའི་འཚོལ་
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "རྒྱབ་སྐྱོར་ཐོབ་པའི་སྐད་རིགས་གདམ་གསེས།"
|
msgstr "རྒྱབ་སྐྱོར་ཐོབ་པའི་སྐད་རིགས་གདམ་གསེས།"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "ལན།"
|
msgstr "ལན།"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1385,3 +1397,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "ཐབས་ཤེས།"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2021-11-03 08:06+0000\n"
|
"PO-Revision-Date: 2021-11-03 08:06+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language: ca\n"
|
"Language: ca\n"
|
||||||
@ -22,172 +22,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "fitxers"
|
msgstr "fitxers"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "general"
|
msgstr "general"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "música"
|
msgstr "música"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "xarxes socials"
|
msgstr "xarxes socials"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "imatges"
|
msgstr "imatges"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "vídeos"
|
msgstr "vídeos"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "informàtica"
|
msgstr "informàtica"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "notícies"
|
msgstr "notícies"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "mapa"
|
msgstr "mapa"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "ciència"
|
msgstr "ciència"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "No s'ha trobat cap element"
|
msgstr "No s'ha trobat cap element"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "La configuració no és vàlida, editeu-la"
|
msgstr "La configuració no és vàlida, editeu-la"
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "La configuració no és vàlida"
|
msgstr "La configuració no és vàlida"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "error en la cerca"
|
msgstr "error en la cerca"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "fa {minutes} minuts"
|
msgstr "fa {minutes} minuts"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "fa {hours} hores i {minutes} minuts"
|
msgstr "fa {hours} hores i {minutes} minuts"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -399,13 +399,13 @@ msgstr "fitxer torrent"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "en memòria cau"
|
msgstr "en memòria cau"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr "en servidor intermediari"
|
msgstr "en servidor intermediari"
|
||||||
|
|
||||||
@ -533,7 +533,6 @@ msgstr "Categories predeterminades"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Llengua de cerca"
|
msgstr "Llengua de cerca"
|
||||||
|
|
||||||
@ -672,10 +671,11 @@ msgstr "Obre els enllaços de resultats en una pestanya nova"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Mètode"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -732,7 +732,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -874,12 +874,10 @@ msgstr ""
|
|||||||
"resultats."
|
"resultats."
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "desa"
|
msgstr "desa"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "enrere"
|
msgstr "enrere"
|
||||||
|
|
||||||
@ -923,13 +921,11 @@ msgstr "Proveu a cercar:"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "pàgina següent"
|
msgstr "pàgina següent"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "pàgina anterior"
|
msgstr "pàgina anterior"
|
||||||
|
|
||||||
@ -1261,10 +1257,26 @@ msgstr "Motors de cerca usats actualment"
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Suporta la llengua seleccionada"
|
msgstr "Suporta la llengua seleccionada"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Respostes"
|
msgstr "Respostes"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1408,3 +1420,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Mètode"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -11,8 +11,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-31 07:17+0000\n"
|
"PO-Revision-Date: 2022-01-23 20:00+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"Language-Team: Czech "
|
"Language-Team: Czech "
|
||||||
@ -24,172 +24,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "soubory"
|
msgstr "soubory"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "obecné"
|
msgstr "obecné"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "hudba"
|
msgstr "hudba"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "sociální media"
|
msgstr "sociální media"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "obrázky"
|
msgstr "obrázky"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "videa"
|
msgstr "videa"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "IT"
|
msgstr "IT"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "zprávy"
|
msgstr "zprávy"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "mapa"
|
msgstr "mapa"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr "cibule"
|
msgstr "cibule"
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "věda"
|
msgstr "věda"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr "aplikace"
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr "světlý"
|
msgstr "světlý"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr "tmavý"
|
msgstr "tmavý"
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr "chyba HTTP protokolu"
|
msgstr "chyba HTTP protokolu"
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr "síťová chyba"
|
msgstr "síťová chyba"
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr "nečekaná chyba"
|
msgstr "nečekaná chyba"
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr "chyba HTTP"
|
msgstr "chyba HTTP"
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr "přístup odepřen"
|
msgstr "přístup odepřen"
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Nic nenalezeno"
|
msgstr "Nic nenalezeno"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "zdroj"
|
msgstr "zdroj"
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "Neplatné nastavení, upravte své předvolby"
|
msgstr "Neplatné nastavení, upravte své předvolby"
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "Neplatné nastavení"
|
msgstr "Neplatné nastavení"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "chyba vyhledávání"
|
msgstr "chyba vyhledávání"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "před {minutes} minutami"
|
msgstr "před {minutes} minutami"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "před {hours} hodinami, {minutes} minutami"
|
msgstr "před {hours} hodinami, {minutes} minutami"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -399,13 +399,13 @@ msgstr "soubor torrentu"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "archivovaná verze"
|
msgstr "archivovaná verze"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr "přes proxy"
|
msgstr "přes proxy"
|
||||||
|
|
||||||
@ -533,7 +533,6 @@ msgstr "Základní kategorie"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Jazyk hledání"
|
msgstr "Jazyk hledání"
|
||||||
|
|
||||||
@ -672,10 +671,11 @@ msgstr "Otevírat výsledky na novém panelu prohlížeče"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Dotazovací metoda"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -732,7 +732,7 @@ msgstr "Zakázat vše"
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -873,12 +873,10 @@ msgstr ""
|
|||||||
"prozrazením dat při kliknutí na výsledky hledání."
|
"prozrazením dat při kliknutí na výsledky hledání."
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "uložit"
|
msgstr "uložit"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "zpět"
|
msgstr "zpět"
|
||||||
|
|
||||||
@ -922,13 +920,11 @@ msgstr "Zkuste vyhledat:"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "další stránka"
|
msgstr "další stránka"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "předchozí stránka"
|
msgstr "předchozí stránka"
|
||||||
|
|
||||||
@ -1260,10 +1256,26 @@ msgstr "Aktuálně používané vyhledávače"
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Podporuje vybraný jazyk"
|
msgstr "Podporuje vybraný jazyk"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Odpovědi"
|
msgstr "Odpovědi"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1406,3 +1418,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Dotazovací metoda"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -8,12 +8,12 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2020-07-09 13:10+0000\n"
|
"PO-Revision-Date: 2022-01-19 22:16+0000\n"
|
||||||
"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language: cy\n"
|
"Language: cy\n"
|
||||||
"Language-Team: Welsh "
|
"Language-Team: Welsh "
|
||||||
"(http://www.transifex.com/asciimoo/searx/language/cy/)\n"
|
"<https://weblate.bubu1.eu/projects/searxng/searxng/cy/>\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n "
|
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n "
|
||||||
"!= 11) ? 2 : 3\n"
|
"!= 11) ? 2 : 3\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -21,172 +21,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "ffeiliau"
|
msgstr "ffeiliau"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "cyffredinol"
|
msgstr "cyffredinol"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "cerddoriaeth"
|
msgstr "cerddoriaeth"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "cyfryngau cymdeithasol"
|
msgstr "cyfryngau cymdeithasol"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "delweddau"
|
msgstr "delweddau"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "fideos"
|
msgstr "fideos"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "Technoleg"
|
msgstr "Technoleg"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "newyddion"
|
msgstr "newyddion"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "map"
|
msgstr "map"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr ""
|
msgstr "winwns"
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "gwyddoniaeth"
|
msgstr "gwyddoniaeth"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr ""
|
msgstr "tywyll"
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr "gwall dosrannu"
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Ni chanfuwyd eitem"
|
msgstr "Ni chanfuwyd eitem"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "Gosodiadau annilys. Addasa dy ddewisiadau."
|
msgstr "Gosodiadau annilys. Addasa dy ddewisiadau."
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "Gosodiadau annilys"
|
msgstr "Gosodiadau annilys"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "gwall chwilio"
|
msgstr "gwall chwilio"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "{minutes} munud yn ôl"
|
msgstr "{minutes} munud yn ôl"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "{hours} awr, {minutes} munud yn ôl"
|
msgstr "{hours} awr, {minutes} munud yn ôl"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -387,13 +387,13 @@ msgstr "ffeil torrent"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -521,7 +521,6 @@ msgstr "Categorïau arferol"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Iaith chwilio"
|
msgstr "Iaith chwilio"
|
||||||
|
|
||||||
@ -658,10 +657,11 @@ msgstr "Agor dolenni canlyniadau mewn tabiau newydd yn y porwr"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Dull"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -715,7 +715,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -850,12 +850,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "cadw"
|
msgstr "cadw"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "nôl"
|
msgstr "nôl"
|
||||||
|
|
||||||
@ -899,13 +897,11 @@ msgstr "Rho gynnig ar chwilio am:"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "tudalen nesaf"
|
msgstr "tudalen nesaf"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "tudalen ddiwethaf"
|
msgstr "tudalen ddiwethaf"
|
||||||
|
|
||||||
@ -1083,7 +1079,7 @@ msgstr "Da iawn!"
|
|||||||
|
|
||||||
#: searx/templates/oscar/messages/save_settings_successfull.html:8
|
#: searx/templates/oscar/messages/save_settings_successfull.html:8
|
||||||
msgid "Settings saved successfully."
|
msgid "Settings saved successfully."
|
||||||
msgstr "Cadwyd y gosodiadau yn iawn!"
|
msgstr "Cadwyd y gosodiadau yn iawn."
|
||||||
|
|
||||||
#: searx/templates/oscar/messages/unknow_error.html:7
|
#: searx/templates/oscar/messages/unknow_error.html:7
|
||||||
msgid "Oh snap!"
|
msgid "Oh snap!"
|
||||||
@ -1237,10 +1233,26 @@ msgstr ""
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Cefnogir yr iaith a ddewiswyd"
|
msgstr "Cefnogir yr iaith a ddewiswyd"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Atebion"
|
msgstr "Atebion"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1382,3 +1394,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Dull"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -9,9 +9,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-31 07:17+0000\n"
|
"PO-Revision-Date: 2022-01-23 20:00+0000\n"
|
||||||
"Last-Translator: Frederik From <frederikfrom@pm.me>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language: da\n"
|
"Language: da\n"
|
||||||
"Language-Team: Danish "
|
"Language-Team: Danish "
|
||||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/da/>\n"
|
"<https://weblate.bubu1.eu/projects/searxng/searxng/da/>\n"
|
||||||
@ -21,174 +21,174 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "filer"
|
msgstr "filer"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "generelt"
|
msgstr "generelt"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "musik"
|
msgstr "musik"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "sociale medier"
|
msgstr "sociale medier"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "billeder"
|
msgstr "billeder"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "videoer"
|
msgstr "videoer"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "it"
|
msgstr "it"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "nyheder"
|
msgstr "nyheder"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "kort"
|
msgstr "kort"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr "onion-links"
|
msgstr "onion-links"
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "videnskab"
|
msgstr "videnskab"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr "ordbøger"
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr "spørgsmål og svar"
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr "automatisk"
|
msgstr "automatisk"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr "lys"
|
msgstr "lys"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr "mørk"
|
msgstr "mørk"
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr "udløbstid"
|
msgstr "udløbstid"
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr "fortolkningsfejl"
|
msgstr "fortolkningsfejl"
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr "HTTP-protokolfejl"
|
msgstr "HTTP-protokolfejl"
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr "netværksfejl"
|
msgstr "netværksfejl"
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr "uventet nedbrud"
|
msgstr "uventet nedbrud"
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr "HTTP-fejl"
|
msgstr "HTTP-fejl"
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr "HTTP-tilkoblingsfejl"
|
msgstr "HTTP-tilkoblingsfejl"
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr "proxyfejl"
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr "CAPTCHA"
|
msgstr "CAPTCHA"
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr "for mange forespørgsler"
|
msgstr "for mange forespørgsler"
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr "adgang nægtet"
|
msgstr "adgang nægtet"
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr "server-API-fejl"
|
msgstr "server-API-fejl"
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Intet fundet"
|
msgstr "Intet fundet"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Kilde"
|
msgstr "Kilde"
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "Ugyldige indstillinger, redigér venligst dine valg"
|
msgstr "Ugyldige indstillinger, redigér venligst dine valg"
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "Ugyldig indstilling"
|
msgstr "Ugyldig indstilling"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "søgefejl"
|
msgstr "søgefejl"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "for {minutes} minut(ter) siden"
|
msgstr "for {minutes} minut(ter) siden"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "for {hours} time(r) og {minutes} minut(ter) siden"
|
msgstr "for {hours} time(r) og {minutes} minut(ter) siden"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr "Suspenderet"
|
||||||
|
|
||||||
#: searx/answerers/random/answerer.py:67
|
#: searx/answerers/random/answerer.py:67
|
||||||
msgid "Random value generator"
|
msgid "Random value generator"
|
||||||
@ -397,13 +397,13 @@ msgstr "torrent-fil"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "cached"
|
msgstr "cached"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr "viderestillet"
|
msgstr "viderestillet"
|
||||||
|
|
||||||
@ -418,7 +418,7 @@ msgstr "Tillad"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:139
|
#: searx/templates/oscar/macros.html:139
|
||||||
msgid "broken"
|
msgid "broken"
|
||||||
msgstr ""
|
msgstr "defekt"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:141
|
#: searx/templates/oscar/macros.html:141
|
||||||
msgid "supported"
|
msgid "supported"
|
||||||
@ -482,7 +482,7 @@ msgstr "P95"
|
|||||||
#: searx/templates/oscar/preferences.html:68
|
#: searx/templates/oscar/preferences.html:68
|
||||||
#: searx/templates/simple/preferences.html:83
|
#: searx/templates/simple/preferences.html:83
|
||||||
msgid "Failed checker test(s): "
|
msgid "Failed checker test(s): "
|
||||||
msgstr ""
|
msgstr "Fejlet checkertest(s): "
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:96
|
#: searx/templates/oscar/preferences.html:96
|
||||||
#: searx/templates/simple/preferences.html:101
|
#: searx/templates/simple/preferences.html:101
|
||||||
@ -498,7 +498,7 @@ msgstr "Generelt"
|
|||||||
#: searx/templates/oscar/preferences.html:102
|
#: searx/templates/oscar/preferences.html:102
|
||||||
#: searx/templates/oscar/preferences.html:193
|
#: searx/templates/oscar/preferences.html:193
|
||||||
msgid "User Interface"
|
msgid "User Interface"
|
||||||
msgstr ""
|
msgstr "Bruger Interface"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:103
|
#: searx/templates/oscar/preferences.html:103
|
||||||
#: searx/templates/oscar/preferences.html:257
|
#: searx/templates/oscar/preferences.html:257
|
||||||
@ -515,7 +515,7 @@ msgstr "Søgemaskiner"
|
|||||||
#: searx/templates/oscar/preferences.html:105
|
#: searx/templates/oscar/preferences.html:105
|
||||||
#: searx/templates/simple/preferences.html:329
|
#: searx/templates/simple/preferences.html:329
|
||||||
msgid "Special Queries"
|
msgid "Special Queries"
|
||||||
msgstr ""
|
msgstr "Specielle Forespørgsler"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:106
|
#: searx/templates/oscar/preferences.html:106
|
||||||
#: searx/templates/oscar/preferences.html:454
|
#: searx/templates/oscar/preferences.html:454
|
||||||
@ -531,7 +531,6 @@ msgstr "Standardkategorier"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Søgesprog"
|
msgstr "Søgesprog"
|
||||||
|
|
||||||
@ -626,7 +625,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:211
|
#: searx/templates/oscar/preferences.html:211
|
||||||
#: searx/templates/simple/preferences.html:205
|
#: searx/templates/simple/preferences.html:205
|
||||||
msgid "Change SearXNG layout"
|
msgid "Change SearXNG layout"
|
||||||
msgstr ""
|
msgstr "Ændr SearXNG layout"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:222
|
#: searx/templates/oscar/preferences.html:222
|
||||||
#: searx/templates/oscar/preferences.html:228
|
#: searx/templates/oscar/preferences.html:228
|
||||||
@ -640,11 +639,11 @@ msgstr "Stil"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:231
|
#: searx/templates/oscar/preferences.html:231
|
||||||
msgid "Show advanced settings"
|
msgid "Show advanced settings"
|
||||||
msgstr ""
|
msgstr "Vis avancerede indstillinger"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:232
|
#: searx/templates/oscar/preferences.html:232
|
||||||
msgid "Show advanced settings panel in the home page by default"
|
msgid "Show advanced settings panel in the home page by default"
|
||||||
msgstr ""
|
msgstr "Vis avancerede indstillinger panelet på forsiden som standardindstilling"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:235
|
#: searx/templates/oscar/preferences.html:235
|
||||||
#: searx/templates/oscar/preferences.html:245
|
#: searx/templates/oscar/preferences.html:245
|
||||||
@ -670,10 +669,11 @@ msgstr "Åben resultat-link i en ny browser-tab"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Metode"
|
msgstr "HTTP-metode"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -691,7 +691,7 @@ msgstr "Billede-proxy"
|
|||||||
#: searx/templates/oscar/preferences.html:274
|
#: searx/templates/oscar/preferences.html:274
|
||||||
#: searx/templates/simple/preferences.html:256
|
#: searx/templates/simple/preferences.html:256
|
||||||
msgid "Proxying image results through SearXNG"
|
msgid "Proxying image results through SearXNG"
|
||||||
msgstr ""
|
msgstr "Bearbejder billedresulter gennem SearXNG"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:277
|
#: searx/templates/oscar/preferences.html:277
|
||||||
#: searx/templates/oscar/preferences.html:288
|
#: searx/templates/oscar/preferences.html:288
|
||||||
@ -721,7 +721,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:315
|
#: searx/templates/oscar/preferences.html:315
|
||||||
msgid "Allow all"
|
msgid "Allow all"
|
||||||
msgstr ""
|
msgstr "Tillad alle"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:316
|
#: searx/templates/oscar/preferences.html:316
|
||||||
msgid "Disable all"
|
msgid "Disable all"
|
||||||
@ -730,7 +730,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -766,7 +766,7 @@ msgstr "Tidsinterval"
|
|||||||
#: searx/templates/simple/preferences.html:291
|
#: searx/templates/simple/preferences.html:291
|
||||||
#: searx/templates/simple/stats.html:31
|
#: searx/templates/simple/stats.html:31
|
||||||
msgid "Response time"
|
msgid "Response time"
|
||||||
msgstr ""
|
msgstr "Svartid"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:340
|
#: searx/templates/oscar/preferences.html:340
|
||||||
#: searx/templates/oscar/preferences.html:344
|
#: searx/templates/oscar/preferences.html:344
|
||||||
@ -872,12 +872,10 @@ msgstr ""
|
|||||||
"resultatet."
|
"resultatet."
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "gem"
|
msgstr "gem"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "tilbage"
|
msgstr "tilbage"
|
||||||
|
|
||||||
@ -921,13 +919,11 @@ msgstr "Prøv at søge efter:"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "næste side"
|
msgstr "næste side"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "forrige side"
|
msgstr "forrige side"
|
||||||
|
|
||||||
@ -1259,10 +1255,26 @@ msgstr "Pt. anvendte søgemaskiner"
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Undstøtter valgte sprog"
|
msgstr "Undstøtter valgte sprog"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Svar"
|
msgstr "Svar"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1400,3 +1412,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Metode"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -21,8 +21,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2022-01-07 07:17+0000\n"
|
"PO-Revision-Date: 2022-01-28 07:16+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||||
"Language-Team: German <https://weblate.bubu1.eu/projects/searxng/searxng/de/>"
|
"Language-Team: German <https://weblate.bubu1.eu/projects/searxng/searxng/de/>"
|
||||||
"\n"
|
"\n"
|
||||||
@ -34,172 +34,172 @@ msgstr ""
|
|||||||
"X-Generator: Weblate 4.10.1\n"
|
"X-Generator: Weblate 4.10.1\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "Dateien"
|
msgstr "Dateien"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Allgemein"
|
msgstr "Allgemein"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "Musik"
|
msgstr "Musik"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "Soziale Medien"
|
msgstr "Soziale Medien"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Bilder"
|
msgstr "Bilder"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr "Videos"
|
msgstr "Videos"
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "IT"
|
msgstr "IT"
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "Neuigkeiten"
|
msgstr "Neuigkeiten"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "Karte"
|
msgstr "Karte"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr "Onions"
|
msgstr "Onions"
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "Wissenschaft"
|
msgstr "Wissenschaft"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr "Apps"
|
msgstr "Apps"
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr "Lexika"
|
msgstr "Lexika"
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr "Songtexte"
|
msgstr "Songtexte"
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr "Pakete"
|
msgstr "Pakete"
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr "Q&A"
|
msgstr "Q&A"
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr "Repositories"
|
msgstr "Repositories"
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr "Software Wikis"
|
msgstr "Software Wikis"
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr "WEB"
|
msgstr "WEB"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr "auto"
|
msgstr "auto"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr "hell"
|
msgstr "hell"
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr "dunkel"
|
msgstr "dunkel"
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr "Timeout"
|
msgstr "Timeout"
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr "Fehler beim Parsen"
|
msgstr "Fehler beim Parsen"
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr "HTTP-Protokollfehler"
|
msgstr "HTTP-Protokollfehler"
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr "Netzwerkfehler"
|
msgstr "Netzwerkfehler"
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr "unerwarteter Absturz"
|
msgstr "unerwarteter Absturz"
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr "HTTP-Fehler"
|
msgstr "HTTP-Fehler"
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr "HTTP-Verbindungsfehler"
|
msgstr "HTTP-Verbindungsfehler"
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr "Proxy-Fehler"
|
msgstr "Proxy-Fehler"
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr "CAPTCHA"
|
msgstr "CAPTCHA"
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr "zu viele Anfragen"
|
msgstr "zu viele Anfragen"
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr "Zugriff verweigert"
|
msgstr "Zugriff verweigert"
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr "Server-API-Fehler"
|
msgstr "Server-API-Fehler"
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Keine Einträge gefunden"
|
msgstr "Keine Einträge gefunden"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Quelle"
|
msgstr "Quelle"
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr "Ungültige Einstellungen. Bitte diese überprüfen"
|
msgstr "Ungültige Einstellungen. Bitte diese überprüfen"
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr "Ungültige Einstellungen"
|
msgstr "Ungültige Einstellungen"
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "Suchfehler"
|
msgstr "Suchfehler"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "vor {minutes} Minute(n)"
|
msgstr "vor {minutes} Minute(n)"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
|
msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr "Ausgesetzt"
|
msgstr "Ausgesetzt"
|
||||||
|
|
||||||
@ -414,13 +414,13 @@ msgstr "Torrent"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "Im Cache"
|
msgstr "Im Cache"
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr "proxy"
|
msgstr "proxy"
|
||||||
|
|
||||||
@ -548,7 +548,6 @@ msgstr "Standardkategorien"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Suchsprache"
|
msgstr "Suchsprache"
|
||||||
|
|
||||||
@ -689,10 +688,11 @@ msgstr "Links in einem neuen Browser-Tab öffnen"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Methode"
|
msgstr "HTTP Methode"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -751,11 +751,11 @@ msgstr "Alle deaktivieren"
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Diese Registerkarte zeigt keine Suchergebnisse an, aber Sie können die hier "
|
"Auf dieser Registerkarte werden keine Suchergebnisse angezeigt, aber Sie "
|
||||||
"aufgelisteten Suchmaschinen über bangs (!) durchsuchen."
|
"können die hier aufgelisteten Suchmaschinen über bangs durchsuchen."
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:334
|
#: searx/templates/oscar/preferences.html:334
|
||||||
#: searx/templates/oscar/preferences.html:350
|
#: searx/templates/oscar/preferences.html:350
|
||||||
@ -897,12 +897,10 @@ msgstr ""
|
|||||||
"ausgewählten Ergebnisseiten übermittelt werden."
|
"ausgewählten Ergebnisseiten übermittelt werden."
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "Speichern"
|
msgstr "Speichern"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "Zurück"
|
msgstr "Zurück"
|
||||||
|
|
||||||
@ -946,13 +944,11 @@ msgstr "Suche nach:"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "nächste Seite"
|
msgstr "nächste Seite"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "vorherige Seite"
|
msgstr "vorherige Seite"
|
||||||
|
|
||||||
@ -1287,10 +1283,26 @@ msgstr "Aktuell benutzte Suchmaschinen"
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Unterstützt die ausgewählten Sprachen"
|
msgstr "Unterstützt die ausgewählten Sprachen"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "Speichern"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr "Zurück"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Antworten"
|
msgstr "Antworten"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr "Vorherige Seite"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr "Nächste Seite"
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1431,3 +1443,16 @@ msgstr "Suchmaschine"
|
|||||||
#~ " contains your query. Your browser "
|
#~ " contains your query. Your browser "
|
||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Methode"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Diese Registerkarte zeigt keine Suchergebnisse"
|
||||||
|
#~ " an, aber Sie können die hier "
|
||||||
|
#~ "aufgelisteten Suchmaschinen über bangs (!) "
|
||||||
|
#~ "durchsuchen."
|
||||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2020-07-09 13:10+0000\n"
|
"PO-Revision-Date: 2020-07-09 13:10+0000\n"
|
||||||
"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
|
"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
|
||||||
"Language: el_GR\n"
|
"Language: el_GR\n"
|
||||||
@ -21,172 +21,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "αρχεία"
|
msgstr "αρχεία"
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "γενικά"
|
msgstr "γενικά"
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr "μουσική"
|
msgstr "μουσική"
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr "κοινωνικά δίκτυα"
|
msgstr "κοινωνικά δίκτυα"
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "εικόνες"
|
msgstr "εικόνες"
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr "νέα"
|
msgstr "νέα"
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr "χάρτης"
|
msgstr "χάρτης"
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr "επιστήμη"
|
msgstr "επιστήμη"
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr "λάθος αναζήτησης"
|
msgstr "λάθος αναζήτησης"
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr "{minutes} λεπτά πριν"
|
msgstr "{minutes} λεπτά πριν"
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -391,13 +391,13 @@ msgstr "αρχείο torrent"
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -525,7 +525,6 @@ msgstr "Προεπιλεγμένες κατηγορίες"
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr "Γλώσσα αναζήτησης"
|
msgstr "Γλώσσα αναζήτησης"
|
||||||
|
|
||||||
@ -662,10 +661,11 @@ msgstr "Άνοιξε τους συνδέσμους των αποτελεσμάτ
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr "Μέθοδος"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -719,7 +719,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -854,12 +854,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr "αποθήκευση"
|
msgstr "αποθήκευση"
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr "πίσω"
|
msgstr "πίσω"
|
||||||
|
|
||||||
@ -903,13 +901,11 @@ msgstr "Δοκιμάστε αναζήτηση για:"
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr "επόμενη σελίδα"
|
msgstr "επόμενη σελίδα"
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr "προηγούμενη σελίδα"
|
msgstr "προηγούμενη σελίδα"
|
||||||
|
|
||||||
@ -1241,10 +1237,26 @@ msgstr "Μηχανές αναζήτησης που χρησιμοποιούντ
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr "Υποστηρίζει την επιλεγμένη γλώσσα"
|
msgstr "Υποστηρίζει την επιλεγμένη γλώσσα"
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr "Απαντήσεις"
|
msgstr "Απαντήσεις"
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1378,3 +1390,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr "Μέθοδος"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2022-01-06 08:25+0000\n"
|
"POT-Creation-Date: 2022-01-26 17:14+0000\n"
|
||||||
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
|
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
@ -18,172 +18,172 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.9.1\n"
|
"Generated-By: Babel 2.9.1\n"
|
||||||
|
|
||||||
#: searx/webapp.py:165
|
#: searx/webapp.py:169
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:166
|
#: searx/webapp.py:170
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:167
|
#: searx/webapp.py:171
|
||||||
msgid "music"
|
msgid "music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:168
|
#: searx/webapp.py:172
|
||||||
msgid "social media"
|
msgid "social media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:169
|
#: searx/webapp.py:173
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:170
|
#: searx/webapp.py:174
|
||||||
msgid "videos"
|
msgid "videos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:171
|
#: searx/webapp.py:175
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:172
|
#: searx/webapp.py:176
|
||||||
msgid "news"
|
msgid "news"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:173
|
#: searx/webapp.py:177
|
||||||
msgid "map"
|
msgid "map"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:174
|
#: searx/webapp.py:178
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:175
|
#: searx/webapp.py:179
|
||||||
msgid "science"
|
msgid "science"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:177
|
#: searx/webapp.py:181
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:178
|
#: searx/webapp.py:182
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:179
|
#: searx/webapp.py:183
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:180
|
#: searx/webapp.py:184
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:181
|
#: searx/webapp.py:185
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:182
|
#: searx/webapp.py:186
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:183
|
#: searx/webapp.py:187
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:184
|
#: searx/webapp.py:188
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:189
|
#: searx/webapp.py:193
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:192
|
#: searx/webapp.py:196
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:193
|
#: searx/webapp.py:197
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:194
|
#: searx/webapp.py:198
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:195
|
#: searx/webapp.py:199
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:197
|
#: searx/webapp.py:201
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:204
|
#: searx/webapp.py:208
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:205
|
#: searx/webapp.py:209
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:211
|
#: searx/webapp.py:215
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:212
|
#: searx/webapp.py:216
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:213
|
#: searx/webapp.py:217
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:214
|
#: searx/webapp.py:218
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:215
|
#: searx/webapp.py:219
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:402
|
#: searx/webapp.py:421
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/qwant.py:212
|
#: searx/engines/qwant.py:212
|
||||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:404
|
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:423
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:515 searx/webapp.py:925
|
#: searx/webapp.py:534 searx/webapp.py:941
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:531
|
#: searx/webapp.py:550
|
||||||
msgid "Invalid settings"
|
msgid "Invalid settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:608 searx/webapp.py:683
|
#: searx/webapp.py:626 searx/webapp.py:701
|
||||||
msgid "search error"
|
msgid "search error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:726
|
#: searx/webapp.py:744
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:728
|
#: searx/webapp.py:746
|
||||||
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
msgid "{hours} hour(s), {minutes} minute(s) ago"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/webapp.py:846
|
#: searx/webapp.py:862
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -384,13 +384,13 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
#: searx/templates/oscar/macros.html:37 searx/templates/oscar/macros.html:39
|
||||||
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
#: searx/templates/oscar/macros.html:73 searx/templates/oscar/macros.html:75
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
#: searx/templates/oscar/macros.html:43 searx/templates/oscar/macros.html:59
|
||||||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||||
#: searx/templates/simple/macros.html:41
|
#: searx/templates/simple/macros.html:43
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -518,7 +518,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:133
|
#: searx/templates/oscar/preferences.html:133
|
||||||
#: searx/templates/simple/preferences.html:117
|
#: searx/templates/simple/preferences.html:117
|
||||||
#: searx/templates/simple/preferences.html:244
|
|
||||||
msgid "Search language"
|
msgid "Search language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -655,10 +654,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:262
|
#: searx/templates/oscar/preferences.html:262
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Method"
|
msgid "HTTP Method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:263
|
#: searx/templates/oscar/preferences.html:263
|
||||||
|
#: searx/templates/simple/preferences.html:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change how forms are submited, <a "
|
"Change how forms are submited, <a "
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
@ -712,7 +712,7 @@ msgstr ""
|
|||||||
#: searx/templates/oscar/preferences.html:325
|
#: searx/templates/oscar/preferences.html:325
|
||||||
#: searx/templates/simple/preferences.html:280
|
#: searx/templates/simple/preferences.html:280
|
||||||
msgid ""
|
msgid ""
|
||||||
"This tab does not show up for search results but you can search the "
|
"This tab does not show up for search results, but you can search the "
|
||||||
"engines listed here via bangs."
|
"engines listed here via bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -847,12 +847,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:492
|
#: searx/templates/oscar/preferences.html:492
|
||||||
#: searx/templates/simple/preferences.html:404
|
|
||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/preferences.html:493
|
#: searx/templates/oscar/preferences.html:493
|
||||||
#: searx/templates/simple/preferences.html:406
|
|
||||||
msgid "back"
|
msgid "back"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -896,13 +894,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: searx/templates/oscar/results.html:162
|
#: searx/templates/oscar/results.html:162
|
||||||
#: searx/templates/oscar/results.html:187
|
#: searx/templates/oscar/results.html:187
|
||||||
#: searx/templates/simple/results.html:182
|
|
||||||
msgid "next page"
|
msgid "next page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/oscar/results.html:169
|
#: searx/templates/oscar/results.html:169
|
||||||
#: searx/templates/oscar/results.html:180
|
#: searx/templates/oscar/results.html:180
|
||||||
#: searx/templates/simple/results.html:165
|
|
||||||
msgid "previous page"
|
msgid "previous page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1232,10 +1228,26 @@ msgstr ""
|
|||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:404
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/preferences.html:406
|
||||||
|
msgid "Back"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:24
|
#: searx/templates/simple/results.html:24
|
||||||
msgid "Answers"
|
msgid "Answers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:165
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: searx/templates/simple/results.html:182
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:9
|
#: searx/templates/simple/search.html:9
|
||||||
#: searx/templates/simple/simple_search.html:5
|
#: searx/templates/simple/simple_search.html:5
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
@ -1379,3 +1391,12 @@ msgstr ""
|
|||||||
#~ "can record this title."
|
#~ "can record this title."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Method"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "This tab does not show up for "
|
||||||
|
#~ "search results but you can search "
|
||||||
|
#~ "the engines listed here via bangs."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user