mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
Merge branch 'searxng:master' into master
This commit is contained in:
commit
4257102af6
63 changed files with 2183 additions and 25544 deletions
2
.github/workflows/integration.yml
vendored
2
.github/workflows/integration.yml
vendored
|
@ -16,7 +16,7 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-20.04]
|
os: [ubuntu-20.04]
|
||||||
python-version: ["3.8", "3.9", "3.10", "3.11"]
|
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
|
@ -15,7 +15,7 @@ Administrator documentation
|
||||||
installation-apache
|
installation-apache
|
||||||
update-searxng
|
update-searxng
|
||||||
answer-captcha
|
answer-captcha
|
||||||
searx.botdetection
|
searx.limiter
|
||||||
api
|
api
|
||||||
architecture
|
architecture
|
||||||
plugins
|
plugins
|
||||||
|
|
17
docs/admin/searx.limiter.rst
Normal file
17
docs/admin/searx.limiter.rst
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
.. _limiter:
|
||||||
|
|
||||||
|
=======
|
||||||
|
Limiter
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. sidebar:: info
|
||||||
|
|
||||||
|
The limiter requires a :ref:`Redis <settings redis>` database.
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:depth: 2
|
||||||
|
:local:
|
||||||
|
:backlinks: entry
|
||||||
|
|
||||||
|
.. automodule:: searx.limiter
|
||||||
|
:members:
|
|
@ -12,6 +12,7 @@
|
||||||
bind_address: "127.0.0.1"
|
bind_address: "127.0.0.1"
|
||||||
secret_key: "ultrasecretkey" # change this!
|
secret_key: "ultrasecretkey" # change this!
|
||||||
limiter: false
|
limiter: false
|
||||||
|
public_instance: false
|
||||||
image_proxy: false
|
image_proxy: false
|
||||||
default_http_headers:
|
default_http_headers:
|
||||||
X-Content-Type-Options : nosniff
|
X-Content-Type-Options : nosniff
|
||||||
|
@ -20,7 +21,6 @@
|
||||||
X-Robots-Tag : noindex, nofollow
|
X-Robots-Tag : noindex, nofollow
|
||||||
Referrer-Policy : no-referrer
|
Referrer-Policy : no-referrer
|
||||||
|
|
||||||
|
|
||||||
``base_url`` : ``$SEARXNG_URL`` :ref:`buildenv <make buildenv>`
|
``base_url`` : ``$SEARXNG_URL`` :ref:`buildenv <make buildenv>`
|
||||||
The base URL where SearXNG is deployed. Used to create correct inbound links.
|
The base URL where SearXNG is deployed. Used to create correct inbound links.
|
||||||
If you change the value, don't forget to rebuild instance's environment
|
If you change the value, don't forget to rebuild instance's environment
|
||||||
|
@ -36,11 +36,19 @@
|
||||||
``secret_key`` : ``$SEARXNG_SECRET``
|
``secret_key`` : ``$SEARXNG_SECRET``
|
||||||
Used for cryptography purpose.
|
Used for cryptography purpose.
|
||||||
|
|
||||||
.. _limiter:
|
|
||||||
|
|
||||||
``limiter`` :
|
``limiter`` :
|
||||||
Rate limit the number of request on the instance, block some bots. The
|
Rate limit the number of request on the instance, block some bots. The
|
||||||
:ref:`limiter src` requires a :ref:`settings redis` database.
|
:ref:`limiter` requires a :ref:`settings redis` database.
|
||||||
|
|
||||||
|
.. _public_instance:
|
||||||
|
|
||||||
|
``public_instance`` :
|
||||||
|
|
||||||
|
Setting that allows to enable features specifically for public instances (not
|
||||||
|
needed for local usage). By set to ``true`` the following features are
|
||||||
|
activated:
|
||||||
|
|
||||||
|
- :py:obj:`searx.botdetection.link_token` in the :ref:`limiter`
|
||||||
|
|
||||||
.. _image_proxy:
|
.. _image_proxy:
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
import sys, os
|
import sys, os
|
||||||
|
from pathlib import Path
|
||||||
from pallets_sphinx_themes import ProjectLink
|
from pallets_sphinx_themes import ProjectLink
|
||||||
|
|
||||||
from searx import get_setting
|
from searx import get_setting
|
||||||
|
@ -13,7 +14,6 @@ project = 'SearXNG'
|
||||||
copyright = 'SearXNG team'
|
copyright = 'SearXNG team'
|
||||||
author = 'SearXNG team'
|
author = 'SearXNG team'
|
||||||
release, version = VERSION_STRING, VERSION_STRING
|
release, version = VERSION_STRING, VERSION_STRING
|
||||||
|
|
||||||
SEARXNG_URL = get_setting('server.base_url') or 'https://example.org/searxng'
|
SEARXNG_URL = get_setting('server.base_url') or 'https://example.org/searxng'
|
||||||
ISSUE_URL = get_setting('brand.issue_url')
|
ISSUE_URL = get_setting('brand.issue_url')
|
||||||
DOCS_URL = get_setting('brand.docs_url')
|
DOCS_URL = get_setting('brand.docs_url')
|
||||||
|
@ -22,6 +22,9 @@ PRIVACYPOLICY_URL = get_setting('general.privacypolicy_url')
|
||||||
CONTACT_URL = get_setting('general.contact_url')
|
CONTACT_URL = get_setting('general.contact_url')
|
||||||
WIKI_URL = get_setting('brand.wiki_url')
|
WIKI_URL = get_setting('brand.wiki_url')
|
||||||
|
|
||||||
|
SOURCEDIR = Path(__file__).parent.parent / "searx"
|
||||||
|
os.environ['SOURCEDIR'] = str(SOURCEDIR)
|
||||||
|
|
||||||
# hint: sphinx.ext.viewcode won't highlight when 'highlight_language' [1] is set
|
# hint: sphinx.ext.viewcode won't highlight when 'highlight_language' [1] is set
|
||||||
# to string 'none' [2]
|
# to string 'none' [2]
|
||||||
#
|
#
|
||||||
|
|
|
@ -12,8 +12,10 @@ Bot Detection
|
||||||
.. automodule:: searx.botdetection
|
.. automodule:: searx.botdetection
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
.. automodule:: searx.botdetection.limiter
|
.. _botdetection ip_lists:
|
||||||
:members:
|
|
||||||
|
IP lists
|
||||||
|
========
|
||||||
|
|
||||||
.. automodule:: searx.botdetection.ip_lists
|
.. automodule:: searx.botdetection.ip_lists
|
||||||
:members:
|
:members:
|
||||||
|
@ -50,3 +52,11 @@ Probe HTTP headers
|
||||||
|
|
||||||
.. automodule:: searx.botdetection.http_user_agent
|
.. automodule:: searx.botdetection.http_user_agent
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
.. _botdetection config:
|
||||||
|
|
||||||
|
Config
|
||||||
|
======
|
||||||
|
|
||||||
|
.. automodule:: searx.botdetection.config
|
||||||
|
:members:
|
|
@ -2,7 +2,7 @@ mock==5.1.0
|
||||||
nose2[coverage_plugin]==0.14.0
|
nose2[coverage_plugin]==0.14.0
|
||||||
cov-core==1.15.0
|
cov-core==1.15.0
|
||||||
black==22.12.0
|
black==22.12.0
|
||||||
pylint==3.0.1
|
pylint==3.0.2
|
||||||
splinter==0.19.0
|
splinter==0.19.0
|
||||||
selenium==4.14.0
|
selenium==4.14.0
|
||||||
twine==4.0.2
|
twine==4.0.2
|
||||||
|
@ -11,7 +11,7 @@ Sphinx<=7.1.2; python_version == '3.8'
|
||||||
Sphinx==7.2.6; python_version > '3.8'
|
Sphinx==7.2.6; python_version > '3.8'
|
||||||
sphinx-issues==3.0.1
|
sphinx-issues==3.0.1
|
||||||
sphinx-jinja==2.0.2
|
sphinx-jinja==2.0.2
|
||||||
sphinx-tabs==3.4.1
|
sphinx-tabs==3.4.4
|
||||||
sphinxcontrib-programoutput==0.17
|
sphinxcontrib-programoutput==0.17
|
||||||
sphinx-autobuild==2021.3.14
|
sphinx-autobuild==2021.3.14
|
||||||
sphinx-notfound-page==1.0.0
|
sphinx-notfound-page==1.0.0
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
certifi==2023.7.22
|
certifi==2023.7.22
|
||||||
babel==2.13.0
|
babel==2.13.1
|
||||||
flask-babel==4.0.0
|
flask-babel==4.0.0
|
||||||
flask==3.0.0
|
flask==3.0.0
|
||||||
jinja2==3.1.2
|
jinja2==3.1.2
|
||||||
|
@ -9,7 +9,7 @@ python-dateutil==2.8.2
|
||||||
pyyaml==6.0.1
|
pyyaml==6.0.1
|
||||||
httpx[http2]==0.24.1
|
httpx[http2]==0.24.1
|
||||||
Brotli==1.1.0
|
Brotli==1.1.0
|
||||||
uvloop==0.17.0
|
uvloop==0.19.0
|
||||||
httpx-socks[asyncio]==0.7.7
|
httpx-socks[asyncio]==0.7.7
|
||||||
setproctitle==1.3.3
|
setproctitle==1.3.3
|
||||||
redis==4.6.0
|
redis==4.6.0
|
||||||
|
|
|
@ -108,5 +108,6 @@ else:
|
||||||
if settings['server']['public_instance']:
|
if settings['server']['public_instance']:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Be aware you have activated features intended only for public instances. "
|
"Be aware you have activated features intended only for public instances. "
|
||||||
+ "This force the usage of the bot limiter and link_token plugins."
|
"This force the usage of the limiter and link_token / "
|
||||||
|
"see https://docs.searxng.org/admin/searx.limiter.html"
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,43 +2,22 @@
|
||||||
# lint: pylint
|
# lint: pylint
|
||||||
""".. _botdetection src:
|
""".. _botdetection src:
|
||||||
|
|
||||||
The :ref:`limiter <limiter src>` implements several methods to block bots:
|
Implementations used for bot detection.
|
||||||
|
|
||||||
a. Analysis of the HTTP header in the request / can be easily bypassed.
|
|
||||||
|
|
||||||
b. Block and pass lists in which IPs are listed / difficult to maintain, since
|
|
||||||
the IPs of bots are not all known and change over the time.
|
|
||||||
|
|
||||||
c. Detection of bots based on the behavior of the requests and blocking and, if
|
|
||||||
necessary, unblocking of the IPs via a dynamically changeable IP block list.
|
|
||||||
|
|
||||||
For dynamically changeable IP lists a Redis database is needed and for any kind
|
|
||||||
of IP list the determination of the IP of the client is essential. The IP of
|
|
||||||
the client is determined via the X-Forwarded-For_ HTTP header
|
|
||||||
|
|
||||||
.. _X-Forwarded-For:
|
|
||||||
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
|
|
||||||
|
|
||||||
X-Forwarded-For
|
|
||||||
===============
|
|
||||||
|
|
||||||
.. attention::
|
|
||||||
|
|
||||||
A correct setup of the HTTP request headers ``X-Forwarded-For`` and
|
|
||||||
``X-Real-IP`` is essential to be able to assign a request to an IP correctly:
|
|
||||||
|
|
||||||
- `NGINX RequestHeader`_
|
|
||||||
- `Apache RequestHeader`_
|
|
||||||
|
|
||||||
.. _NGINX RequestHeader:
|
|
||||||
https://docs.searxng.org/admin/installation-nginx.html#nginx-s-searxng-site
|
|
||||||
.. _Apache RequestHeader:
|
|
||||||
https://docs.searxng.org/admin/installation-apache.html#apache-s-searxng-site
|
|
||||||
|
|
||||||
.. autofunction:: searx.botdetection.get_real_ip
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ._helpers import dump_request
|
from ._helpers import dump_request
|
||||||
from ._helpers import get_real_ip
|
from ._helpers import get_real_ip
|
||||||
|
from ._helpers import get_network
|
||||||
from ._helpers import too_many_requests
|
from ._helpers import too_many_requests
|
||||||
|
|
||||||
|
__all__ = ['dump_request', 'get_network', 'get_real_ip', 'too_many_requests']
|
||||||
|
|
||||||
|
redis_client = None
|
||||||
|
cfg = None
|
||||||
|
|
||||||
|
|
||||||
|
def init(_cfg, _redis_client):
|
||||||
|
global redis_client, cfg # pylint: disable=global-statement
|
||||||
|
redis_client = _redis_client
|
||||||
|
cfg = _cfg
|
||||||
|
|
|
@ -13,8 +13,8 @@ from ipaddress import (
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
|
||||||
from searx import logger
|
from searx import logger
|
||||||
|
from . import config
|
||||||
|
|
||||||
logger = logger.getChild('botdetection')
|
logger = logger.getChild('botdetection')
|
||||||
|
|
||||||
|
@ -104,10 +104,10 @@ def get_real_ip(request: flask.Request) -> str:
|
||||||
if not forwarded_for:
|
if not forwarded_for:
|
||||||
_log_error_only_once("X-Forwarded-For header is not set!")
|
_log_error_only_once("X-Forwarded-For header is not set!")
|
||||||
else:
|
else:
|
||||||
from .limiter import get_cfg # pylint: disable=import-outside-toplevel, cyclic-import
|
from . import cfg # pylint: disable=import-outside-toplevel, cyclic-import
|
||||||
|
|
||||||
forwarded_for = [x.strip() for x in forwarded_for.split(',')]
|
forwarded_for = [x.strip() for x in forwarded_for.split(',')]
|
||||||
x_for: int = get_cfg()['real_ip.x_for'] # type: ignore
|
x_for: int = cfg['real_ip.x_for'] # type: ignore
|
||||||
forwarded_for = forwarded_for[-min(len(forwarded_for), x_for)]
|
forwarded_for = forwarded_for[-min(len(forwarded_for), x_for)]
|
||||||
|
|
||||||
if not real_ip:
|
if not real_ip:
|
||||||
|
|
|
@ -24,7 +24,7 @@ from ipaddress import (
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
from . import config
|
||||||
from ._helpers import too_many_requests
|
from ._helpers import too_many_requests
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ from ipaddress import (
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
from . import config
|
||||||
from ._helpers import too_many_requests
|
from ._helpers import too_many_requests
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ from ipaddress import (
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
from . import config
|
||||||
from ._helpers import too_many_requests
|
from ._helpers import too_many_requests
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ from ipaddress import (
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
from . import config
|
||||||
from ._helpers import too_many_requests
|
from ._helpers import too_many_requests
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ from ipaddress import (
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
from . import config
|
||||||
from ._helpers import too_many_requests
|
from ._helpers import too_many_requests
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,7 @@ and at least for a maximum of 10 minutes.
|
||||||
|
|
||||||
The :py:obj:`.link_token` method can be used to investigate whether a request is
|
The :py:obj:`.link_token` method can be used to investigate whether a request is
|
||||||
*suspicious*. To activate the :py:obj:`.link_token` method in the
|
*suspicious*. To activate the :py:obj:`.link_token` method in the
|
||||||
:py:obj:`.ip_limit` method add the following to your
|
:py:obj:`.ip_limit` method add the following configuration:
|
||||||
``/etc/searxng/limiter.toml``:
|
|
||||||
|
|
||||||
.. code:: toml
|
.. code:: toml
|
||||||
|
|
||||||
|
@ -46,13 +45,12 @@ from ipaddress import (
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
from searx.tools import config
|
|
||||||
from searx import settings
|
|
||||||
|
|
||||||
from searx import redisdb
|
from searx import redisdb
|
||||||
from searx.redislib import incr_sliding_window, drop_counter
|
from searx.redislib import incr_sliding_window, drop_counter
|
||||||
|
|
||||||
from . import link_token
|
from . import link_token
|
||||||
|
from . import config
|
||||||
from ._helpers import (
|
from ._helpers import (
|
||||||
too_many_requests,
|
too_many_requests,
|
||||||
logger,
|
logger,
|
||||||
|
@ -110,7 +108,7 @@ def filter_request(
|
||||||
if c > API_MAX:
|
if c > API_MAX:
|
||||||
return too_many_requests(network, "too many request in API_WINDOW")
|
return too_many_requests(network, "too many request in API_WINDOW")
|
||||||
|
|
||||||
if settings['server']['public_instance'] or cfg['botdetection.ip_limit.link_token']:
|
if cfg['botdetection.ip_limit.link_token']:
|
||||||
|
|
||||||
suspicious = link_token.is_suspicious(network, request, True)
|
suspicious = link_token.is_suspicious(network, request, True)
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ from ipaddress import (
|
||||||
IPv6Address,
|
IPv6Address,
|
||||||
)
|
)
|
||||||
|
|
||||||
from searx.tools import config
|
from . import config
|
||||||
from ._helpers import logger
|
from ._helpers import logger
|
||||||
|
|
||||||
logger = logger.getChild('ip_limit')
|
logger = logger.getChild('ip_limit')
|
||||||
|
|
|
@ -99,15 +99,13 @@ def ping(request: flask.Request, token: str):
|
||||||
The expire time of this ping-key is :py:obj:`PING_LIVE_TIME`.
|
The expire time of this ping-key is :py:obj:`PING_LIVE_TIME`.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from . import limiter # pylint: disable=import-outside-toplevel, cyclic-import
|
from . import redis_client, cfg # pylint: disable=import-outside-toplevel, cyclic-import
|
||||||
|
|
||||||
redis_client = redisdb.client()
|
|
||||||
if not redis_client:
|
if not redis_client:
|
||||||
return
|
return
|
||||||
if not token_is_valid(token):
|
if not token_is_valid(token):
|
||||||
return
|
return
|
||||||
|
|
||||||
cfg = limiter.get_cfg()
|
|
||||||
real_ip = ip_address(get_real_ip(request))
|
real_ip = ip_address(get_real_ip(request))
|
||||||
network = get_network(real_ip, cfg)
|
network = get_network(real_ip, cfg)
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -447,7 +447,10 @@
|
||||||
"تاكا بنغلاديشي": "BDT",
|
"تاكا بنغلاديشي": "BDT",
|
||||||
"бангладешка така": "BDT",
|
"бангладешка така": "BDT",
|
||||||
"বাংলাদেশী টাকা": "BDT",
|
"বাংলাদেশী টাকা": "BDT",
|
||||||
"taka": "BDT",
|
"taka": [
|
||||||
|
"INR",
|
||||||
|
"BDT"
|
||||||
|
],
|
||||||
"bangladéšská taka": "BDT",
|
"bangladéšská taka": "BDT",
|
||||||
"bangladeshi taka": "BDT",
|
"bangladeshi taka": "BDT",
|
||||||
"bangladeŝa tako": "BDT",
|
"bangladeŝa tako": "BDT",
|
||||||
|
@ -581,6 +584,7 @@
|
||||||
"đô la bermuda": "BMD",
|
"đô la bermuda": "BMD",
|
||||||
"دولار بروني": "BND",
|
"دولار بروني": "BND",
|
||||||
"брунейски долар": "BND",
|
"брунейски долар": "BND",
|
||||||
|
"ব্রুনাই ডলার": "BND",
|
||||||
"dòlar de brunei": "BND",
|
"dòlar de brunei": "BND",
|
||||||
"brunejský dolar": "BND",
|
"brunejský dolar": "BND",
|
||||||
"brunei dollar": "BND",
|
"brunei dollar": "BND",
|
||||||
|
@ -1820,6 +1824,7 @@
|
||||||
"indisk rupie": "INR",
|
"indisk rupie": "INR",
|
||||||
"இந்திய ரூபாய்": "INR",
|
"இந்திய ரூபாய்": "INR",
|
||||||
"எண்ணிம ரூபாய்": "INR",
|
"எண்ணிம ரூபாய்": "INR",
|
||||||
|
"డిజిటల్ రూపాయి": "INR",
|
||||||
"రూపాయి": "INR",
|
"రూపాయి": "INR",
|
||||||
"รูปีอินเดีย": "INR",
|
"รูปีอินเดีย": "INR",
|
||||||
"hindistan rupisi": "INR",
|
"hindistan rupisi": "INR",
|
||||||
|
@ -2837,98 +2842,29 @@
|
||||||
"ไนรา": "NGN",
|
"ไนรา": "NGN",
|
||||||
"nijerya nairası": "NGN",
|
"nijerya nairası": "NGN",
|
||||||
"нігерійська найра": "NGN",
|
"нігерійська найра": "NGN",
|
||||||
"córdoba": [
|
"córdoba": "NIO",
|
||||||
"NIO",
|
"كوردبا نيكاراغوا": "NIO",
|
||||||
"NIC"
|
"никарагуанска кордоба": "NIO",
|
||||||
],
|
"nikaragujská córdoba": "NIO",
|
||||||
"كوردبا نيكاراغوا": [
|
"córdoba oro": "NIO",
|
||||||
"NIO",
|
"nicaraguan córdoba": "NIO",
|
||||||
"NIC"
|
"nikaragva kordovo": "NIO",
|
||||||
],
|
"cordoba": "NIO",
|
||||||
"никарагуанска кордоба": [
|
"קורדובה": "NIO",
|
||||||
"NIO",
|
"nikaragvanska kordoba": "NIO",
|
||||||
"NIC"
|
"nicaraguai córdoba": "NIO",
|
||||||
],
|
"córdoba nikaragua": "NIO",
|
||||||
"nikaragujská córdoba": [
|
"córdoba nicaraguense": "NIO",
|
||||||
"NIO",
|
"ニカラグア・コルドバ": "NIO",
|
||||||
"NIC"
|
"니카라과 코르도바": "NIO",
|
||||||
],
|
"nikaragvos kordoba": "NIO",
|
||||||
"córdoba oro": [
|
"nicaraguaanse córdoba": "NIO",
|
||||||
"NIO",
|
"ਨਿਕਾਰਾਗੁਆਈ ਕੋਰਦੋਬਾ": "NIO",
|
||||||
"NIC"
|
"cordoba oro": "NIO",
|
||||||
],
|
"никарагуанская кордоба": "NIO",
|
||||||
"nicaraguan córdoba": [
|
"никарагванска кордоба": "NIO",
|
||||||
"NIO",
|
"kordoba": "NIO",
|
||||||
"NIC"
|
"нікарагуанська кордоба": "NIO",
|
||||||
],
|
|
||||||
"nikaragva kordovo": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"cordoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"קורדובה": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nikaragvanska kordoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nicaraguai córdoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba nikaragua": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba nicaraguense": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"ニカラグア・コルドバ": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"니카라과 코르도바": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nikaragvos kordoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nicaraguaanse córdoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"ਨਿਕਾਰਾਗੁਆਈ ਕੋਰਦੋਬਾ": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"cordoba oro": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"никарагуанская кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"никарагванска кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"kordoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"нікарагуанська кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"noorse kroon": "NOK",
|
"noorse kroon": "NOK",
|
||||||
"كرونة نروجية": "NOK",
|
"كرونة نروجية": "NOK",
|
||||||
"норвежка крона": "NOK",
|
"норвежка крона": "NOK",
|
||||||
|
@ -3636,6 +3572,7 @@
|
||||||
"singapoer dollar": "SGD",
|
"singapoer dollar": "SGD",
|
||||||
"دولار سنغافوري": "SGD",
|
"دولار سنغافوري": "SGD",
|
||||||
"сингапурски долар": "SGD",
|
"сингапурски долар": "SGD",
|
||||||
|
"সিঙ্গাপুর ডলার": "SGD",
|
||||||
"dòlar de singapur": "SGD",
|
"dòlar de singapur": "SGD",
|
||||||
"singapurský dolar": "SGD",
|
"singapurský dolar": "SGD",
|
||||||
"singaporeanske dollar": "SGD",
|
"singaporeanske dollar": "SGD",
|
||||||
|
@ -4394,6 +4331,7 @@
|
||||||
"ด่ง": "VND",
|
"ด่ง": "VND",
|
||||||
"в'єтнамський донг": "VND",
|
"в'єтнамський донг": "VND",
|
||||||
"فاتو فانواتي": "VUV",
|
"فاتو فانواتي": "VUV",
|
||||||
|
"вату": "VUV",
|
||||||
"vatu": "VUV",
|
"vatu": "VUV",
|
||||||
"vanuatský vatu": "VUV",
|
"vanuatský vatu": "VUV",
|
||||||
"vanuatu vatu": "VUV",
|
"vanuatu vatu": "VUV",
|
||||||
|
@ -4406,7 +4344,6 @@
|
||||||
"バツ": "VUV",
|
"バツ": "VUV",
|
||||||
"바누아투 바투": "VUV",
|
"바누아투 바투": "VUV",
|
||||||
"vanuatuaanse vatu": "VUV",
|
"vanuatuaanse vatu": "VUV",
|
||||||
"вату": "VUV",
|
|
||||||
"вануатски вату": "VUV",
|
"вануатски вату": "VUV",
|
||||||
"вануатський вату": "VUV",
|
"вануатський вату": "VUV",
|
||||||
"تالا ساموي": "WST",
|
"تالا ساموي": "WST",
|
||||||
|
@ -5506,7 +5443,6 @@
|
||||||
"الدولار الكندي": "CAD",
|
"الدولار الكندي": "CAD",
|
||||||
"c$": [
|
"c$": [
|
||||||
"NIO",
|
"NIO",
|
||||||
"NIC",
|
|
||||||
"CAD"
|
"CAD"
|
||||||
],
|
],
|
||||||
"dòlar de canadà": "CAD",
|
"dòlar de canadà": "CAD",
|
||||||
|
@ -5550,7 +5486,6 @@
|
||||||
"dollar canada": "CAD",
|
"dollar canada": "CAD",
|
||||||
"C$": [
|
"C$": [
|
||||||
"NIO",
|
"NIO",
|
||||||
"NIC",
|
|
||||||
"CAD"
|
"CAD"
|
||||||
],
|
],
|
||||||
"CAD$": "CAD",
|
"CAD$": "CAD",
|
||||||
|
@ -5586,6 +5521,7 @@
|
||||||
"валюта демократической республики конго": "CDF",
|
"валюта демократической республики конго": "CDF",
|
||||||
"франк бельгийского конго": "CDF",
|
"франк бельгийского конго": "CDF",
|
||||||
"франк дрк": "CDF",
|
"франк дрк": "CDF",
|
||||||
|
"kongovski frank": "CDF",
|
||||||
"kongo frankı": "CDF",
|
"kongo frankı": "CDF",
|
||||||
"wir euro": "CHE",
|
"wir euro": "CHE",
|
||||||
"che": "CHE",
|
"che": "CHE",
|
||||||
|
@ -6046,6 +5982,8 @@
|
||||||
"اليورو": "EUR",
|
"اليورو": "EUR",
|
||||||
"eur": "EUR",
|
"eur": "EUR",
|
||||||
"euros": "EUR",
|
"euros": "EUR",
|
||||||
|
"💶": "EUR",
|
||||||
|
"eŭroj": "EUR",
|
||||||
"e": [
|
"e": [
|
||||||
"SZL",
|
"SZL",
|
||||||
"EUR"
|
"EUR"
|
||||||
|
@ -6388,8 +6326,8 @@
|
||||||
"haitianischer gourde": "HTG",
|
"haitianischer gourde": "HTG",
|
||||||
"htg": "HTG",
|
"htg": "HTG",
|
||||||
"dollar haïtien": "HTG",
|
"dollar haïtien": "HTG",
|
||||||
"gourde haïtienne": "HTG",
|
|
||||||
"gourde haitienne": "HTG",
|
"gourde haitienne": "HTG",
|
||||||
|
"gourde haïtienne": "HTG",
|
||||||
"גורד": "HTG",
|
"גורד": "HTG",
|
||||||
"구르드": "HTG",
|
"구르드": "HTG",
|
||||||
"haitiaanse gourde": "HTG",
|
"haitiaanse gourde": "HTG",
|
||||||
|
@ -6596,6 +6534,9 @@
|
||||||
"indisk rupee": "INR",
|
"indisk rupee": "INR",
|
||||||
"indisk rupier": "INR",
|
"indisk rupier": "INR",
|
||||||
"indiske rupees": "INR",
|
"indiske rupees": "INR",
|
||||||
|
"rubai": "INR",
|
||||||
|
"rupaye": "INR",
|
||||||
|
"tanka": "INR",
|
||||||
"inr": "INR",
|
"inr": "INR",
|
||||||
"rupaya": "INR",
|
"rupaya": "INR",
|
||||||
"rupee": [
|
"rupee": [
|
||||||
|
@ -6650,6 +6591,7 @@
|
||||||
"dinar do iraque": "IQD",
|
"dinar do iraque": "IQD",
|
||||||
"валюта ирака": "IQD",
|
"валюта ирака": "IQD",
|
||||||
"динар ирака": "IQD",
|
"динар ирака": "IQD",
|
||||||
|
"iraški dinar": "IQD",
|
||||||
"இராக்கிய தீனார்": "IQD",
|
"இராக்கிய தீனார்": "IQD",
|
||||||
"ஈராக் டினார்": "IQD",
|
"ஈராக் டினார்": "IQD",
|
||||||
"ஈராக் தினார்": "IQD",
|
"ஈராக் தினார்": "IQD",
|
||||||
|
@ -7280,8 +7222,6 @@
|
||||||
"أوقيه موريتانيه": "MRU",
|
"أوقيه موريتانيه": "MRU",
|
||||||
"الأوقية الموريتانية": "MRU",
|
"الأوقية الموريتانية": "MRU",
|
||||||
"العملة الموريتانية": "MRU",
|
"العملة الموريتانية": "MRU",
|
||||||
"khoums": "MRU",
|
|
||||||
"khoum": "MRU",
|
|
||||||
"uqiya": "MRU",
|
"uqiya": "MRU",
|
||||||
"mru": "MRU",
|
"mru": "MRU",
|
||||||
"um": "MRU",
|
"um": "MRU",
|
||||||
|
@ -7478,126 +7418,36 @@
|
||||||
"nigérijská naira": "NGN",
|
"nigérijská naira": "NGN",
|
||||||
"наира": "NGN",
|
"наира": "NGN",
|
||||||
"nigeriansk naira": "NGN",
|
"nigeriansk naira": "NGN",
|
||||||
"كوردوبا نيكاراجوي": [
|
"كوردوبا نيكاراجوي": "NIO",
|
||||||
"NIO",
|
"córdoba nicaragüenc": "NIO",
|
||||||
"NIC"
|
"córdoba nicaragüenca": "NIO",
|
||||||
],
|
"nicaraguanischer córdoba": "NIO",
|
||||||
"córdoba nicaragüenc": [
|
"mariana montserrat": "NIO",
|
||||||
"NIO",
|
"nic": "NIO",
|
||||||
"NIC"
|
"nio": "NIO",
|
||||||
],
|
"nicaraguan cordoba": "NIO",
|
||||||
"córdoba nicaragüenca": [
|
"cordoba nicaraguense": "NIO",
|
||||||
"NIO",
|
"cordoba nicaragüense": "NIO",
|
||||||
"NIC"
|
"córdoba nicaragüense": "NIO",
|
||||||
],
|
"cordoba nicaraguayen": "NIO",
|
||||||
"nicaraguanischer córdoba": [
|
"córdoba nicaraguayen": "NIO",
|
||||||
"NIO",
|
"córdoba nicaraguéen": "NIO",
|
||||||
"NIC"
|
"nikaragvanska córdoba": "NIO",
|
||||||
],
|
"100ドル紙幣": "NIO",
|
||||||
"mariana montserrat": [
|
"コルドバ・オロ": "NIO",
|
||||||
"NIO",
|
"nicaraguaanse cordoba": "NIO",
|
||||||
"NIC"
|
"córdoba ouro": "NIO",
|
||||||
],
|
"córdoba nicaraguano": "NIO",
|
||||||
"nic": [
|
"валюта никарагуа": "NIO",
|
||||||
"NIO",
|
"золотая кордоба": "NIO",
|
||||||
"NIC"
|
"кордоба": "NIO",
|
||||||
],
|
"кордобас": "NIO",
|
||||||
"nio": [
|
"новая никарагуанская кордоба": "NIO",
|
||||||
"NIO",
|
"никарагванска златна кордоба": "NIO",
|
||||||
"NIC"
|
"никарагванска кордоба оро": "NIO",
|
||||||
],
|
"nicaraguansk córdoba": "NIO",
|
||||||
"nicaraguan cordoba": [
|
"nikaragua kordobası": "NIO",
|
||||||
"NIO",
|
"нікарагуанська кордова": "NIO",
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"cordoba nicaraguense": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"cordoba nicaragüense": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba nicaragüense": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"cordoba nicaraguayen": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba nicaraguayen": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba nicaraguéen": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nikaragvanska córdoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"100ドル紙幣": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"コルドバ・オロ": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nicaraguaanse cordoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba ouro": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"córdoba nicaraguano": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"валюта никарагуа": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"золотая кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"кордобас": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"новая никарагуанская кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"никарагванска златна кордоба": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"никарагванска кордоба оро": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nicaraguansk córdoba": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nikaragua kordobası": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"нікарагуанська кордова": [
|
|
||||||
"NIO",
|
|
||||||
"NIC"
|
|
||||||
],
|
|
||||||
"nok": "NOK",
|
"nok": "NOK",
|
||||||
"كرونه نروجية": "NOK",
|
"كرونه نروجية": "NOK",
|
||||||
"corona de noruega": "NOK",
|
"corona de noruega": "NOK",
|
||||||
|
@ -8961,11 +8811,11 @@
|
||||||
"usbekistan som": "UZS",
|
"usbekistan som": "UZS",
|
||||||
"usbekistan sum": "UZS",
|
"usbekistan sum": "UZS",
|
||||||
"uzbekistani som": "UZS",
|
"uzbekistani som": "UZS",
|
||||||
|
"uzs": "UZS",
|
||||||
"uzbeka sumo": "UZS",
|
"uzbeka sumo": "UZS",
|
||||||
"som uzbeco": "UZS",
|
"som uzbeco": "UZS",
|
||||||
"sum uzbeco": "UZS",
|
"sum uzbeco": "UZS",
|
||||||
"sum uzbeko": "UZS",
|
"sum uzbeko": "UZS",
|
||||||
"uzs": "UZS",
|
|
||||||
"som uzbekistan": "UZS",
|
"som uzbekistan": "UZS",
|
||||||
"som usbeco": "UZS",
|
"som usbeco": "UZS",
|
||||||
"ウズベキスタン・スム": "UZS",
|
"ウズベキスタン・スム": "UZS",
|
||||||
|
@ -9019,12 +8869,12 @@
|
||||||
"₫": "VND",
|
"₫": "VND",
|
||||||
"vnd": "VND",
|
"vnd": "VND",
|
||||||
"vnđ": "VND",
|
"vnđ": "VND",
|
||||||
"vietnam đồng": "VND",
|
|
||||||
"đong": "VND",
|
"đong": "VND",
|
||||||
"vietnamin dong": "VND",
|
"vietnamin dong": "VND",
|
||||||
"dong vietnamien": "VND",
|
"dong vietnamien": "VND",
|
||||||
"דונג וייטנאמי ": "VND",
|
"דונג וייטנאמי ": "VND",
|
||||||
"vietnámi dong": "VND",
|
"vietnámi dong": "VND",
|
||||||
|
"vietnam đồng": "VND",
|
||||||
"ベトナムドン": "VND",
|
"ベトナムドン": "VND",
|
||||||
"ベトナム・ドン": "VND",
|
"ベトナム・ドン": "VND",
|
||||||
"越南銅": "VND",
|
"越南銅": "VND",
|
||||||
|
@ -9820,7 +9670,7 @@
|
||||||
"ro": "Marcă bosniacă convertibilă",
|
"ro": "Marcă bosniacă convertibilă",
|
||||||
"ru": "конвертируемая марка",
|
"ru": "конвертируемая марка",
|
||||||
"sk": "Konvertibilná marka",
|
"sk": "Konvertibilná marka",
|
||||||
"sl": "Konvertibilna marka Bosne in Hercegovine",
|
"sl": "konvertibilna marka Bosne in Hercegovine",
|
||||||
"sr": "конвертибилна марка",
|
"sr": "конвертибилна марка",
|
||||||
"sv": "Konvertibilna marka",
|
"sv": "Konvertibilna marka",
|
||||||
"ta": "கன்வர்ட்டிபிள் மார்க்கு",
|
"ta": "கன்வர்ட்டிபிள் மார்க்கு",
|
||||||
|
@ -10039,6 +9889,7 @@
|
||||||
"BND": {
|
"BND": {
|
||||||
"ar": "دولار بروني",
|
"ar": "دولار بروني",
|
||||||
"bg": "Брунейски долар",
|
"bg": "Брунейски долар",
|
||||||
|
"bn": "ব্রুনাই ডলার",
|
||||||
"ca": "dòlar de Brunei",
|
"ca": "dòlar de Brunei",
|
||||||
"cs": "Brunejský dolar",
|
"cs": "Brunejský dolar",
|
||||||
"de": "Brunei-Dollar",
|
"de": "Brunei-Dollar",
|
||||||
|
@ -10420,7 +10271,8 @@
|
||||||
"uk": "Конголезький франк",
|
"uk": "Конголезький франк",
|
||||||
"vi": "Franc Congo",
|
"vi": "Franc Congo",
|
||||||
"cy": "ffranc y Congo",
|
"cy": "ffranc y Congo",
|
||||||
"oc": "Franc congolés"
|
"oc": "Franc congolés",
|
||||||
|
"sl": "kongovski frank"
|
||||||
},
|
},
|
||||||
"CHF": {
|
"CHF": {
|
||||||
"af": "Switserse frank",
|
"af": "Switserse frank",
|
||||||
|
@ -11490,7 +11342,7 @@
|
||||||
"es": "gourde",
|
"es": "gourde",
|
||||||
"eu": "Gourde",
|
"eu": "Gourde",
|
||||||
"fi": "Haitin gourde",
|
"fi": "Haitin gourde",
|
||||||
"fr": "Gourde",
|
"fr": "gourde",
|
||||||
"he": "גורד",
|
"he": "גורד",
|
||||||
"hr": "Haićanski gourd",
|
"hr": "Haićanski gourd",
|
||||||
"hu": "haiti gourde",
|
"hu": "haiti gourde",
|
||||||
|
@ -11543,7 +11395,7 @@
|
||||||
"ro": "Forint",
|
"ro": "Forint",
|
||||||
"ru": "венгерский форинт",
|
"ru": "венгерский форинт",
|
||||||
"sk": "Maďarský forint",
|
"sk": "Maďarský forint",
|
||||||
"sl": "Madžarski forint",
|
"sl": "madžarski forint",
|
||||||
"sr": "мађарска форинта",
|
"sr": "мађарска форинта",
|
||||||
"sv": "Forint",
|
"sv": "Forint",
|
||||||
"ta": "அங்கேரிய போரிண்ட்",
|
"ta": "அங்கேரிய போரிண்ட்",
|
||||||
|
@ -11713,6 +11565,7 @@
|
||||||
"th": "ดินาร์อิรัก",
|
"th": "ดินาร์อิรัก",
|
||||||
"tr": "Irak dinarı",
|
"tr": "Irak dinarı",
|
||||||
"uk": "Іракський динар",
|
"uk": "Іракський динар",
|
||||||
|
"sl": "iraški dinar",
|
||||||
"ta": "இராக்கிய தீனார்"
|
"ta": "இராக்கிய தீனார்"
|
||||||
},
|
},
|
||||||
"IRR": {
|
"IRR": {
|
||||||
|
@ -12985,40 +12838,6 @@
|
||||||
"oc": "Naira",
|
"oc": "Naira",
|
||||||
"sl": "naira"
|
"sl": "naira"
|
||||||
},
|
},
|
||||||
"NIC": {
|
|
||||||
"af": "Córdoba",
|
|
||||||
"ar": "كوردبا نيكاراغوا",
|
|
||||||
"bg": "Никарагуанска кордоба",
|
|
||||||
"ca": "córdoba",
|
|
||||||
"cs": "Nikaragujská córdoba",
|
|
||||||
"de": "Córdoba Oro",
|
|
||||||
"en": "Nicaraguan córdoba",
|
|
||||||
"eo": "nikaragva kordovo",
|
|
||||||
"es": "córdoba",
|
|
||||||
"eu": "Córdoba",
|
|
||||||
"fi": "Nicaraguan córdoba",
|
|
||||||
"fr": "Córdoba",
|
|
||||||
"gl": "Córdoba",
|
|
||||||
"he": "קורדובה",
|
|
||||||
"hr": "Nikaragvanska kordoba",
|
|
||||||
"hu": "nicaraguai córdoba",
|
|
||||||
"id": "Córdoba Nikaragua",
|
|
||||||
"it": "Córdoba nicaraguense",
|
|
||||||
"ja": "ニカラグア・コルドバ",
|
|
||||||
"ko": "니카라과 코르도바",
|
|
||||||
"lt": "Nikaragvos kordoba",
|
|
||||||
"nl": "Nicaraguaanse córdoba",
|
|
||||||
"pa": "ਨਿਕਾਰਾਗੁਆਈ ਕੋਰਦੋਬਾ",
|
|
||||||
"pl": "Cordoba oro",
|
|
||||||
"pt": "Córdoba (moeda)",
|
|
||||||
"ro": "Córdoba",
|
|
||||||
"ru": "никарагуанская кордоба",
|
|
||||||
"sr": "никарагванска кордоба",
|
|
||||||
"sv": "Nicaraguansk córdoba",
|
|
||||||
"tr": "Kordoba",
|
|
||||||
"uk": "Нікарагуанська кордоба",
|
|
||||||
"oc": "Córdoba (moneda)"
|
|
||||||
},
|
|
||||||
"NIO": {
|
"NIO": {
|
||||||
"af": "Córdoba",
|
"af": "Córdoba",
|
||||||
"ar": "كوردبا نيكاراغوا",
|
"ar": "كوردبا نيكاراغوا",
|
||||||
|
@ -13880,6 +13699,7 @@
|
||||||
"af": "Singapoer-dollar",
|
"af": "Singapoer-dollar",
|
||||||
"ar": "دولار سنغافوري",
|
"ar": "دولار سنغافوري",
|
||||||
"bg": "Сингапурски долар",
|
"bg": "Сингапурски долар",
|
||||||
|
"bn": "সিঙ্গাপুর ডলার",
|
||||||
"ca": "dòlar de Singapur",
|
"ca": "dòlar de Singapur",
|
||||||
"cs": "Singapurský dolar",
|
"cs": "Singapurský dolar",
|
||||||
"da": "singaporeansk dollar",
|
"da": "singaporeansk dollar",
|
||||||
|
@ -14164,7 +13984,7 @@
|
||||||
"pl": "Funt syryjski",
|
"pl": "Funt syryjski",
|
||||||
"pt": "libra síria",
|
"pt": "libra síria",
|
||||||
"ru": "сирийский фунт",
|
"ru": "сирийский фунт",
|
||||||
"sl": "Sirski funt",
|
"sl": "sirski funt",
|
||||||
"sr": "сиријска фунта",
|
"sr": "сиријска фунта",
|
||||||
"sv": "Syriskt pund",
|
"sv": "Syriskt pund",
|
||||||
"tr": "Suriye lirası",
|
"tr": "Suriye lirası",
|
||||||
|
@ -14634,7 +14454,7 @@
|
||||||
"ml": "യുണൈറ്റഡ് സ്റ്റേറ്റ്സ് ഡോളർ",
|
"ml": "യുണൈറ്റഡ് സ്റ്റേറ്റ്സ് ഡോളർ",
|
||||||
"ms": "Dolar Amerika Syarikat",
|
"ms": "Dolar Amerika Syarikat",
|
||||||
"nl": "US dollar",
|
"nl": "US dollar",
|
||||||
"oc": "Dolar american",
|
"oc": "dolar american",
|
||||||
"pa": "ਸੰਯੁਕਤ ਰਾਜ ਡਾਲਰ",
|
"pa": "ਸੰਯੁਕਤ ਰਾਜ ਡਾਲਰ",
|
||||||
"pap": "Dollar merikano",
|
"pap": "Dollar merikano",
|
||||||
"pl": "dolar amerykański",
|
"pl": "dolar amerykański",
|
||||||
|
@ -14651,7 +14471,7 @@
|
||||||
"te": "యునైటెడ్ స్టేట్స్ డాలర్",
|
"te": "యునైటెడ్ స్టేట్స్ డాలర్",
|
||||||
"th": "ดอลลาร์สหรัฐ",
|
"th": "ดอลลาร์สหรัฐ",
|
||||||
"tr": "Amerikan doları",
|
"tr": "Amerikan doları",
|
||||||
"uk": "долар США",
|
"uk": "Долар США",
|
||||||
"vi": "đô la Mỹ"
|
"vi": "đô la Mỹ"
|
||||||
},
|
},
|
||||||
"UYU": {
|
"UYU": {
|
||||||
|
@ -14747,7 +14567,7 @@
|
||||||
"cs": "Vietnamský dong",
|
"cs": "Vietnamský dong",
|
||||||
"da": "Dong",
|
"da": "Dong",
|
||||||
"de": "vietnamesischer Đồng",
|
"de": "vietnamesischer Đồng",
|
||||||
"en": "Vietnam Đồng",
|
"en": "Vietnamese đồng",
|
||||||
"eo": "vjetnama dongo",
|
"eo": "vjetnama dongo",
|
||||||
"es": "đồng vietnamita",
|
"es": "đồng vietnamita",
|
||||||
"eu": "Vietnamdar dong",
|
"eu": "Vietnamdar dong",
|
||||||
|
@ -14778,6 +14598,7 @@
|
||||||
},
|
},
|
||||||
"VUV": {
|
"VUV": {
|
||||||
"ar": "فاتو فانواتي",
|
"ar": "فاتو فانواتي",
|
||||||
|
"bg": "Вату",
|
||||||
"ca": "vatu",
|
"ca": "vatu",
|
||||||
"cs": "Vanuatský vatu",
|
"cs": "Vanuatský vatu",
|
||||||
"de": "Vatu",
|
"de": "Vatu",
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -47,6 +47,7 @@
|
||||||
"es": "es",
|
"es": "es",
|
||||||
"fa": "fa",
|
"fa": "fa",
|
||||||
"fr": "fr",
|
"fr": "fr",
|
||||||
|
"ga": "ga",
|
||||||
"he": "he",
|
"he": "he",
|
||||||
"hi": "hi",
|
"hi": "hi",
|
||||||
"hr": "hr",
|
"hr": "hr",
|
||||||
|
@ -59,18 +60,19 @@
|
||||||
"ko": "ko",
|
"ko": "ko",
|
||||||
"lt": "lt",
|
"lt": "lt",
|
||||||
"lv": "lv",
|
"lv": "lv",
|
||||||
"mn": "mn",
|
|
||||||
"nl": "nl",
|
"nl": "nl",
|
||||||
"no": "no",
|
"no": "no",
|
||||||
"pl": "pl",
|
"pl": "pl",
|
||||||
"pt": "pt",
|
"pt": "pt",
|
||||||
"ro": "ro",
|
"ro": "ro",
|
||||||
"ru": "ru",
|
"ru": "ru",
|
||||||
|
"rw": "rw",
|
||||||
"sr": "sr",
|
"sr": "sr",
|
||||||
"sv": "sv",
|
"sv": "sv",
|
||||||
"ta": "ta",
|
"ta": "ta",
|
||||||
"tr": "tr",
|
"tr": "tr",
|
||||||
"uk": "uk",
|
"uk": "uk",
|
||||||
|
"ur": "ur",
|
||||||
"vi": "vi",
|
"vi": "vi",
|
||||||
"zh": "zh",
|
"zh": "zh",
|
||||||
"zh_Hant": "zh-Hant"
|
"zh_Hant": "zh-Hant"
|
||||||
|
@ -2390,7 +2392,7 @@
|
||||||
"zh-TW": "tw-tzh"
|
"zh-TW": "tw-tzh"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"duckduckgo videos": {
|
"duckduckgo news": {
|
||||||
"all_locale": "wt-wt",
|
"all_locale": "wt-wt",
|
||||||
"custom": {
|
"custom": {
|
||||||
"lang_region": {
|
"lang_region": {
|
||||||
|
@ -2554,7 +2556,7 @@
|
||||||
"zh-TW": "tw-tzh"
|
"zh-TW": "tw-tzh"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"duckduckgo news": {
|
"duckduckgo videos": {
|
||||||
"all_locale": "wt-wt",
|
"all_locale": "wt-wt",
|
||||||
"custom": {
|
"custom": {
|
||||||
"lang_region": {
|
"lang_region": {
|
||||||
|
@ -5301,6 +5303,7 @@
|
||||||
"CC",
|
"CC",
|
||||||
"CD",
|
"CD",
|
||||||
"CF",
|
"CF",
|
||||||
|
"CG",
|
||||||
"CH",
|
"CH",
|
||||||
"CI",
|
"CI",
|
||||||
"CK",
|
"CK",
|
||||||
|
@ -5378,6 +5381,7 @@
|
||||||
"LB",
|
"LB",
|
||||||
"LC",
|
"LC",
|
||||||
"LK",
|
"LK",
|
||||||
|
"LS",
|
||||||
"LT",
|
"LT",
|
||||||
"LU",
|
"LU",
|
||||||
"LV",
|
"LV",
|
||||||
|
@ -5486,6 +5490,7 @@
|
||||||
"ak": "akan",
|
"ak": "akan",
|
||||||
"am": "amharic",
|
"am": "amharic",
|
||||||
"ar": "arabic",
|
"ar": "arabic",
|
||||||
|
"as": "assamese",
|
||||||
"ast": "asturian",
|
"ast": "asturian",
|
||||||
"az": "azerbaijani",
|
"az": "azerbaijani",
|
||||||
"be": "belarusian",
|
"be": "belarusian",
|
||||||
|
@ -5967,6 +5972,7 @@
|
||||||
"fiu-vro",
|
"fiu-vro",
|
||||||
"fj",
|
"fj",
|
||||||
"fo",
|
"fo",
|
||||||
|
"fon",
|
||||||
"fr",
|
"fr",
|
||||||
"frp",
|
"frp",
|
||||||
"frr",
|
"frr",
|
||||||
|
@ -6022,6 +6028,7 @@
|
||||||
"kbd",
|
"kbd",
|
||||||
"kbp",
|
"kbp",
|
||||||
"kcg",
|
"kcg",
|
||||||
|
"kg",
|
||||||
"ki",
|
"ki",
|
||||||
"kk",
|
"kk",
|
||||||
"kl",
|
"kl",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"versions": [
|
"versions": [
|
||||||
"118.0",
|
"119.0",
|
||||||
"117.0"
|
"118.0"
|
||||||
],
|
],
|
||||||
"os": [
|
"os": [
|
||||||
"Windows NT 10.0; Win64; x64",
|
"Windows NT 10.0; Win64; x64",
|
||||||
|
|
|
@ -241,6 +241,7 @@
|
||||||
"Q116432563": "ˢ",
|
"Q116432563": "ˢ",
|
||||||
"Q116443090": "ʰ",
|
"Q116443090": "ʰ",
|
||||||
"Q1165799": "mil",
|
"Q1165799": "mil",
|
||||||
|
"Q116939356": "Qs",
|
||||||
"Q11776930": "Mg",
|
"Q11776930": "Mg",
|
||||||
"Q11830636": "psf",
|
"Q11830636": "psf",
|
||||||
"Q11929860": "kpc",
|
"Q11929860": "kpc",
|
||||||
|
@ -268,6 +269,7 @@
|
||||||
"Q12269122": "YB/s",
|
"Q12269122": "YB/s",
|
||||||
"Q12269308": "Zb/s",
|
"Q12269308": "Zb/s",
|
||||||
"Q12269309": "ZB/s",
|
"Q12269309": "ZB/s",
|
||||||
|
"Q122972375": "Rs",
|
||||||
"Q1238720": "vols.",
|
"Q1238720": "vols.",
|
||||||
"Q1247300": "cm H₂O",
|
"Q1247300": "cm H₂O",
|
||||||
"Q12714022": "cwt",
|
"Q12714022": "cwt",
|
||||||
|
@ -822,7 +824,6 @@
|
||||||
"Q7398951": "PPI",
|
"Q7398951": "PPI",
|
||||||
"Q743895": "bpm",
|
"Q743895": "bpm",
|
||||||
"Q748716": "fps",
|
"Q748716": "fps",
|
||||||
"Q752079": "RT",
|
|
||||||
"Q752197": "kJ/mol",
|
"Q752197": "kJ/mol",
|
||||||
"Q7574000": "sp",
|
"Q7574000": "sp",
|
||||||
"Q7672057": "TU",
|
"Q7672057": "TU",
|
||||||
|
@ -890,6 +891,7 @@
|
||||||
"Q911730": "nx",
|
"Q911730": "nx",
|
||||||
"Q914151": "P_P",
|
"Q914151": "P_P",
|
||||||
"Q915169": "F_P",
|
"Q915169": "F_P",
|
||||||
|
"Q918094": "g",
|
||||||
"Q93318": "M",
|
"Q93318": "M",
|
||||||
"Q933427": "B",
|
"Q933427": "B",
|
||||||
"Q93678895": "gill (US)",
|
"Q93678895": "gill (US)",
|
||||||
|
|
|
@ -1,15 +1,6 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
# lint: pylint
|
# lint: pylint
|
||||||
""".. _limiter src:
|
"""Bot protection / IP rate limitation. The intention of rate limitation is to
|
||||||
|
|
||||||
Limiter
|
|
||||||
=======
|
|
||||||
|
|
||||||
.. sidebar:: info
|
|
||||||
|
|
||||||
The limiter requires a :ref:`Redis <settings redis>` database.
|
|
||||||
|
|
||||||
Bot protection / IP rate limitation. The intention of rate limitation is to
|
|
||||||
limit suspicious requests from an IP. The motivation behind this is the fact
|
limit suspicious requests from an IP. The motivation behind this is the fact
|
||||||
that SearXNG passes through requests from bots and is thus classified as a bot
|
that SearXNG passes through requests from bots and is thus classified as a bot
|
||||||
itself. As a result, the SearXNG engine then receives a CAPTCHA or is blocked
|
itself. As a result, the SearXNG engine then receives a CAPTCHA or is blocked
|
||||||
|
@ -17,7 +8,40 @@ by the search engine (the origin) in some other way.
|
||||||
|
|
||||||
To avoid blocking, the requests from bots to SearXNG must also be blocked, this
|
To avoid blocking, the requests from bots to SearXNG must also be blocked, this
|
||||||
is the task of the limiter. To perform this task, the limiter uses the methods
|
is the task of the limiter. To perform this task, the limiter uses the methods
|
||||||
from the :py:obj:`searx.botdetection`.
|
from the :ref:`botdetection`:
|
||||||
|
|
||||||
|
- Analysis of the HTTP header in the request / :ref:`botdetection probe headers`
|
||||||
|
can be easily bypassed.
|
||||||
|
|
||||||
|
- Block and pass lists in which IPs are listed / :ref:`botdetection ip_lists`
|
||||||
|
are hard to maintain, since the IPs of bots are not all known and change over
|
||||||
|
the time.
|
||||||
|
|
||||||
|
- Detection & dynamically :ref:`botdetection rate limit` of bots based on the
|
||||||
|
behavior of the requests. For dynamically changeable IP lists a Redis
|
||||||
|
database is needed.
|
||||||
|
|
||||||
|
The prerequisite for IP based methods is the correct determination of the IP of
|
||||||
|
the client. The IP of the client is determined via the X-Forwarded-For_ HTTP
|
||||||
|
header.
|
||||||
|
|
||||||
|
.. attention::
|
||||||
|
|
||||||
|
A correct setup of the HTTP request headers ``X-Forwarded-For`` and
|
||||||
|
``X-Real-IP`` is essential to be able to assign a request to an IP correctly:
|
||||||
|
|
||||||
|
- `NGINX RequestHeader`_
|
||||||
|
- `Apache RequestHeader`_
|
||||||
|
|
||||||
|
.. _X-Forwarded-For:
|
||||||
|
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
|
||||||
|
.. _NGINX RequestHeader:
|
||||||
|
https://docs.searxng.org/admin/installation-nginx.html#nginx-s-searxng-site
|
||||||
|
.. _Apache RequestHeader:
|
||||||
|
https://docs.searxng.org/admin/installation-apache.html#apache-s-searxng-site
|
||||||
|
|
||||||
|
Enable Limiter
|
||||||
|
==============
|
||||||
|
|
||||||
To enable the limiter activate:
|
To enable the limiter activate:
|
||||||
|
|
||||||
|
@ -35,36 +59,72 @@ and set the redis-url connection. Check the value, it depends on your redis DB
|
||||||
redis:
|
redis:
|
||||||
url: unix:///usr/local/searxng-redis/run/redis.sock?db=0
|
url: unix:///usr/local/searxng-redis/run/redis.sock?db=0
|
||||||
|
|
||||||
|
|
||||||
|
Configure Limiter
|
||||||
|
=================
|
||||||
|
|
||||||
|
The methods of :ref:`botdetection` the limiter uses are configured in a local
|
||||||
|
file ``/etc/searxng/limiter.toml``. The defaults are shown in limiter.toml_ /
|
||||||
|
Don't copy all values to your local configuration, just enable what you need by
|
||||||
|
overwriting the defaults. For instance to activate the ``link_token`` method in
|
||||||
|
the :ref:`botdetection.ip_limit` you only need to set this option to ``true``:
|
||||||
|
|
||||||
|
.. code:: toml
|
||||||
|
|
||||||
|
[botdetection.ip_limit]
|
||||||
|
link_token = true
|
||||||
|
|
||||||
|
.. _limiter.toml:
|
||||||
|
|
||||||
|
``limiter.toml``
|
||||||
|
================
|
||||||
|
|
||||||
|
In this file the limiter finds the configuration of the :ref:`botdetection`:
|
||||||
|
|
||||||
|
- :ref:`botdetection ip_lists`
|
||||||
|
- :ref:`botdetection rate limit`
|
||||||
|
- :ref:`botdetection probe headers`
|
||||||
|
|
||||||
|
.. kernel-include:: $SOURCEDIR/limiter.toml
|
||||||
|
:code: toml
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
import sys
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from ipaddress import ip_address
|
from ipaddress import ip_address
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
from searx.tools import config
|
from searx import (
|
||||||
from searx import logger
|
logger,
|
||||||
|
redisdb,
|
||||||
from . import (
|
)
|
||||||
|
from searx import botdetection
|
||||||
|
from searx.botdetection import (
|
||||||
|
config,
|
||||||
http_accept,
|
http_accept,
|
||||||
http_accept_encoding,
|
http_accept_encoding,
|
||||||
http_accept_language,
|
http_accept_language,
|
||||||
http_user_agent,
|
http_user_agent,
|
||||||
ip_limit,
|
ip_limit,
|
||||||
ip_lists,
|
ip_lists,
|
||||||
)
|
|
||||||
|
|
||||||
from ._helpers import (
|
|
||||||
get_network,
|
get_network,
|
||||||
get_real_ip,
|
get_real_ip,
|
||||||
dump_request,
|
dump_request,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logger.getChild('botdetection.limiter')
|
# the configuration are limiter.toml and "limiter" in settings.yml so, for
|
||||||
|
# coherency, the logger is "limiter"
|
||||||
|
logger = logger.getChild('limiter')
|
||||||
|
|
||||||
CFG: config.Config = None # type: ignore
|
CFG: config.Config = None # type: ignore
|
||||||
|
_INSTALLED = False
|
||||||
|
|
||||||
LIMITER_CFG_SCHEMA = Path(__file__).parent / "limiter.toml"
|
LIMITER_CFG_SCHEMA = Path(__file__).parent / "limiter.toml"
|
||||||
"""Base configuration (schema) of the botdetection."""
|
"""Base configuration (schema) of the botdetection."""
|
||||||
|
@ -143,3 +203,41 @@ def filter_request(request: flask.Request) -> werkzeug.Response | None:
|
||||||
return val
|
return val
|
||||||
logger.debug(f"OK {network}: %s", dump_request(flask.request))
|
logger.debug(f"OK {network}: %s", dump_request(flask.request))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def pre_request():
|
||||||
|
"""See :py:obj:`flask.Flask.before_request`"""
|
||||||
|
return filter_request(flask.request)
|
||||||
|
|
||||||
|
|
||||||
|
def is_installed():
|
||||||
|
"""Returns ``True`` if limiter is active and a redis DB is available."""
|
||||||
|
return _INSTALLED
|
||||||
|
|
||||||
|
|
||||||
|
def initialize(app: flask.Flask, settings):
|
||||||
|
"""Install the limiter"""
|
||||||
|
global _INSTALLED # pylint: disable=global-statement
|
||||||
|
|
||||||
|
if not (settings['server']['limiter'] or settings['server']['public_instance']):
|
||||||
|
return
|
||||||
|
|
||||||
|
redis_client = redisdb.client()
|
||||||
|
if not redis_client:
|
||||||
|
logger.error(
|
||||||
|
"The limiter requires Redis, please consult the documentation: "
|
||||||
|
"https://docs.searxng.org/admin/searx.limiter.html"
|
||||||
|
)
|
||||||
|
if settings['server']['public_instance']:
|
||||||
|
sys.exit(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
_INSTALLED = True
|
||||||
|
|
||||||
|
cfg = get_cfg()
|
||||||
|
if settings['server']['public_instance']:
|
||||||
|
# overwrite limiter.toml setting
|
||||||
|
cfg.set('botdetection.ip_limit.link_token', True)
|
||||||
|
|
||||||
|
botdetection.init(cfg, redis_client)
|
||||||
|
app.before_request(pre_request)
|
|
@ -1,38 +0,0 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
# lint: pylint
|
|
||||||
# pyright: basic
|
|
||||||
"""see :ref:`limiter src`"""
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import flask
|
|
||||||
|
|
||||||
from searx import redisdb
|
|
||||||
from searx.plugins import logger
|
|
||||||
from searx.botdetection import limiter
|
|
||||||
|
|
||||||
name = "Request limiter"
|
|
||||||
description = "Limit the number of request"
|
|
||||||
default_on = False
|
|
||||||
preference_section = 'service'
|
|
||||||
|
|
||||||
logger = logger.getChild('limiter')
|
|
||||||
|
|
||||||
|
|
||||||
def pre_request():
|
|
||||||
"""See :ref:`flask.Flask.before_request`"""
|
|
||||||
return limiter.filter_request(flask.request)
|
|
||||||
|
|
||||||
|
|
||||||
def init(app: flask.Flask, settings) -> bool:
|
|
||||||
if not settings['server']['limiter'] and not settings['server']['public_instance']:
|
|
||||||
return False
|
|
||||||
if not redisdb.client():
|
|
||||||
logger.error(
|
|
||||||
"The limiter requires Redis, please consult the documentation: "
|
|
||||||
+ "https://docs.searxng.org/admin/searx.botdetection.html#limiter"
|
|
||||||
)
|
|
||||||
if settings['server']['public_instance']:
|
|
||||||
sys.exit(1)
|
|
||||||
return False
|
|
||||||
app.before_request(pre_request)
|
|
||||||
return True
|
|
|
@ -17,7 +17,7 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/searxng.min.css') }}" type="text/css" media="screen" />
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/searxng.min.css') }}" type="text/css" media="screen" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if get_setting('server.limiter') %}
|
{% if get_setting('server.limiter') or get_setting('server.public_instance') %}
|
||||||
<link rel="stylesheet" href="{{ url_for('client_token', token=link_token) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ url_for('client_token', token=link_token) }}" type="text/css" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% block styles %}{% endblock %}
|
{% block styles %}{% endblock %}
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
# lint: pylint
|
|
||||||
""".. _tools src:
|
|
||||||
|
|
||||||
A collection of *utilities* used by SearXNG, but without SearXNG specific
|
|
||||||
peculiarities.
|
|
||||||
|
|
||||||
"""
|
|
Binary file not shown.
|
@ -12,15 +12,16 @@ 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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-07-09 15:33+0000\n"
|
"PO-Revision-Date: 2023-10-19 14:53+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Afrikaans <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/af/>\n"
|
||||||
"Language: af\n"
|
"Language: af\n"
|
||||||
"Language-Team: Afrikaans "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/af/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.0.2\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -322,7 +323,7 @@ msgstr "Die prent kon nie afgelaai word nie."
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Morning"
|
msgid "Morning"
|
||||||
msgstr "More"
|
msgstr "Oggend"
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Noon"
|
msgid "Noon"
|
||||||
|
@ -1399,4 +1400,3 @@ msgstr ""
|
||||||
#~ "use another query or search in "
|
#~ "use another query or search in "
|
||||||
#~ "more categories."
|
#~ "more categories."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -13,20 +13,22 @@
|
||||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
# Ivan Gabaldon <admin@inetol.net>, 2023.
|
# Ivan Gabaldon <admin@inetol.net>, 2023.
|
||||||
|
# quenty_occitania <quentinantonin@free.fr>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-12 14:53+0000\n"
|
"PO-Revision-Date: 2023-10-26 15:37+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: quenty_occitania <quentinantonin@free.fr>\n"
|
||||||
|
"Language-Team: Catalan <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/ca/>\n"
|
||||||
"Language: ca\n"
|
"Language: ca\n"
|
||||||
"Language-Team: Catalan "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/ca/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -117,7 +119,7 @@ msgstr "paquets"
|
||||||
#. CATEGORY_GROUPS['Q_A']
|
#. CATEGORY_GROUPS['Q_A']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr "preguntes i respostes"
|
msgstr "questions i respostes"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['REPOS']
|
#. CATEGORY_GROUPS['REPOS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -1685,4 +1687,3 @@ msgstr "amaga el vídeo"
|
||||||
#~ "no hem trobat cap resultat. Feu "
|
#~ "no hem trobat cap resultat. Feu "
|
||||||
#~ "una consulta diferent o cerqueu en "
|
#~ "una consulta diferent o cerqueu en "
|
||||||
#~ "més categories."
|
#~ "més categories."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -13,18 +13,19 @@
|
||||||
# RaptaG <george-raptis@tutamail.com>, 2023.
|
# RaptaG <george-raptis@tutamail.com>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-22 07:07+0000\n"
|
"PO-Revision-Date: 2023-10-20 07:07+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Greek <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/el/>\n"
|
||||||
"Language: el_GR\n"
|
"Language: el_GR\n"
|
||||||
"Language-Team: Greek "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/el/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.0.2\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -275,7 +276,7 @@ msgstr "Κανάλι"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "ράδιο"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
|
@ -283,7 +284,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "ψήφους"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
|
@ -1689,4 +1690,3 @@ msgstr "απόκρυψη βίντεο"
|
||||||
#~ "δε βρέθηκαν αποτελέσματα. Παρακαλούμε "
|
#~ "δε βρέθηκαν αποτελέσματα. Παρακαλούμε "
|
||||||
#~ "χρησιμοποιήστε άλλη αναζήτηση ή ψάξτε σε"
|
#~ "χρησιμοποιήστε άλλη αναζήτηση ή ψάξτε σε"
|
||||||
#~ " περισσότερες κατηγορίες."
|
#~ " περισσότερες κατηγορίες."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -13,18 +13,19 @@
|
||||||
# alexgabi <alexgabi@disroot.org>, 2023.
|
# alexgabi <alexgabi@disroot.org>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-29 07:07+0000\n"
|
"PO-Revision-Date: 2023-10-15 20:53+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: alexgabi <alexgabi@disroot.org>\n"
|
||||||
|
"Language-Team: Basque <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/eu/>\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
"Language-Team: Basque "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/eu/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.0.2\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -275,19 +276,19 @@ msgstr "Kanala"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "irratia"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bit emaria"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "botoak"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "klikak"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -1665,4 +1666,3 @@ msgstr "ezkutatu bideoa"
|
||||||
#~ "ez dugu emaitzarik aurkitu. Mesedez "
|
#~ "ez dugu emaitzarik aurkitu. Mesedez "
|
||||||
#~ "beste kontsulta bat egin edo bilatu "
|
#~ "beste kontsulta bat egin edo bilatu "
|
||||||
#~ "kategoria gehiagotan."
|
#~ "kategoria gehiagotan."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -10,18 +10,19 @@
|
||||||
# artnay <jiri.gronroos@iki.fi>, 2023.
|
# artnay <jiri.gronroos@iki.fi>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-23 16:53+0000\n"
|
"PO-Revision-Date: 2023-10-26 15:37+0000\n"
|
||||||
"Last-Translator: artnay <jiri.gronroos@iki.fi>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Finnish <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/fi/>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"Language-Team: Finnish "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/fi/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -272,15 +273,15 @@ msgstr "Kanava"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "radio"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bittinopeus"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "ääntä"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
|
@ -1677,4 +1678,3 @@ msgstr "piilota video"
|
||||||
#~ "löytynyt. Etsi käyttäen eri hakuehtoja "
|
#~ "löytynyt. Etsi käyttäen eri hakuehtoja "
|
||||||
#~ "tai ulota hakusi nykyistä useampiin eri"
|
#~ "tai ulota hakusi nykyistä useampiin eri"
|
||||||
#~ " luokkiin."
|
#~ " luokkiin."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -9,19 +9,20 @@
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-12 14:53+0000\n"
|
"PO-Revision-Date: 2023-10-24 11:13+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Filipino <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/fil/>\n"
|
||||||
"Language: fil\n"
|
"Language: fil\n"
|
||||||
"Language-Team: Filipino "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/fil/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n == 1 || n==2 || n==3) || (n % 10 != 4"
|
|
||||||
" || n % 10 != 6 || n % 10 != 9);\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=2; plural=(n == 1 || n==2 || n==3) || (n % 10 != 4 || "
|
||||||
|
"n % 10 != 6 || n % 10 != 9);\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -272,11 +273,11 @@ msgstr "Tyanel"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "radyo"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
|
@ -1671,4 +1672,3 @@ msgstr "itago ang video"
|
||||||
#~ "wala kaming nakita na resulta. Pakiusap"
|
#~ "wala kaming nakita na resulta. Pakiusap"
|
||||||
#~ " na ibahin ang tanong o maghanap "
|
#~ " na ibahin ang tanong o maghanap "
|
||||||
#~ "sa maraming uri."
|
#~ "sa maraming uri."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -17,13 +17,14 @@
|
||||||
# NoEnd-yt <isaac.landau2104@gmail.com>, 2023.
|
# NoEnd-yt <isaac.landau2104@gmail.com>, 2023.
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
# microsoftocsharp <kottiberyu@gmail.com>, 2023.
|
# microsoftocsharp <kottiberyu@gmail.com>, 2023.
|
||||||
|
# quenty_occitania <quentinantonin@free.fr>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-10-06 07:07+0000\n"
|
"PO-Revision-Date: 2023-10-27 07:07+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: quenty_occitania <quentinantonin@free.fr>\n"
|
||||||
"Language-Team: French <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: French <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/fr/>\n"
|
"searxng/fr/>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
|
@ -31,7 +32,7 @@ msgstr ""
|
||||||
"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=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 5.0.2\n"
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -270,7 +271,7 @@ msgstr "Obtenir l'itinéraire"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:96
|
#: searx/engines/pdbe.py:96
|
||||||
msgid "{title} (OBSOLETE)"
|
msgid "{title} (OBSOLETE)"
|
||||||
msgstr "{titre} (OBSOLÈTE)"
|
msgstr "{title} (OBSOLÈTE)"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:103
|
#: searx/engines/pdbe.py:103
|
||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
|
@ -282,19 +283,19 @@ msgstr "Chaîne"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "radio"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "débit"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "voix"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "clics"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -1021,7 +1022,7 @@ msgstr "Raccourcis clavier"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:13
|
#: searx/templates/simple/preferences/hotkeys.html:13
|
||||||
msgid "Vim-like"
|
msgid "Vim-like"
|
||||||
msgstr ""
|
msgstr "Comme-vim"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:18
|
#: searx/templates/simple/preferences/hotkeys.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|
Binary file not shown.
|
@ -11,7 +11,7 @@ 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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-10-06 07:07+0000\n"
|
"PO-Revision-Date: 2023-10-24 11:13+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
"Language-Team: Latvian <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: Latvian <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/lv/>\n"
|
"searxng/lv/>\n"
|
||||||
|
@ -21,7 +21,7 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= "
|
"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= "
|
||||||
"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
|
"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
|
||||||
"X-Generator: Weblate 5.0.2\n"
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -272,19 +272,19 @@ msgstr "Kanāls"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "radio"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bitu pārraide"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "balsis"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "klikšķi"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -304,16 +304,20 @@ msgid ""
|
||||||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||||
" WebP."
|
" WebP."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Nevar nolasīt šo attēla url. Tas var būt saistīts ar neatbalstītu faila "
|
||||||
|
"formātu. TinEye atbalsta tikai JPEG, PNG, GIF, BMP, TIFF vai WebP attēlus."
|
||||||
|
|
||||||
#: searx/engines/tineye.py:46
|
#: searx/engines/tineye.py:46
|
||||||
msgid ""
|
msgid ""
|
||||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||||
" visual detail to successfully identify matches."
|
" visual detail to successfully identify matches."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Attēls ir pārāk vienkāršs, lai atrastu atbilstību. Lai veiksmīgi noteiktu "
|
||||||
|
"sakritības, TinEye ir nepieciešams pamata vizuālo detaļu līmenis."
|
||||||
|
|
||||||
#: searx/engines/tineye.py:52
|
#: searx/engines/tineye.py:52
|
||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Attēlu nav iespējams lejupielādēt"
|
msgstr "Attēlu neizdevās lejupielādēt."
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Morning"
|
msgid "Morning"
|
||||||
|
@ -354,26 +358,32 @@ msgstr "Resursdatora vārda nomaiņa"
|
||||||
#: searx/plugins/hostname_replace.py:10
|
#: searx/plugins/hostname_replace.py:10
|
||||||
msgid "Rewrite result hostnames or remove results based on the hostname"
|
msgid "Rewrite result hostnames or remove results based on the hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Pārrakstīt rezultātu saimniekvārdus vai noņemt rezultātus, pamatojoties uz "
|
||||||
|
"saimniekvārdu"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:9
|
#: searx/plugins/oa_doi_rewrite.py:9
|
||||||
msgid "Open Access DOI rewrite"
|
msgid "Open Access DOI rewrite"
|
||||||
msgstr ""
|
msgstr "Atvērtās piekļuves DOI pārrakstīšana"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:10
|
#: searx/plugins/oa_doi_rewrite.py:10
|
||||||
msgid ""
|
msgid ""
|
||||||
"Avoid paywalls by redirecting to open-access versions of publications "
|
"Avoid paywalls by redirecting to open-access versions of publications "
|
||||||
"when available"
|
"when available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Izvairieties no maksas sienām, novirzot uz publikāciju atvērtās piekļuves "
|
||||||
|
"versijām, ja tās ir pieejamas"
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:10
|
#: searx/plugins/self_info.py:10
|
||||||
msgid "Self Information"
|
msgid "Self Information"
|
||||||
msgstr ""
|
msgstr "Informācija par sevi"
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:11
|
#: searx/plugins/self_info.py:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"Displays your IP if the query is \"ip\" and your user agent if the query "
|
"Displays your IP if the query is \"ip\" and your user agent if the query "
|
||||||
"contains \"user agent\"."
|
"contains \"user agent\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Tiek parādīts jūsu IP, ja pieprasījums ir \"ip\", un jūsu lietotāja aģents, "
|
||||||
|
"ja pieprasījumā ir \"user agent\"."
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:25
|
#: searx/plugins/tor_check.py:25
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
|
@ -403,7 +413,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:29
|
#: searx/plugins/tracker_url_remover.py:29
|
||||||
msgid "Tracker URL remover"
|
msgid "Tracker URL remover"
|
||||||
msgstr ""
|
msgstr "Izsekošanas URL noņemšanas līdzeklis"
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:30
|
#: searx/plugins/tracker_url_remover.py:30
|
||||||
msgid "Remove trackers arguments from the returned URL"
|
msgid "Remove trackers arguments from the returned URL"
|
||||||
|
|
Binary file not shown.
|
@ -19,18 +19,19 @@
|
||||||
# microsoftocsharp <kottiberyu@gmail.com>, 2023.
|
# microsoftocsharp <kottiberyu@gmail.com>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-12 14:53+0000\n"
|
"PO-Revision-Date: 2023-10-17 13:53+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Dutch <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/nl/>\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"Language-Team: Dutch "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/nl/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.0.2\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -281,19 +282,19 @@ msgstr "Kanaal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "radio"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "stemmen"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "clicks"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -854,7 +855,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:6
|
#: searx/templates/simple/messages/no_results.html:6
|
||||||
msgid "Refresh the page."
|
msgid "Refresh the page."
|
||||||
msgstr ""
|
msgstr "Ververs de pagina"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:7
|
#: searx/templates/simple/messages/no_results.html:7
|
||||||
msgid "Search for another query or select another category (above)."
|
msgid "Search for another query or select another category (above)."
|
||||||
|
@ -1696,4 +1697,3 @@ msgstr "verberg video"
|
||||||
#~ "We konden geen resultaten vinden. "
|
#~ "We konden geen resultaten vinden. "
|
||||||
#~ "Probeer een andere zoekopdracht, of zoek"
|
#~ "Probeer een andere zoekopdracht, of zoek"
|
||||||
#~ " in meer categorieën."
|
#~ " in meer categorieën."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -6,31 +6,33 @@
|
||||||
# Quentin PAGÈS, 2016,2018
|
# Quentin PAGÈS, 2016,2018
|
||||||
# Marc Abonce Seguin, 2019
|
# Marc Abonce Seguin, 2019
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
|
# quenty_occitania <quentinantonin@free.fr>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-07-09 15:34+0000\n"
|
"PO-Revision-Date: 2023-10-27 07:07+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: quenty_occitania <quentinantonin@free.fr>\n"
|
||||||
|
"Language-Team: Occitan <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/oc/>\n"
|
||||||
"Language: oc\n"
|
"Language: oc\n"
|
||||||
"Language-Team: Occitan "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/oc/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\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=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "sens jos grop"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "other"
|
msgid "other"
|
||||||
msgstr ""
|
msgstr "autre"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['FILES']
|
#. CATEGORY_NAMES['FILES']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -80,7 +82,7 @@ msgstr "mapa"
|
||||||
#. CATEGORY_NAMES['ONIONS']
|
#. CATEGORY_NAMES['ONIONS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "onions"
|
msgid "onions"
|
||||||
msgstr ""
|
msgstr "onions"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['SCIENCE']
|
#. CATEGORY_NAMES['SCIENCE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -90,62 +92,62 @@ msgstr "sciéncia"
|
||||||
#. CATEGORY_GROUPS['APPS']
|
#. CATEGORY_GROUPS['APPS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "apps"
|
msgid "apps"
|
||||||
msgstr ""
|
msgstr "aplicacions"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['DICTIONARIES']
|
#. CATEGORY_GROUPS['DICTIONARIES']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "dictionaries"
|
msgid "dictionaries"
|
||||||
msgstr ""
|
msgstr "diccionaris"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['LYRICS']
|
#. CATEGORY_GROUPS['LYRICS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr ""
|
msgstr "paraulas"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['PACKAGES']
|
#. CATEGORY_GROUPS['PACKAGES']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "packages"
|
msgid "packages"
|
||||||
msgstr ""
|
msgstr "paquets"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['Q_A']
|
#. CATEGORY_GROUPS['Q_A']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr ""
|
msgstr "questions/responsas"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['REPOS']
|
#. CATEGORY_GROUPS['REPOS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "repos"
|
msgid "repos"
|
||||||
msgstr ""
|
msgstr "repertòris"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['SOFTWARE_WIKIS']
|
#. CATEGORY_GROUPS['SOFTWARE_WIKIS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "software wikis"
|
msgid "software wikis"
|
||||||
msgstr ""
|
msgstr "wikis logicial"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['WEB']
|
#. CATEGORY_GROUPS['WEB']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "web"
|
msgid "web"
|
||||||
msgstr ""
|
msgstr "web"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['SCIENTIFIC PUBLICATIONS']
|
#. CATEGORY_GROUPS['SCIENTIFIC PUBLICATIONS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "scientific publications"
|
msgid "scientific publications"
|
||||||
msgstr ""
|
msgstr "articles scientifics"
|
||||||
|
|
||||||
#. STYLE_NAMES['AUTO']
|
#. STYLE_NAMES['AUTO']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr "automatic"
|
||||||
|
|
||||||
#. STYLE_NAMES['LIGHT']
|
#. STYLE_NAMES['LIGHT']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "light"
|
msgid "light"
|
||||||
msgstr ""
|
msgstr "clar"
|
||||||
|
|
||||||
#. STYLE_NAMES['DARK']
|
#. STYLE_NAMES['DARK']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "dark"
|
msgid "dark"
|
||||||
msgstr ""
|
msgstr "fosc"
|
||||||
|
|
||||||
#: searx/webapp.py:331
|
#: searx/webapp.py:331
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
|
@ -154,11 +156,11 @@ msgstr "Cap d’element pas trobat"
|
||||||
#: searx/engines/qwant.py:280
|
#: searx/engines/qwant.py:280
|
||||||
#: searx/templates/simple/result_templates/images.html:20 searx/webapp.py:333
|
#: searx/templates/simple/result_templates/images.html:20 searx/webapp.py:333
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr "Font"
|
||||||
|
|
||||||
#: searx/webapp.py:335
|
#: searx/webapp.py:335
|
||||||
msgid "Error loading the next page"
|
msgid "Error loading the next page"
|
||||||
msgstr ""
|
msgstr "Error en cargant la pagina seguenta"
|
||||||
|
|
||||||
#: searx/webapp.py:492 searx/webapp.py:888
|
#: searx/webapp.py:492 searx/webapp.py:888
|
||||||
msgid "Invalid settings, please edit your preferences"
|
msgid "Invalid settings, please edit your preferences"
|
||||||
|
@ -174,59 +176,59 @@ msgstr "error de recèrca"
|
||||||
|
|
||||||
#: searx/webutils.py:34
|
#: searx/webutils.py:34
|
||||||
msgid "timeout"
|
msgid "timeout"
|
||||||
msgstr ""
|
msgstr "expirat"
|
||||||
|
|
||||||
#: searx/webutils.py:35
|
#: searx/webutils.py:35
|
||||||
msgid "parsing error"
|
msgid "parsing error"
|
||||||
msgstr ""
|
msgstr "error d’analisi"
|
||||||
|
|
||||||
#: searx/webutils.py:36
|
#: searx/webutils.py:36
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr ""
|
msgstr "error de protocòl HTTP"
|
||||||
|
|
||||||
#: searx/webutils.py:37
|
#: searx/webutils.py:37
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
msgstr ""
|
msgstr "Error de ret"
|
||||||
|
|
||||||
#: searx/webutils.py:38
|
#: searx/webutils.py:38
|
||||||
msgid "SSL error: certificate validation has failed"
|
msgid "SSL error: certificate validation has failed"
|
||||||
msgstr ""
|
msgstr "Error SSL : la verificacion del certificat a fracassat"
|
||||||
|
|
||||||
#: searx/webutils.py:40
|
#: searx/webutils.py:40
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
msgstr ""
|
msgstr "error inesperada"
|
||||||
|
|
||||||
#: searx/webutils.py:47
|
#: searx/webutils.py:47
|
||||||
msgid "HTTP error"
|
msgid "HTTP error"
|
||||||
msgstr ""
|
msgstr "error HTTP"
|
||||||
|
|
||||||
#: searx/webutils.py:48
|
#: searx/webutils.py:48
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr ""
|
msgstr "error de connexion HTTP"
|
||||||
|
|
||||||
#: searx/webutils.py:54
|
#: searx/webutils.py:54
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
msgstr ""
|
msgstr "Error servidor mandatari"
|
||||||
|
|
||||||
#: searx/webutils.py:55
|
#: searx/webutils.py:55
|
||||||
msgid "CAPTCHA"
|
msgid "CAPTCHA"
|
||||||
msgstr ""
|
msgstr "CAPTCHA"
|
||||||
|
|
||||||
#: searx/webutils.py:56
|
#: searx/webutils.py:56
|
||||||
msgid "too many requests"
|
msgid "too many requests"
|
||||||
msgstr ""
|
msgstr "tròpas de requèstas"
|
||||||
|
|
||||||
#: searx/webutils.py:57
|
#: searx/webutils.py:57
|
||||||
msgid "access denied"
|
msgid "access denied"
|
||||||
msgstr ""
|
msgstr "accès refusat"
|
||||||
|
|
||||||
#: searx/webutils.py:58
|
#: searx/webutils.py:58
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr ""
|
msgstr "error de l’API del servidor"
|
||||||
|
|
||||||
#: searx/webutils.py:77
|
#: searx/webutils.py:77
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
msgstr ""
|
msgstr "Suspendut"
|
||||||
|
|
||||||
#: searx/webutils.py:317
|
#: searx/webutils.py:317
|
||||||
msgid "{minutes} minute(s) ago"
|
msgid "{minutes} minute(s) ago"
|
||||||
|
@ -254,11 +256,11 @@ msgstr "Calcula las {functions} dels arguments"
|
||||||
|
|
||||||
#: searx/engines/openstreetmap.py:160
|
#: searx/engines/openstreetmap.py:160
|
||||||
msgid "Get directions"
|
msgid "Get directions"
|
||||||
msgstr ""
|
msgstr "Obténer l’itinerari"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:96
|
#: searx/engines/pdbe.py:96
|
||||||
msgid "{title} (OBSOLETE)"
|
msgid "{title} (OBSOLETE)"
|
||||||
msgstr ""
|
msgstr "{title} (OBSOLÈT)"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:103
|
#: searx/engines/pdbe.py:103
|
||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
|
@ -266,23 +268,23 @@ msgstr "Aqueste element es estat remplaçat per"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:282
|
#: searx/engines/qwant.py:282
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr "Canal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "ràdio"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "debit"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "vòtes"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "clics"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -293,6 +295,8 @@ msgid ""
|
||||||
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
||||||
"{lastCitationVelocityYear}"
|
"{lastCitationVelocityYear}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"{numCitations} citacions dempuèi l’annada {firstCitationVelocityYear} fins a "
|
||||||
|
"{lastCitationVelocityYear}"
|
||||||
|
|
||||||
#: searx/engines/tineye.py:40
|
#: searx/engines/tineye.py:40
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -309,31 +313,31 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/engines/tineye.py:52
|
#: searx/engines/tineye.py:52
|
||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr ""
|
msgstr "Telecargament impossible de l’imatge."
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Morning"
|
msgid "Morning"
|
||||||
msgstr ""
|
msgstr "Matin"
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Noon"
|
msgid "Noon"
|
||||||
msgstr ""
|
msgstr "Miègjorn"
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Evening"
|
msgid "Evening"
|
||||||
msgstr ""
|
msgstr "Ser"
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Night"
|
msgid "Night"
|
||||||
msgstr ""
|
msgstr "Nuèch"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:130
|
#: searx/engines/zlibrary.py:130
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr "Nòta del libre"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:131
|
#: searx/engines/zlibrary.py:131
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr "Qualitat del fichièr"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:24
|
#: searx/plugins/hash_plugin.py:24
|
||||||
msgid "Converts strings to different hash digests."
|
msgid "Converts strings to different hash digests."
|
||||||
|
@ -345,7 +349,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/hostname_replace.py:9
|
#: searx/plugins/hostname_replace.py:9
|
||||||
msgid "Hostname replace"
|
msgid "Hostname replace"
|
||||||
msgstr ""
|
msgstr "Remplaçar los noms d’òste"
|
||||||
|
|
||||||
#: searx/plugins/hostname_replace.py:10
|
#: searx/plugins/hostname_replace.py:10
|
||||||
msgid "Rewrite result hostnames or remove results based on the hostname"
|
msgid "Rewrite result hostnames or remove results based on the hostname"
|
||||||
|
@ -365,7 +369,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:10
|
#: searx/plugins/self_info.py:10
|
||||||
msgid "Self Information"
|
msgid "Self Information"
|
||||||
msgstr ""
|
msgstr "Informacions pròpias"
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:11
|
#: searx/plugins/self_info.py:11
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -377,7 +381,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:25
|
#: searx/plugins/tor_check.py:25
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
msgstr ""
|
msgstr "Empeuton de verificacion de Tor"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:28
|
#: searx/plugins/tor_check.py:28
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -395,7 +399,7 @@ msgstr ""
|
||||||
msgid ""
|
msgid ""
|
||||||
"You are using Tor and it looks like you have this external IP address: "
|
"You are using Tor and it looks like you have this external IP address: "
|
||||||
"{ip_address}"
|
"{ip_address}"
|
||||||
msgstr ""
|
msgstr "Utilizatz Tor e sembla qu’avètz aquesta adreça IP : {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:86
|
#: searx/plugins/tor_check.py:86
|
||||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||||
|
@ -424,11 +428,11 @@ msgstr "cercar dins la pagina"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:49
|
#: searx/templates/simple/base.html:49
|
||||||
msgid "About"
|
msgid "About"
|
||||||
msgstr ""
|
msgstr "A prepaus"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:53
|
#: searx/templates/simple/base.html:53
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr ""
|
msgstr "Far un don"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:57
|
#: searx/templates/simple/base.html:57
|
||||||
#: searx/templates/simple/preferences.html:156
|
#: searx/templates/simple/preferences.html:156
|
||||||
|
@ -445,11 +449,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:68
|
#: searx/templates/simple/base.html:68
|
||||||
msgid "Source code"
|
msgid "Source code"
|
||||||
msgstr ""
|
msgstr "Còdi font"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:69
|
#: searx/templates/simple/base.html:69
|
||||||
msgid "Issue tracker"
|
msgid "Issue tracker"
|
||||||
msgstr ""
|
msgstr "Seguiment d’anomalias"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
|
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
|
||||||
msgid "Engine stats"
|
msgid "Engine stats"
|
||||||
|
@ -457,15 +461,15 @@ msgstr "Estatistica del motor"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:72
|
#: searx/templates/simple/base.html:72
|
||||||
msgid "Public instances"
|
msgid "Public instances"
|
||||||
msgstr ""
|
msgstr "Instàncias publicas"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:75
|
#: searx/templates/simple/base.html:75
|
||||||
msgid "Privacy policy"
|
msgid "Privacy policy"
|
||||||
msgstr ""
|
msgstr "Politica de confidencialitat"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:78
|
#: searx/templates/simple/base.html:78
|
||||||
msgid "Contact instance maintainer"
|
msgid "Contact instance maintainer"
|
||||||
msgstr ""
|
msgstr "Contactatz lo responsable de l’instància"
|
||||||
|
|
||||||
#: searx/templates/simple/categories.html:26
|
#: searx/templates/simple/categories.html:26
|
||||||
msgid "Click on the magnifier to perform search"
|
msgid "Click on the magnifier to perform search"
|
||||||
|
@ -473,13 +477,13 @@ msgstr "Clicatz sus la lópia per lançar una recèrca"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:36
|
#: searx/templates/simple/macros.html:36
|
||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr ""
|
msgstr "Longor"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:37
|
#: searx/templates/simple/macros.html:37
|
||||||
#: searx/templates/simple/result_templates/images.html:18
|
#: searx/templates/simple/result_templates/images.html:18
|
||||||
#: searx/templates/simple/result_templates/paper.html:6
|
#: searx/templates/simple/result_templates/paper.html:6
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr ""
|
msgstr "Autor"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:45
|
#: searx/templates/simple/macros.html:45
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
|
@ -491,7 +495,7 @@ msgstr "proxifiat"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:64
|
#: searx/templates/simple/new_issue.html:64
|
||||||
msgid "Start submiting a new issue on GitHub"
|
msgid "Start submiting a new issue on GitHub"
|
||||||
msgstr ""
|
msgstr "Senhalar un problèma sus GitHub"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:66
|
#: searx/templates/simple/new_issue.html:66
|
||||||
msgid "Please check for existing bugs about this engine on GitHub"
|
msgid "Please check for existing bugs about this engine on GitHub"
|
||||||
|
@ -511,7 +515,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:65
|
#: searx/templates/simple/preferences.html:65
|
||||||
msgid "No HTTPS"
|
msgid "No HTTPS"
|
||||||
msgstr ""
|
msgstr "Cap de HTTPS"
|
||||||
|
|
||||||
#: searx/templates/simple/elements/engines_msg.html:18
|
#: searx/templates/simple/elements/engines_msg.html:18
|
||||||
#: searx/templates/simple/preferences.html:69
|
#: searx/templates/simple/preferences.html:69
|
||||||
|
@ -535,12 +539,12 @@ msgstr ""
|
||||||
#: searx/templates/simple/preferences.html:103
|
#: searx/templates/simple/preferences.html:103
|
||||||
#: searx/templates/simple/stats.html:70
|
#: searx/templates/simple/stats.html:70
|
||||||
msgid "P80"
|
msgid "P80"
|
||||||
msgstr ""
|
msgstr "P80"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:104
|
#: searx/templates/simple/preferences.html:104
|
||||||
#: searx/templates/simple/stats.html:76
|
#: searx/templates/simple/stats.html:76
|
||||||
msgid "P95"
|
msgid "P95"
|
||||||
msgstr ""
|
msgstr "P95"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:136
|
#: searx/templates/simple/preferences.html:136
|
||||||
msgid "Failed checker test(s): "
|
msgid "Failed checker test(s): "
|
||||||
|
@ -548,7 +552,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:138
|
#: searx/templates/simple/preferences.html:138
|
||||||
msgid "Errors:"
|
msgid "Errors:"
|
||||||
msgstr ""
|
msgstr "Errors :"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:162
|
#: searx/templates/simple/preferences.html:162
|
||||||
msgid "General"
|
msgid "General"
|
||||||
|
@ -576,7 +580,7 @@ msgstr "Motors de recèrca utilizat actualament"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:231
|
#: searx/templates/simple/preferences.html:231
|
||||||
msgid "Special Queries"
|
msgid "Special Queries"
|
||||||
msgstr ""
|
msgstr "Requèstas especialas"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:237
|
#: searx/templates/simple/preferences.html:237
|
||||||
msgid "Cookies"
|
msgid "Cookies"
|
||||||
|
@ -592,7 +596,7 @@ msgstr "Nombre de resultats"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:44
|
#: searx/templates/simple/results.html:44
|
||||||
msgid "Info"
|
msgid "Info"
|
||||||
msgstr ""
|
msgstr "Info"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:73
|
#: searx/templates/simple/results.html:73
|
||||||
msgid "Try searching for:"
|
msgid "Try searching for:"
|
||||||
|
@ -600,19 +604,19 @@ msgstr "Ensajatz de cercar :"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:105
|
#: searx/templates/simple/results.html:105
|
||||||
msgid "Back to top"
|
msgid "Back to top"
|
||||||
msgstr ""
|
msgstr "Tornar ennaut"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:123
|
#: searx/templates/simple/results.html:123
|
||||||
msgid "Previous page"
|
msgid "Previous page"
|
||||||
msgstr ""
|
msgstr "Pagina precedenta"
|
||||||
|
|
||||||
#: searx/templates/simple/results.html:140
|
#: searx/templates/simple/results.html:140
|
||||||
msgid "Next page"
|
msgid "Next page"
|
||||||
msgstr ""
|
msgstr "Pagina seguenta"
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:3
|
#: searx/templates/simple/search.html:3
|
||||||
msgid "Display the front page"
|
msgid "Display the front page"
|
||||||
msgstr ""
|
msgstr "Afichar la pagina principala"
|
||||||
|
|
||||||
#: 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
|
||||||
|
@ -622,12 +626,12 @@ msgstr "Cerca per..."
|
||||||
#: searx/templates/simple/search.html:10
|
#: searx/templates/simple/search.html:10
|
||||||
#: searx/templates/simple/simple_search.html:6
|
#: searx/templates/simple/simple_search.html:6
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
msgstr ""
|
msgstr "escafar"
|
||||||
|
|
||||||
#: searx/templates/simple/search.html:11
|
#: searx/templates/simple/search.html:11
|
||||||
#: searx/templates/simple/simple_search.html:7
|
#: searx/templates/simple/simple_search.html:7
|
||||||
msgid "search"
|
msgid "search"
|
||||||
msgstr ""
|
msgstr "recercar"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:21
|
#: searx/templates/simple/stats.html:21
|
||||||
msgid "There is currently no data available. "
|
msgid "There is currently no data available. "
|
||||||
|
@ -644,12 +648,12 @@ msgstr "Marcas"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:27
|
#: searx/templates/simple/stats.html:27
|
||||||
msgid "Result count"
|
msgid "Result count"
|
||||||
msgstr ""
|
msgstr "Resultats"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:25
|
#: searx/templates/simple/preferences/engines.html:25
|
||||||
#: searx/templates/simple/stats.html:28
|
#: searx/templates/simple/stats.html:28
|
||||||
msgid "Response time"
|
msgid "Response time"
|
||||||
msgstr ""
|
msgstr "Temps de responsa"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:29
|
#: searx/templates/simple/preferences/engines.html:29
|
||||||
#: searx/templates/simple/stats.html:29
|
#: searx/templates/simple/stats.html:29
|
||||||
|
@ -658,19 +662,19 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:59
|
#: searx/templates/simple/stats.html:59
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr ""
|
msgstr "Total"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:60
|
#: searx/templates/simple/stats.html:60
|
||||||
msgid "HTTP"
|
msgid "HTTP"
|
||||||
msgstr ""
|
msgstr "HTTP"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:61
|
#: searx/templates/simple/stats.html:61
|
||||||
msgid "Processing"
|
msgid "Processing"
|
||||||
msgstr ""
|
msgstr "Tractament"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:99
|
#: searx/templates/simple/stats.html:99
|
||||||
msgid "Warnings"
|
msgid "Warnings"
|
||||||
msgstr ""
|
msgstr "Avertiments"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:99
|
#: searx/templates/simple/stats.html:99
|
||||||
msgid "Errors and exceptions"
|
msgid "Errors and exceptions"
|
||||||
|
@ -678,35 +682,35 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:105
|
#: searx/templates/simple/stats.html:105
|
||||||
msgid "Exception"
|
msgid "Exception"
|
||||||
msgstr ""
|
msgstr "Excepcion"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:107
|
#: searx/templates/simple/stats.html:107
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr ""
|
msgstr "Messatge"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:109
|
#: searx/templates/simple/stats.html:109
|
||||||
msgid "Percentage"
|
msgid "Percentage"
|
||||||
msgstr ""
|
msgstr "Percentatge"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:111
|
#: searx/templates/simple/stats.html:111
|
||||||
msgid "Parameter"
|
msgid "Parameter"
|
||||||
msgstr ""
|
msgstr "Paramètre"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:119
|
#: searx/templates/simple/stats.html:119
|
||||||
msgid "Filename"
|
msgid "Filename"
|
||||||
msgstr ""
|
msgstr "Nom del fichièr"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:120
|
#: searx/templates/simple/stats.html:120
|
||||||
msgid "Function"
|
msgid "Function"
|
||||||
msgstr ""
|
msgstr "Foncion"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:121
|
#: searx/templates/simple/stats.html:121
|
||||||
msgid "Code"
|
msgid "Code"
|
||||||
msgstr ""
|
msgstr "Còdi"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:128
|
#: searx/templates/simple/stats.html:128
|
||||||
msgid "Checker"
|
msgid "Checker"
|
||||||
msgstr ""
|
msgstr "Verificador"
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:131
|
#: searx/templates/simple/stats.html:131
|
||||||
msgid "Failed test"
|
msgid "Failed test"
|
||||||
|
@ -714,7 +718,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/stats.html:132
|
#: searx/templates/simple/stats.html:132
|
||||||
msgid "Comment(s)"
|
msgid "Comment(s)"
|
||||||
msgstr ""
|
msgstr "Comentari(s)"
|
||||||
|
|
||||||
#: searx/templates/simple/elements/apis.html:3
|
#: searx/templates/simple/elements/apis.html:3
|
||||||
msgid "Download results"
|
msgid "Download results"
|
||||||
|
@ -822,7 +826,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:6
|
#: searx/templates/simple/messages/no_results.html:6
|
||||||
msgid "Refresh the page."
|
msgid "Refresh the page."
|
||||||
msgstr ""
|
msgstr "Actualizar la pagina."
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:7
|
#: searx/templates/simple/messages/no_results.html:7
|
||||||
msgid "Search for another query or select another category (above)."
|
msgid "Search for another query or select another category (above)."
|
||||||
|
@ -945,7 +949,7 @@ msgstr "Compatible amb las lengas seleccionadas"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:23
|
#: searx/templates/simple/preferences/engines.html:23
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr "Pes"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:27
|
#: searx/templates/simple/preferences/engines.html:27
|
||||||
msgid "Max time"
|
msgid "Max time"
|
||||||
|
@ -969,7 +973,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/footer.html:6
|
#: searx/templates/simple/preferences/footer.html:6
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Enregistrar"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/footer.html:9
|
#: searx/templates/simple/preferences/footer.html:9
|
||||||
msgid "Reset defaults"
|
msgid "Reset defaults"
|
||||||
|
@ -977,11 +981,11 @@ msgstr "Reïnicializar per defaut"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/footer.html:13
|
#: searx/templates/simple/preferences/footer.html:13
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr ""
|
msgstr "Tornar"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:2
|
#: searx/templates/simple/preferences/hotkeys.html:2
|
||||||
msgid "Hotkeys"
|
msgid "Hotkeys"
|
||||||
msgstr ""
|
msgstr "Acorchi clavièr"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:13
|
#: searx/templates/simple/preferences/hotkeys.html:13
|
||||||
msgid "Vim-like"
|
msgid "Vim-like"
|
||||||
|
@ -1019,7 +1023,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/method.html:2
|
#: searx/templates/simple/preferences/method.html:2
|
||||||
msgid "HTTP Method"
|
msgid "HTTP Method"
|
||||||
msgstr ""
|
msgstr "Metòde HTTP"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/method.html:14
|
#: searx/templates/simple/preferences/method.html:14
|
||||||
msgid "Change how forms are submitted"
|
msgid "Change how forms are submitted"
|
||||||
|
@ -1059,7 +1063,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:2
|
#: searx/templates/simple/preferences/theme.html:2
|
||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
msgstr ""
|
msgstr "Tèma"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:14
|
#: searx/templates/simple/preferences/theme.html:14
|
||||||
msgid "Change SearXNG layout"
|
msgid "Change SearXNG layout"
|
||||||
|
@ -1067,7 +1071,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:19
|
#: searx/templates/simple/preferences/theme.html:19
|
||||||
msgid "Theme style"
|
msgid "Theme style"
|
||||||
msgstr ""
|
msgstr "Estil del tèma"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:31
|
#: searx/templates/simple/preferences/theme.html:31
|
||||||
msgid "Choose auto to follow your browser settings"
|
msgid "Choose auto to follow your browser settings"
|
||||||
|
@ -1108,11 +1112,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:19
|
#: searx/templates/simple/result_templates/images.html:19
|
||||||
msgid "Format"
|
msgid "Format"
|
||||||
msgstr ""
|
msgstr "Format"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:21
|
#: searx/templates/simple/result_templates/images.html:21
|
||||||
msgid "Engine"
|
msgid "Engine"
|
||||||
msgstr ""
|
msgstr "Motor"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:22
|
#: searx/templates/simple/result_templates/images.html:22
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
|
@ -1120,7 +1124,7 @@ msgstr "Veire font"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/map.html:12
|
#: searx/templates/simple/result_templates/map.html:12
|
||||||
msgid "address"
|
msgid "address"
|
||||||
msgstr ""
|
msgstr "adreça"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/map.html:43
|
#: searx/templates/simple/result_templates/map.html:43
|
||||||
msgid "show map"
|
msgid "show map"
|
||||||
|
@ -1132,47 +1136,47 @@ msgstr "escondre la mapa"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:5
|
#: searx/templates/simple/result_templates/paper.html:5
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr ""
|
msgstr "Data de publicacion"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:9
|
#: searx/templates/simple/result_templates/paper.html:9
|
||||||
msgid "Journal"
|
msgid "Journal"
|
||||||
msgstr ""
|
msgstr "Jornal"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:22
|
#: searx/templates/simple/result_templates/paper.html:22
|
||||||
msgid "Editor"
|
msgid "Editor"
|
||||||
msgstr ""
|
msgstr "Editor"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:23
|
#: searx/templates/simple/result_templates/paper.html:23
|
||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr ""
|
msgstr "Editor"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:24
|
#: searx/templates/simple/result_templates/paper.html:24
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr "Tipe"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:25
|
#: searx/templates/simple/result_templates/paper.html:25
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr ""
|
msgstr "Etiquetas"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:26
|
#: searx/templates/simple/result_templates/paper.html:26
|
||||||
msgid "DOI"
|
msgid "DOI"
|
||||||
msgstr ""
|
msgstr "DOI"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:27
|
#: searx/templates/simple/result_templates/paper.html:27
|
||||||
msgid "ISSN"
|
msgid "ISSN"
|
||||||
msgstr ""
|
msgstr "ISSN"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:28
|
#: searx/templates/simple/result_templates/paper.html:28
|
||||||
msgid "ISBN"
|
msgid "ISBN"
|
||||||
msgstr ""
|
msgstr "ISBN"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:33
|
#: searx/templates/simple/result_templates/paper.html:33
|
||||||
msgid "PDF"
|
msgid "PDF"
|
||||||
msgstr ""
|
msgstr "PDF"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:34
|
#: searx/templates/simple/result_templates/paper.html:34
|
||||||
msgid "HTML"
|
msgid "HTML"
|
||||||
msgstr ""
|
msgstr "HTML"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:6
|
#: searx/templates/simple/result_templates/torrent.html:6
|
||||||
msgid "magnet link"
|
msgid "magnet link"
|
||||||
|
@ -1630,4 +1634,3 @@ msgstr "escondre la vidèo"
|
||||||
#~ "avèm pas trobat cap de resultat. "
|
#~ "avèm pas trobat cap de resultat. "
|
||||||
#~ "Mercés d'utilizar une autre mot clau "
|
#~ "Mercés d'utilizar une autre mot clau "
|
||||||
#~ "o de cercar dins autras categorias."
|
#~ "o de cercar dins autras categorias."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -17,18 +17,19 @@
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-23 16:53+0000\n"
|
"PO-Revision-Date: 2023-10-26 15:37+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Swedish <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/sv/>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
"Language-Team: Swedish "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/sv/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\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=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -279,19 +280,19 @@ msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "radio"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bithastighet"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "röster"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "klick"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -844,7 +845,7 @@ msgstr "Ursäkta!"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:4
|
#: searx/templates/simple/messages/no_results.html:4
|
||||||
msgid "No results were found. You can try to:"
|
msgid "No results were found. You can try to:"
|
||||||
msgstr ""
|
msgstr "Inga resultat hittades. Du kan prova att:"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:6
|
#: searx/templates/simple/messages/no_results.html:6
|
||||||
msgid "Refresh the page."
|
msgid "Refresh the page."
|
||||||
|
@ -852,7 +853,7 @@ msgstr "Uppdatera sidan."
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:7
|
#: searx/templates/simple/messages/no_results.html:7
|
||||||
msgid "Search for another query or select another category (above)."
|
msgid "Search for another query or select another category (above)."
|
||||||
msgstr ""
|
msgstr "Sök efter en annan query eller välj en annan kategori (ovanför)."
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:8
|
#: searx/templates/simple/messages/no_results.html:8
|
||||||
msgid "Change the search engine used in the preferences:"
|
msgid "Change the search engine used in the preferences:"
|
||||||
|
@ -860,7 +861,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:9
|
#: searx/templates/simple/messages/no_results.html:9
|
||||||
msgid "Switch to another instance:"
|
msgid "Switch to another instance:"
|
||||||
msgstr ""
|
msgstr "Byt till en annan instans:"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/answerers.html:4
|
#: searx/templates/simple/preferences/answerers.html:4
|
||||||
#: searx/templates/simple/preferences/engines.html:17
|
#: searx/templates/simple/preferences/engines.html:17
|
||||||
|
@ -1017,13 +1018,15 @@ msgstr "Snabbtangenter"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:13
|
#: searx/templates/simple/preferences/hotkeys.html:13
|
||||||
msgid "Vim-like"
|
msgid "Vim-like"
|
||||||
msgstr ""
|
msgstr "Vim-liknande"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:18
|
#: searx/templates/simple/preferences/hotkeys.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
||||||
"key on main or result page to get help."
|
"key on main or result page to get help."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Navigera sök resultaten med snabbkommandon (behöver JavaScript). Tryck \"h\" "
|
||||||
|
"tangenten på huvud eller resultat sidan för att få hjälp."
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/image_proxy.html:2
|
#: searx/templates/simple/preferences/image_proxy.html:2
|
||||||
msgid "Image proxy"
|
msgid "Image proxy"
|
||||||
|
@ -1678,4 +1681,3 @@ msgstr "göm video"
|
||||||
#~ "vi hittade inte några resultat. Använd"
|
#~ "vi hittade inte några resultat. Använd"
|
||||||
#~ " en annan förfråga eller sök i "
|
#~ " en annan förfråga eller sök i "
|
||||||
#~ "flera kategorier."
|
#~ "flera kategorier."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -19,7 +19,7 @@ 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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-10-10 14:53+0000\n"
|
"PO-Revision-Date: 2023-10-17 13:53+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
"Language-Team: Turkish <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: Turkish <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/tr/>\n"
|
"searxng/tr/>\n"
|
||||||
|
@ -283,7 +283,7 @@ msgstr "radyo"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "bit hızı"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
|
|
Binary file not shown.
|
@ -10,23 +10,25 @@
|
||||||
# BalkanMadman <zurabid2016@gmail.com>, 2023.
|
# BalkanMadman <zurabid2016@gmail.com>, 2023.
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
# maxch <maxletters@tutanota.com>, 2023.
|
# maxch <maxletters@tutanota.com>, 2023.
|
||||||
|
# SomeTr <SomeTr@users.noreply.translate.codeberg.org>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-10-03 06:53+0000\n"
|
"PO-Revision-Date: 2023-10-25 21:57+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: SomeTr <SomeTr@users.noreply.translate.codeberg.org>\n"
|
||||||
|
"Language-Team: Ukrainian <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/uk/>\n"
|
||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
"Language-Team: Ukrainian "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/uk/>\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 !="
|
|
||||||
" 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n "
|
|
||||||
"% 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9)"
|
|
||||||
" || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\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=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 "
|
||||||
|
"? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > "
|
||||||
|
"14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % "
|
||||||
|
"100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -107,7 +109,7 @@ msgstr "словники"
|
||||||
#. CATEGORY_GROUPS['LYRICS']
|
#. CATEGORY_GROUPS['LYRICS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "lyrics"
|
msgid "lyrics"
|
||||||
msgstr "текст пісні"
|
msgstr "тексти пісень"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['PACKAGES']
|
#. CATEGORY_GROUPS['PACKAGES']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -117,7 +119,7 @@ msgstr "пакети"
|
||||||
#. CATEGORY_GROUPS['Q_A']
|
#. CATEGORY_GROUPS['Q_A']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr "q&a"
|
msgstr "запитання і відповіді"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['REPOS']
|
#. CATEGORY_GROUPS['REPOS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -137,7 +139,7 @@ msgstr "веб"
|
||||||
#. CATEGORY_GROUPS['SCIENTIFIC PUBLICATIONS']
|
#. CATEGORY_GROUPS['SCIENTIFIC PUBLICATIONS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "scientific publications"
|
msgid "scientific publications"
|
||||||
msgstr "Наукова публікація"
|
msgstr "наукова публікація"
|
||||||
|
|
||||||
#. STYLE_NAMES['AUTO']
|
#. STYLE_NAMES['AUTO']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -189,7 +191,7 @@ msgstr "помилка парсингу"
|
||||||
|
|
||||||
#: searx/webutils.py:36
|
#: searx/webutils.py:36
|
||||||
msgid "HTTP protocol error"
|
msgid "HTTP protocol error"
|
||||||
msgstr "помилка HTTP протоколу"
|
msgstr "помилка протоколу HTTP"
|
||||||
|
|
||||||
#: searx/webutils.py:37
|
#: searx/webutils.py:37
|
||||||
msgid "network error"
|
msgid "network error"
|
||||||
|
@ -197,7 +199,7 @@ msgstr "помилка мережі"
|
||||||
|
|
||||||
#: searx/webutils.py:38
|
#: searx/webutils.py:38
|
||||||
msgid "SSL error: certificate validation has failed"
|
msgid "SSL error: certificate validation has failed"
|
||||||
msgstr "Помилка SSL: не вдалося перевірити сертифікат"
|
msgstr "помилка SSL: не вдалося перевірити сертифікат"
|
||||||
|
|
||||||
#: searx/webutils.py:40
|
#: searx/webutils.py:40
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
|
@ -209,7 +211,7 @@ msgstr "помилка HTTP"
|
||||||
|
|
||||||
#: searx/webutils.py:48
|
#: searx/webutils.py:48
|
||||||
msgid "HTTP connection error"
|
msgid "HTTP connection error"
|
||||||
msgstr "помилка HTTP з'єднання"
|
msgstr "помилка з'єднання HTTP"
|
||||||
|
|
||||||
#: searx/webutils.py:54
|
#: searx/webutils.py:54
|
||||||
msgid "proxy error"
|
msgid "proxy error"
|
||||||
|
@ -229,7 +231,7 @@ msgstr "доступ заборонено"
|
||||||
|
|
||||||
#: searx/webutils.py:58
|
#: searx/webutils.py:58
|
||||||
msgid "server API error"
|
msgid "server API error"
|
||||||
msgstr "Помилка API сервера"
|
msgstr "помилка API сервера"
|
||||||
|
|
||||||
#: searx/webutils.py:77
|
#: searx/webutils.py:77
|
||||||
msgid "Suspended"
|
msgid "Suspended"
|
||||||
|
@ -269,7 +271,7 @@ msgstr "{title} (ЗАСТАРІЛО)"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:103
|
#: searx/engines/pdbe.py:103
|
||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Цей запис був змінений"
|
msgstr "Цей запис було замінено на"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:282
|
#: searx/engines/qwant.py:282
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
|
@ -277,19 +279,19 @@ msgstr "Канал"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "радіо"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "бітрейт"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "голоси"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "кліки"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -309,9 +311,9 @@ msgid ""
|
||||||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||||
" WebP."
|
" WebP."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Не вдалось зчитати зображення за вказаним URL. Можливо, тому що формат "
|
"Не вдалося зчитати зображення за вказаним URL. Можливо, тому що формат цього "
|
||||||
"даного зображення не підтримується. TinEye підтримує зображення у "
|
"зображення не підтримується. TinEye підтримує зображення у форматах JPEG, "
|
||||||
"форматах JPEG, PNG, GIF, BMP, TIFF та WebP."
|
"PNG, GIF, BMP, TIFF та WebP."
|
||||||
|
|
||||||
#: searx/engines/tineye.py:46
|
#: searx/engines/tineye.py:46
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -323,7 +325,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/engines/tineye.py:52
|
#: searx/engines/tineye.py:52
|
||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Зображення не можливо завантажити."
|
msgstr "Зображення неможливо завантажити."
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Morning"
|
msgid "Morning"
|
||||||
|
@ -406,14 +408,14 @@ msgid ""
|
||||||
"Could not download the list of Tor exit-nodes from: "
|
"Could not download the list of Tor exit-nodes from: "
|
||||||
"https://check.torproject.org/exit-addresses"
|
"https://check.torproject.org/exit-addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Не вдалось завантажити список вихідних вузлів Tor з: "
|
"Не вдалося завантажити список вихідних вузлів Tor з: https://check.torproject"
|
||||||
"https://check.torproject.org/exit-addresses"
|
".org/exit-addresses"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:78
|
#: searx/plugins/tor_check.py:78
|
||||||
msgid ""
|
msgid ""
|
||||||
"You are using Tor and it looks like you have this external IP address: "
|
"You are using Tor and it looks like you have this external IP address: "
|
||||||
"{ip_address}"
|
"{ip_address}"
|
||||||
msgstr "Ви використовуєте Tor і, здається, у вас наступна IP адреса: {ip_address}"
|
msgstr "Ви використовуєте Tor і, здається, Ваша IP-адреса така: {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:86
|
#: searx/plugins/tor_check.py:86
|
||||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||||
|
@ -475,7 +477,7 @@ msgstr "Статистика пошукової системи"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:72
|
#: searx/templates/simple/base.html:72
|
||||||
msgid "Public instances"
|
msgid "Public instances"
|
||||||
msgstr "Публічні інстанції"
|
msgstr "Публічні інстанси"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:75
|
#: searx/templates/simple/base.html:75
|
||||||
msgid "Privacy policy"
|
msgid "Privacy policy"
|
||||||
|
@ -483,7 +485,7 @@ msgstr "Політика приватності"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:78
|
#: searx/templates/simple/base.html:78
|
||||||
msgid "Contact instance maintainer"
|
msgid "Contact instance maintainer"
|
||||||
msgstr "Зв'язатися з власником інстанції"
|
msgstr "Зв'язатися з власником інстансу"
|
||||||
|
|
||||||
#: searx/templates/simple/categories.html:26
|
#: searx/templates/simple/categories.html:26
|
||||||
msgid "Click on the magnifier to perform search"
|
msgid "Click on the magnifier to perform search"
|
||||||
|
@ -501,7 +503,7 @@ msgstr "Автор"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:45
|
#: searx/templates/simple/macros.html:45
|
||||||
msgid "cached"
|
msgid "cached"
|
||||||
msgstr "архівовано"
|
msgstr "кеш"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:45
|
#: searx/templates/simple/macros.html:45
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
|
@ -523,7 +525,7 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:71
|
#: searx/templates/simple/new_issue.html:71
|
||||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||||
msgstr "Якщо це публічна інстанція, укажіть URL-адресу у звіті про помилку"
|
msgstr "Якщо це публічний інстанс, укажіть URL-адресу у звіті про помилку"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:72
|
#: searx/templates/simple/new_issue.html:72
|
||||||
msgid "Submit a new issue on Github including the above information"
|
msgid "Submit a new issue on Github including the above information"
|
||||||
|
@ -586,7 +588,7 @@ msgstr "Інтерфейс користувача"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:208
|
#: searx/templates/simple/preferences.html:208
|
||||||
msgid "Privacy"
|
msgid "Privacy"
|
||||||
msgstr "Конфеденційність"
|
msgstr "Конфіденційність"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:221
|
#: searx/templates/simple/preferences.html:221
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
|
@ -752,7 +754,7 @@ msgstr "Помилка!"
|
||||||
|
|
||||||
#: searx/templates/simple/elements/engines_msg.html:13
|
#: searx/templates/simple/elements/engines_msg.html:13
|
||||||
msgid "Engines cannot retrieve results"
|
msgid "Engines cannot retrieve results"
|
||||||
msgstr "Пошукові системи неможуть отримати результати"
|
msgstr "Пошукові системи не можуть отримати результати"
|
||||||
|
|
||||||
#: searx/templates/simple/elements/search_url.html:3
|
#: searx/templates/simple/elements/search_url.html:3
|
||||||
msgid "Search URL"
|
msgid "Search URL"
|
||||||
|
@ -784,12 +786,12 @@ msgstr "Автовизначення"
|
||||||
#: searx/templates/simple/preferences/engines.html:21
|
#: searx/templates/simple/preferences/engines.html:21
|
||||||
#: searx/templates/simple/preferences/safesearch.html:2
|
#: searx/templates/simple/preferences/safesearch.html:2
|
||||||
msgid "SafeSearch"
|
msgid "SafeSearch"
|
||||||
msgstr "БезпечнийПошук"
|
msgstr "Безпечний пошук"
|
||||||
|
|
||||||
#: searx/templates/simple/filters/safesearch.html:2
|
#: searx/templates/simple/filters/safesearch.html:2
|
||||||
#: searx/templates/simple/preferences/safesearch.html:7
|
#: searx/templates/simple/preferences/safesearch.html:7
|
||||||
msgid "Strict"
|
msgid "Strict"
|
||||||
msgstr "Жорский"
|
msgstr "Жорсткий"
|
||||||
|
|
||||||
#: searx/templates/simple/filters/safesearch.html:3
|
#: searx/templates/simple/filters/safesearch.html:3
|
||||||
#: searx/templates/simple/preferences/safesearch.html:11
|
#: searx/templates/simple/preferences/safesearch.html:11
|
||||||
|
@ -844,19 +846,19 @@ msgstr "Результатів не знайдено. Ви можете спро
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:6
|
#: searx/templates/simple/messages/no_results.html:6
|
||||||
msgid "Refresh the page."
|
msgid "Refresh the page."
|
||||||
msgstr ""
|
msgstr "Оновити сторінку."
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:7
|
#: searx/templates/simple/messages/no_results.html:7
|
||||||
msgid "Search for another query or select another category (above)."
|
msgid "Search for another query or select another category (above)."
|
||||||
msgstr ""
|
msgstr "Шукати за іншим запитом або вибрати іншу категорію (вгорі)."
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:8
|
#: searx/templates/simple/messages/no_results.html:8
|
||||||
msgid "Change the search engine used in the preferences:"
|
msgid "Change the search engine used in the preferences:"
|
||||||
msgstr ""
|
msgstr "Змінити пошукову систему, вказану в налаштуваннях:"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:9
|
#: searx/templates/simple/messages/no_results.html:9
|
||||||
msgid "Switch to another instance:"
|
msgid "Switch to another instance:"
|
||||||
msgstr ""
|
msgstr "Перемкнути інстанс SearXNG:"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/answerers.html:4
|
#: searx/templates/simple/preferences/answerers.html:4
|
||||||
#: searx/templates/simple/preferences/engines.html:17
|
#: searx/templates/simple/preferences/engines.html:17
|
||||||
|
@ -893,7 +895,7 @@ msgstr "Автозаповнення"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/autocomplete.html:15
|
#: searx/templates/simple/preferences/autocomplete.html:15
|
||||||
msgid "Find stuff as you type"
|
msgid "Find stuff as you type"
|
||||||
msgstr "Шукати підчас набору"
|
msgstr "Шукати під час набору"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/center_alignment.html:2
|
#: searx/templates/simple/preferences/center_alignment.html:2
|
||||||
msgid "Center Alignment"
|
msgid "Center Alignment"
|
||||||
|
@ -1009,17 +1011,20 @@ msgstr "Назад"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:2
|
#: searx/templates/simple/preferences/hotkeys.html:2
|
||||||
msgid "Hotkeys"
|
msgid "Hotkeys"
|
||||||
msgstr ""
|
msgstr "Гарячі клавіші"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:13
|
#: searx/templates/simple/preferences/hotkeys.html:13
|
||||||
msgid "Vim-like"
|
msgid "Vim-like"
|
||||||
msgstr ""
|
msgstr "Вигляд як Vim"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:18
|
#: searx/templates/simple/preferences/hotkeys.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
||||||
"key on main or result page to get help."
|
"key on main or result page to get help."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Переміщуйтеся в результатах пошуку за допомогою гарячих клавіш (потрібен "
|
||||||
|
"JavaScript). Натисніть клавішу «h» на головній сторінці або сторінці "
|
||||||
|
"результатів, щоб прочитати довідку."
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/image_proxy.html:2
|
#: searx/templates/simple/preferences/image_proxy.html:2
|
||||||
msgid "Image proxy"
|
msgid "Image proxy"
|
||||||
|
@ -1073,7 +1078,7 @@ msgstr "Результати в нових вкладках"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/results_on_new_tab.html:14
|
#: searx/templates/simple/preferences/results_on_new_tab.html:14
|
||||||
msgid "Open result links on new browser tabs"
|
msgid "Open result links on new browser tabs"
|
||||||
msgstr "Відкривати посилання результатів в нових вкладках"
|
msgstr "Відкривати посилання результатів у нових вкладках"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/safesearch.html:20
|
#: searx/templates/simple/preferences/safesearch.html:20
|
||||||
msgid "Filter content"
|
msgid "Filter content"
|
||||||
|
@ -1081,13 +1086,15 @@ msgstr "Фільтр контенту"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/search_on_category_select.html:2
|
#: searx/templates/simple/preferences/search_on_category_select.html:2
|
||||||
msgid "Search on category select"
|
msgid "Search on category select"
|
||||||
msgstr "Пошук по обраній категорії"
|
msgstr "Пошук при виборі категорії"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/search_on_category_select.html:14
|
#: searx/templates/simple/preferences/search_on_category_select.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"Perform search immediately if a category selected. Disable to select "
|
"Perform search immediately if a category selected. Disable to select "
|
||||||
"multiple categories"
|
"multiple categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Шукати негайно при виборі категорії. Вимкніть, якщо хочете вибрати кілька "
|
||||||
|
"категорій"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:2
|
#: searx/templates/simple/preferences/theme.html:2
|
||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
|
@ -1103,7 +1110,7 @@ msgstr "Стиль теми"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:31
|
#: searx/templates/simple/preferences/theme.html:31
|
||||||
msgid "Choose auto to follow your browser settings"
|
msgid "Choose auto to follow your browser settings"
|
||||||
msgstr "Виберіть \"автоматично\" для використання налаштувань вашого браузера"
|
msgstr "Виберіть «автоматично» для використання налаштувань вашого браузера"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/tokens.html:2
|
#: searx/templates/simple/preferences/tokens.html:2
|
||||||
msgid "Engine tokens"
|
msgid "Engine tokens"
|
||||||
|
@ -1123,7 +1130,7 @@ msgstr "Змінити мову сайту"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/code.html:13
|
#: searx/templates/simple/result_templates/code.html:13
|
||||||
msgid "repo"
|
msgid "repo"
|
||||||
msgstr "репозиторії"
|
msgstr "репозиторій"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/default.html:6
|
#: searx/templates/simple/result_templates/default.html:6
|
||||||
msgid "show media"
|
msgid "show media"
|
||||||
|
@ -1224,7 +1231,7 @@ msgstr "Лічер"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:11
|
#: searx/templates/simple/result_templates/torrent.html:11
|
||||||
msgid "Filesize"
|
msgid "Filesize"
|
||||||
msgstr "Розмір файла"
|
msgstr "Розмір файлу"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:12
|
#: searx/templates/simple/result_templates/torrent.html:12
|
||||||
msgid "Bytes"
|
msgid "Bytes"
|
||||||
|
@ -1248,7 +1255,7 @@ msgstr "ТіБ"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:20
|
#: searx/templates/simple/result_templates/torrent.html:20
|
||||||
msgid "Number of Files"
|
msgid "Number of Files"
|
||||||
msgstr "Кількість Файлів"
|
msgstr "Кількість файлів"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/videos.html:6
|
#: searx/templates/simple/result_templates/videos.html:6
|
||||||
msgid "show video"
|
msgid "show video"
|
||||||
|
@ -1654,4 +1661,3 @@ msgstr "приховати відео"
|
||||||
#~ "ми не знайшли жодних результатів. Будь"
|
#~ "ми не знайшли жодних результатів. Будь"
|
||||||
#~ " ласка, використайте інший запит або "
|
#~ " ласка, використайте інший запит або "
|
||||||
#~ "виконайте пошук в декількох категоріях."
|
#~ "виконайте пошук в декількох категоріях."
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -22,20 +22,22 @@
|
||||||
# BBTranslate <357835338@qq.com>, 2023.
|
# BBTranslate <357835338@qq.com>, 2023.
|
||||||
# JonesBBQ <colson.xu@gmail.com>, 2023.
|
# JonesBBQ <colson.xu@gmail.com>, 2023.
|
||||||
# BernieHuang2008 <berniehuang2008@163.com>, 2023.
|
# BernieHuang2008 <berniehuang2008@163.com>, 2023.
|
||||||
|
# clsty <celestial.y@outlook.com>, 2023.
|
||||||
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: 2023-10-05 09:01+0000\n"
|
"POT-Creation-Date: 2023-10-05 09:01+0000\n"
|
||||||
"PO-Revision-Date: 2023-09-29 07:07+0000\n"
|
"PO-Revision-Date: 2023-10-24 11:13+0000\n"
|
||||||
"Last-Translator: BernieHuang2008 <berniehuang2008@163.com>\n"
|
"Last-Translator: clsty <celestial.y@outlook.com>\n"
|
||||||
|
"Language-Team: Chinese (Simplified) <https://translate.codeberg.org/projects/"
|
||||||
|
"searxng/searxng/zh_Hans/>\n"
|
||||||
"Language: zh_Hans_CN\n"
|
"Language: zh_Hans_CN\n"
|
||||||
"Language-Team: Chinese (Simplified) "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/zh_Hans/>\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\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=1; plural=0;\n"
|
||||||
|
"X-Generator: Weblate 5.1\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -56,7 +58,7 @@ msgstr "文件"
|
||||||
#. CATEGORY_NAMES['GENERAL']
|
#. CATEGORY_NAMES['GENERAL']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "常规"
|
msgstr "综合"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['MUSIC']
|
#. CATEGORY_NAMES['MUSIC']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -126,7 +128,7 @@ msgstr "程序包"
|
||||||
#. CATEGORY_GROUPS['Q_A']
|
#. CATEGORY_GROUPS['Q_A']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr "问&答"
|
msgstr "问与答"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['REPOS']
|
#. CATEGORY_GROUPS['REPOS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -206,7 +208,7 @@ msgstr "网络错误"
|
||||||
|
|
||||||
#: searx/webutils.py:38
|
#: searx/webutils.py:38
|
||||||
msgid "SSL error: certificate validation has failed"
|
msgid "SSL error: certificate validation has failed"
|
||||||
msgstr "SSL错误:证书校验失败"
|
msgstr "SSL 错误:证书校验失败"
|
||||||
|
|
||||||
#: searx/webutils.py:40
|
#: searx/webutils.py:40
|
||||||
msgid "unexpected crash"
|
msgid "unexpected crash"
|
||||||
|
@ -274,7 +276,7 @@ msgstr "获取路线"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:96
|
#: searx/engines/pdbe.py:96
|
||||||
msgid "{title} (OBSOLETE)"
|
msgid "{title} (OBSOLETE)"
|
||||||
msgstr "{title} (已过时)"
|
msgstr "{title} (已过时)"
|
||||||
|
|
||||||
#: searx/engines/pdbe.py:103
|
#: searx/engines/pdbe.py:103
|
||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
|
@ -286,19 +288,19 @@ msgstr "频道"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:104
|
#: searx/engines/radio_browser.py:104
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr "电台"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "比特率"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:107
|
#: searx/engines/radio_browser.py:107
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr "投票数"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:108
|
#: searx/engines/radio_browser.py:108
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr "点击数"
|
||||||
|
|
||||||
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
|
@ -308,20 +310,24 @@ msgstr "语言"
|
||||||
msgid ""
|
msgid ""
|
||||||
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
||||||
"{lastCitationVelocityYear}"
|
"{lastCitationVelocityYear}"
|
||||||
msgstr "{numCitations}次引用,从{firstCitationVelocityYear}年到{lastCitationVelocityYear}年"
|
msgstr ""
|
||||||
|
"{numCitations} 次引用,从 {firstCitationVelocityYear} 年到 "
|
||||||
|
"{lastCitationVelocityYear} 年"
|
||||||
|
|
||||||
#: searx/engines/tineye.py:40
|
#: searx/engines/tineye.py:40
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not read that image url. This may be due to an unsupported file "
|
"Could not read that image url. This may be due to an unsupported file "
|
||||||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||||
" WebP."
|
" WebP."
|
||||||
msgstr "无法读取该图片网址。这可能是由于文件格式不受支持。 TinEye 仅支持 JPEG、PNG、GIF、BMP、TIFF 或 WebP 格式的图像。"
|
msgstr "无法读取该图片网址。这可能是由于文件格式不受支持。TinEye 仅支持 "
|
||||||
|
"JPEG、PNG、GIF、BMP、TIFF 或 WebP 格式的图像。"
|
||||||
|
|
||||||
#: searx/engines/tineye.py:46
|
#: searx/engines/tineye.py:46
|
||||||
msgid ""
|
msgid ""
|
||||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||||
" visual detail to successfully identify matches."
|
" visual detail to successfully identify matches."
|
||||||
msgstr "图像过于简单,无法找到匹配项。 TinEye 需要基本级别的视觉细节才能成功识别匹配项。"
|
msgstr "图像过于简单,无法找到匹配项。TinEye "
|
||||||
|
"需要基本级别的视觉细节才能成功识别匹配项。"
|
||||||
|
|
||||||
#: searx/engines/tineye.py:52
|
#: searx/engines/tineye.py:52
|
||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
|
@ -329,7 +335,7 @@ msgstr "无法下载该图像。"
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Morning"
|
msgid "Morning"
|
||||||
msgstr "早上"
|
msgstr "上午"
|
||||||
|
|
||||||
#: searx/engines/wttr.py:101
|
#: searx/engines/wttr.py:101
|
||||||
msgid "Noon"
|
msgid "Noon"
|
||||||
|
@ -353,7 +359,7 @@ msgstr "文件质量"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:24
|
#: searx/plugins/hash_plugin.py:24
|
||||||
msgid "Converts strings to different hash digests."
|
msgid "Converts strings to different hash digests."
|
||||||
msgstr "将字符串转换为不同的散列摘要值。"
|
msgstr "将字符串转换为不同的散列(hash)摘要值。"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:52
|
#: searx/plugins/hash_plugin.py:52
|
||||||
msgid "hash digest"
|
msgid "hash digest"
|
||||||
|
@ -395,27 +401,30 @@ msgstr "Tor 网络检测插件"
|
||||||
msgid ""
|
msgid ""
|
||||||
"This plugin checks if the address of the request is a Tor exit-node, and "
|
"This plugin checks if the address of the request is a Tor exit-node, and "
|
||||||
"informs the user if it is; like check.torproject.org, but from SearXNG."
|
"informs the user if it is; like check.torproject.org, but from SearXNG."
|
||||||
msgstr "此插件检查地址是否为 Tor 出口节点并给出结果,是由 SearXNG 提供的类似 check.torproject.org 的服务。"
|
msgstr ""
|
||||||
|
"此插件检查请求地址是否为 Tor 出口节点,若是则告知用户。这是由 SearXNG "
|
||||||
|
"提供的类似 check.torproject.org 的服务。"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:62
|
#: searx/plugins/tor_check.py:62
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not download the list of Tor exit-nodes from: "
|
"Could not download the list of Tor exit-nodes from: "
|
||||||
"https://check.torproject.org/exit-addresses"
|
"https://check.torproject.org/exit-addresses"
|
||||||
msgstr "未能从如下地址下载 Tor 出口节点的名单: https://check.torproject.org/exit-addresses"
|
msgstr "未能从此地址下载 Tor 出口节点的列表: https://check.torproject.org/exit-"
|
||||||
|
"addresses"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:78
|
#: searx/plugins/tor_check.py:78
|
||||||
msgid ""
|
msgid ""
|
||||||
"You are using Tor and it looks like you have this external IP address: "
|
"You are using Tor and it looks like you have this external IP address: "
|
||||||
"{ip_address}"
|
"{ip_address}"
|
||||||
msgstr "您似乎在使用 Tor,您的外部 IP 地址为: {ip_address}"
|
msgstr "您似乎在使用 Tor,您的外部 IP 地址为: {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:86
|
#: searx/plugins/tor_check.py:86
|
||||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||||
msgstr "您并未使用 Tor,您的外部 IP 地址为: {ip_address}"
|
msgstr "您并未使用 Tor,您的外部 IP 地址为: {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:29
|
#: searx/plugins/tracker_url_remover.py:29
|
||||||
msgid "Tracker URL remover"
|
msgid "Tracker URL remover"
|
||||||
msgstr "移除跟踪链接"
|
msgstr "跟踪链接移除器"
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:30
|
#: searx/plugins/tracker_url_remover.py:30
|
||||||
msgid "Remove trackers arguments from the returned URL"
|
msgid "Remove trackers arguments from the returned URL"
|
||||||
|
@ -515,7 +524,7 @@ msgstr "我确定提交的 Bug 没有与现存 Issue 重复"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:71
|
#: searx/templates/simple/new_issue.html:71
|
||||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||||
msgstr "如果这是一个公共问题,请在 Bug 报告页面提交 URL"
|
msgstr "如果这是一个公共实例,请在 Bug 报告中指明其网址"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:72
|
#: searx/templates/simple/new_issue.html:72
|
||||||
msgid "Submit a new issue on Github including the above information"
|
msgid "Submit a new issue on Github including the above information"
|
||||||
|
@ -834,11 +843,11 @@ msgstr "未找到结果,你可以尝试:"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:6
|
#: searx/templates/simple/messages/no_results.html:6
|
||||||
msgid "Refresh the page."
|
msgid "Refresh the page."
|
||||||
msgstr "刷新页面"
|
msgstr "刷新页面。"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:7
|
#: searx/templates/simple/messages/no_results.html:7
|
||||||
msgid "Search for another query or select another category (above)."
|
msgid "Search for another query or select another category (above)."
|
||||||
msgstr ""
|
msgstr "(在上方)对其他查询进行搜索,或选择其他类别。"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:8
|
#: searx/templates/simple/messages/no_results.html:8
|
||||||
msgid "Change the search engine used in the preferences:"
|
msgid "Change the search engine used in the preferences:"
|
||||||
|
@ -846,7 +855,7 @@ msgstr "更改“首选项”中使用的搜索引擎:"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:9
|
#: searx/templates/simple/messages/no_results.html:9
|
||||||
msgid "Switch to another instance:"
|
msgid "Switch to another instance:"
|
||||||
msgstr "切换另一个SearXNG的服务器:"
|
msgstr "切换至另一个 SearXNG 实例:"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/answerers.html:4
|
#: searx/templates/simple/preferences/answerers.html:4
|
||||||
#: searx/templates/simple/preferences/engines.html:17
|
#: searx/templates/simple/preferences/engines.html:17
|
||||||
|
@ -993,13 +1002,13 @@ msgstr "热键"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:13
|
#: searx/templates/simple/preferences/hotkeys.html:13
|
||||||
msgid "Vim-like"
|
msgid "Vim-like"
|
||||||
msgstr "Vim布局"
|
msgstr "Vim 布局"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/hotkeys.html:18
|
#: searx/templates/simple/preferences/hotkeys.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
||||||
"key on main or result page to get help."
|
"key on main or result page to get help."
|
||||||
msgstr "使用热键进行导航(需要JavaScript)。在主页或搜索结果页按“h”键获取帮助。"
|
msgstr "使用热键进行导航(需要 JavaScript)。在主页或搜索结果页按“h”键获取帮助。"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/image_proxy.html:2
|
#: searx/templates/simple/preferences/image_proxy.html:2
|
||||||
msgid "Image proxy"
|
msgid "Image proxy"
|
||||||
|
@ -1063,7 +1072,7 @@ msgstr "搜索特定类别"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Perform search immediately if a category selected. Disable to select "
|
"Perform search immediately if a category selected. Disable to select "
|
||||||
"multiple categories"
|
"multiple categories"
|
||||||
msgstr ""
|
msgstr "当一个类别被指定时,立即执行搜索。禁用以选择多个类别"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/theme.html:2
|
#: searx/templates/simple/preferences/theme.html:2
|
||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
|
@ -1208,19 +1217,19 @@ msgstr "字节"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:13
|
#: searx/templates/simple/result_templates/torrent.html:13
|
||||||
msgid "kiB"
|
msgid "kiB"
|
||||||
msgstr "kB"
|
msgstr "kiB"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:14
|
#: searx/templates/simple/result_templates/torrent.html:14
|
||||||
msgid "MiB"
|
msgid "MiB"
|
||||||
msgstr "MB"
|
msgstr "MiB"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:15
|
#: searx/templates/simple/result_templates/torrent.html:15
|
||||||
msgid "GiB"
|
msgid "GiB"
|
||||||
msgstr "GB"
|
msgstr "GiB"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:16
|
#: searx/templates/simple/result_templates/torrent.html:16
|
||||||
msgid "TiB"
|
msgid "TiB"
|
||||||
msgstr "TB"
|
msgstr "TiB"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/torrent.html:20
|
#: searx/templates/simple/result_templates/torrent.html:20
|
||||||
msgid "Number of Files"
|
msgid "Number of Files"
|
||||||
|
@ -1616,4 +1625,3 @@ msgstr "隐藏视频"
|
||||||
#~ "use another query or search in "
|
#~ "use another query or search in "
|
||||||
#~ "more categories."
|
#~ "more categories."
|
||||||
#~ msgstr "我们没有找到任何结果。请使用其他关键词,或在更多类别中搜索。"
|
#~ msgstr "我们没有找到任何结果。请使用其他关键词,或在更多类别中搜索。"
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ from numbers import Number
|
||||||
from os.path import splitext, join
|
from os.path import splitext, join
|
||||||
from random import choice
|
from random import choice
|
||||||
from html.parser import HTMLParser
|
from html.parser import HTMLParser
|
||||||
|
from html import escape
|
||||||
from urllib.parse import urljoin, urlparse
|
from urllib.parse import urljoin, urlparse
|
||||||
from markdown_it import MarkdownIt
|
from markdown_it import MarkdownIt
|
||||||
|
|
||||||
|
@ -88,7 +89,7 @@ class _HTMLTextExtractorException(Exception):
|
||||||
"""Internal exception raised when the HTML is invalid"""
|
"""Internal exception raised when the HTML is invalid"""
|
||||||
|
|
||||||
|
|
||||||
class _HTMLTextExtractor(HTMLParser): # pylint: disable=W0223 # (see https://bugs.python.org/issue31844)
|
class _HTMLTextExtractor(HTMLParser):
|
||||||
"""Internal class to extract text from HTML"""
|
"""Internal class to extract text from HTML"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -137,6 +138,11 @@ class _HTMLTextExtractor(HTMLParser): # pylint: disable=W0223 # (see https://b
|
||||||
def get_text(self):
|
def get_text(self):
|
||||||
return ''.join(self.result).strip()
|
return ''.join(self.result).strip()
|
||||||
|
|
||||||
|
def error(self, message):
|
||||||
|
# error handle is needed in <py3.10
|
||||||
|
# https://github.com/python/cpython/pull/8562/files
|
||||||
|
raise AssertionError(message)
|
||||||
|
|
||||||
|
|
||||||
def html_to_text(html_str: str) -> str:
|
def html_to_text(html_str: str) -> str:
|
||||||
"""Extract text from a HTML string
|
"""Extract text from a HTML string
|
||||||
|
@ -153,12 +159,18 @@ def html_to_text(html_str: str) -> str:
|
||||||
|
|
||||||
>>> html_to_text('<style>.span { color: red; }</style><span>Example</span>')
|
>>> html_to_text('<style>.span { color: red; }</style><span>Example</span>')
|
||||||
'Example'
|
'Example'
|
||||||
|
|
||||||
|
>>> html_to_text(r'regexp: (?<![a-zA-Z]')
|
||||||
|
'regexp: (?<![a-zA-Z]'
|
||||||
"""
|
"""
|
||||||
html_str = html_str.replace('\n', ' ').replace('\r', ' ')
|
html_str = html_str.replace('\n', ' ').replace('\r', ' ')
|
||||||
html_str = ' '.join(html_str.split())
|
html_str = ' '.join(html_str.split())
|
||||||
s = _HTMLTextExtractor()
|
s = _HTMLTextExtractor()
|
||||||
try:
|
try:
|
||||||
s.feed(html_str)
|
s.feed(html_str)
|
||||||
|
except AssertionError:
|
||||||
|
s = _HTMLTextExtractor()
|
||||||
|
s.feed(escape(html_str, quote=True))
|
||||||
except _HTMLTextExtractorException:
|
except _HTMLTextExtractorException:
|
||||||
logger.debug("HTMLTextExtractor: invalid HTML\n%s", html_str)
|
logger.debug("HTMLTextExtractor: invalid HTML\n%s", html_str)
|
||||||
return s.get_text()
|
return s.get_text()
|
||||||
|
|
|
@ -57,7 +57,9 @@ from searx import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from searx import infopage
|
from searx import infopage
|
||||||
from searx.botdetection import limiter
|
from searx import limiter
|
||||||
|
from searx.botdetection import link_token
|
||||||
|
|
||||||
from searx.data import ENGINE_DESCRIPTIONS
|
from searx.data import ENGINE_DESCRIPTIONS
|
||||||
from searx.results import Timing
|
from searx.results import Timing
|
||||||
from searx.settings_defaults import OUTPUT_FORMATS
|
from searx.settings_defaults import OUTPUT_FORMATS
|
||||||
|
@ -94,7 +96,6 @@ from searx.utils import (
|
||||||
from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH
|
from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH
|
||||||
from searx.query import RawTextQuery
|
from searx.query import RawTextQuery
|
||||||
from searx.plugins import Plugin, plugins, initialize as plugin_initialize
|
from searx.plugins import Plugin, plugins, initialize as plugin_initialize
|
||||||
from searx.botdetection import link_token
|
|
||||||
from searx.plugins.oa_doi_rewrite import get_doi_resolver
|
from searx.plugins.oa_doi_rewrite import get_doi_resolver
|
||||||
from searx.preferences import (
|
from searx.preferences import (
|
||||||
Preferences,
|
Preferences,
|
||||||
|
@ -1288,7 +1289,7 @@ def config():
|
||||||
'DOCS_URL': get_setting('brand.docs_url'),
|
'DOCS_URL': get_setting('brand.docs_url'),
|
||||||
},
|
},
|
||||||
'limiter': {
|
'limiter': {
|
||||||
'enabled': settings['server']['limiter'],
|
'enabled': limiter.is_installed(),
|
||||||
'botdetection.ip_limit.link_token': _limiter_cfg.get('botdetection.ip_limit.link_token'),
|
'botdetection.ip_limit.link_token': _limiter_cfg.get('botdetection.ip_limit.link_token'),
|
||||||
'botdetection.ip_lists.pass_searxng_org': _limiter_cfg.get('botdetection.ip_lists.pass_searxng_org'),
|
'botdetection.ip_lists.pass_searxng_org': _limiter_cfg.get('botdetection.ip_lists.pass_searxng_org'),
|
||||||
},
|
},
|
||||||
|
@ -1322,6 +1323,7 @@ if not werkzeug_reloader or (werkzeug_reloader and os.environ.get("WERKZEUG_RUN_
|
||||||
redis_initialize()
|
redis_initialize()
|
||||||
plugin_initialize(app)
|
plugin_initialize(app)
|
||||||
search_initialize(enable_checker=True, check_network=True, enable_metrics=settings['general']['enable_metrics'])
|
search_initialize(enable_checker=True, check_network=True, enable_metrics=settings['general']['enable_metrics'])
|
||||||
|
limiter.initialize(app, settings)
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from searx import plugins
|
from searx import (
|
||||||
|
plugins,
|
||||||
|
limiter,
|
||||||
|
botdetection,
|
||||||
|
)
|
||||||
|
|
||||||
from mock import Mock
|
from mock import Mock
|
||||||
from tests import SearxTestCase
|
from tests import SearxTestCase
|
||||||
|
|
||||||
|
@ -46,6 +51,8 @@ class SelfIPTest(SearxTestCase):
|
||||||
plugin = plugins.load_and_initialize_plugin('searx.plugins.self_info', False, (None, {}))
|
plugin = plugins.load_and_initialize_plugin('searx.plugins.self_info', False, (None, {}))
|
||||||
store = plugins.PluginStore()
|
store = plugins.PluginStore()
|
||||||
store.register(plugin)
|
store.register(plugin)
|
||||||
|
cfg = limiter.get_cfg()
|
||||||
|
botdetection.init(cfg, None)
|
||||||
|
|
||||||
self.assertTrue(len(store.plugins) == 1)
|
self.assertTrue(len(store.plugins) == 1)
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ class TestUtils(SearxTestCase):
|
||||||
self.assertIsInstance(utils.html_to_text(html_str), str)
|
self.assertIsInstance(utils.html_to_text(html_str), str)
|
||||||
self.assertIsNotNone(utils.html_to_text(html_str))
|
self.assertIsNotNone(utils.html_to_text(html_str))
|
||||||
self.assertEqual(utils.html_to_text(html_str), "Test text")
|
self.assertEqual(utils.html_to_text(html_str), "Test text")
|
||||||
|
self.assertEqual(utils.html_to_text(r"regexp: (?<![a-zA-Z]"), "regexp: (?<![a-zA-Z]")
|
||||||
|
|
||||||
def test_extract_text(self):
|
def test_extract_text(self):
|
||||||
html_str = """
|
html_str = """
|
||||||
|
|
Loading…
Add table
Reference in a new issue