1
0
Fork 0

Compare commits

...

16 Commits

Author SHA1 Message Date
Alexandre Flament ee4226579b
Merge a9d1d1be70 into 1e1fb59bea 2024-04-27 11:50:27 +02:00
dependabot[bot] 1e1fb59bea [upd] pypi: Bump sphinx from 7.2.6 to 7.3.7
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.6 to 7.3.7.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v7.3.7)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 10:05:51 +02:00
Markus Heiser d593055888 [fix] ionic.io/ionicons - add back missing class="ionicon"
Seems to me svg2jinja added the class in the past .. but no longer in new builds
/ this patch adds the class back by using addAttributesToSVGElement [1].

To test this patch use:

    $ ./manage themes.simple
    $ cat searx/templates/simple/icons.html

and check `class="ionicon"` is in the outer `<svg ..>` tags.

[1] https://svgo.dev/docs/plugins/add-attributes-to-svg-elements/
[2] https://ionic.io/ionicons

Closes: https://github.com/searxng/searxng/issues/3383
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-27 09:33:20 +02:00
Bnyro 42b58eb448 [feat] media.ccc.de: implement module with pagination and iframe 2024-04-27 08:55:26 +02:00
dependabot[bot] a56b4a1648 [upd] pypi: Bump pallets-sphinx-themes from 2.1.1 to 2.1.2
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.1.1...2.1.2)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 08:30:17 +02:00
dependabot[bot] 4719c004ea [upd] pypi: Bump redis from 5.0.3 to 5.0.4
Bumps [redis](https://github.com/redis/redis-py) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.3...v5.0.4)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 08:24:23 +02:00
Ivan G 0e09014df5
Add uWSGI `die-on-term` flag (#3429) 2024-04-26 23:42:29 +02:00
searxng-bot 41f415aabf [l10n] update translations from Weblate
f4861e2c3 - 2024-04-26 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
2024-04-26 09:14:03 +02:00
dependabot[bot] 0081870305 [upd] pypi: Bump selenium from 4.19.0 to 4.20.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.19.0 to 4.20.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.19.0...selenium-4.20.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-26 09:10:46 +02:00
Markus Heiser ddaa6ed759 [fix] add missing localizable (gettext) messages to searxng.msg
To test this patch I used .. and checked the diff of the `messages.pot` file::

    $ ./manage pyenv.cmd pybabel extract -F babel.cfg \
              -o ./searx/translations/messages.pot searx/
    $ git diff ./searx/translations/messages.pot

----

hint from @dalf: f-string are not supported [1] but there is no error [2].

[1] python-babel/babel#594
[2] python-babel/babel#715

Closes: https://github.com/searxng/searxng/issues/3412
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-26 07:34:32 +02:00
Bnyro 0a4280a137 [refactor] translation engines: add translate category
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-26 07:33:28 +02:00
Bnyro 91522f3801 [feat] engine: implementation of LibreTranslate
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-26 07:33:28 +02:00
Grant Lanham Jr e0214412f8 Update .gitignore to ignore .python-version 2024-04-24 16:01:50 +02:00
Alexandre Flament a9d1d1be70 Upgrade to httpx 0.27.0 2024-03-16 18:14:11 +01:00
Alexandre Flament 45c217ff6e searx.network: refactoring 2024-03-16 17:59:53 +01:00
Alexandre Flament d4e21dec26 searx.search.checker: bug fix 2024-03-16 17:13:12 +01:00
149 changed files with 15035 additions and 6106 deletions

4
.gitignore vendored
View File

@ -23,4 +23,6 @@ gh-pages/
.idea/
searx/version_frozen.py
.dir-locals.el
.dir-locals.el
.python-version

View File

@ -62,6 +62,7 @@ confidence=
disable=duplicate-code,
missing-function-docstring,
consider-using-f-string,
too-few-public-methods,
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option

View File

@ -42,6 +42,10 @@ buffer-size = 8192
# See https://github.com/searx/searx-docker/issues/24
add-header = Connection: close
# Follow SIGTERM convention
# See https://github.com/searxng/searxng/issues/3427
die-on-term
# uwsgi serves the static files
static-map = /static=/usr/local/searxng/searx/static
# expires set to one day

View File

@ -1,13 +1,14 @@
mock==5.1.0
nose2[coverage_plugin]==0.14.1
parameterized==0.9.0
cov-core==1.15.0
black==24.3.0
pylint==3.1.0
splinter==0.21.0
selenium==4.19.0
Pallets-Sphinx-Themes==2.1.1
selenium==4.20.0
Pallets-Sphinx-Themes==2.1.2
Sphinx<=7.1.2; python_version == '3.8'
Sphinx==7.2.6; python_version > '3.8'
Sphinx==7.3.7; python_version > '3.8'
sphinx-issues==4.1.0
sphinx-jinja==2.0.2
sphinx-tabs==3.4.5
@ -16,7 +17,6 @@ sphinx-autobuild==2021.3.14
sphinx-notfound-page==1.0.0
myst-parser==2.0.0
linuxdoc==20231020
aiounittest==1.4.2
yamllint==1.35.1
wlc==1.14
coloredlogs==15.0.1

View File

@ -7,12 +7,11 @@ lxml==5.2.1
pygments==2.17.2
python-dateutil==2.9.0.post0
pyyaml==6.0.1
httpx[http2]==0.24.1
httpx[http2]==0.27.0
Brotli==1.1.0
uvloop==0.19.0
httpx-socks[asyncio]==0.7.7
httpx-socks==0.9.1
setproctitle==1.3.3
redis==5.0.3
redis==5.0.4
markdown-it-py==3.0.0
fasttext-predict==0.9.2.2
pytomlpp==1.0.13

View File

@ -97,6 +97,18 @@ else:
logger = logging.getLogger('searx')
logger.info(settings_load_message)
# set the levels of verbose loggers to WARNING
for logger_name in (
'httpx',
'httpcore.proxy',
'httpcore.connection',
'httpcore.http11',
'httpcore.http2',
'hpack.hpack',
'hpack.table',
):
logging.getLogger(logger_name).setLevel(logging.WARNING)
# log max_request_timeout
max_request_timeout = settings['outgoing']['max_request_timeout']
if max_request_timeout is None:

View File

@ -15,7 +15,7 @@ from searx.engines import (
engines,
google,
)
from searx.network import get as http_get, post as http_post
from searx.network import NETWORKS
from searx.exceptions import SearxEngineResponseException
@ -27,12 +27,14 @@ def update_kwargs(**kwargs):
def get(*args, **kwargs):
update_kwargs(**kwargs)
return http_get(*args, **kwargs)
network_context = NETWORKS.get('autocomplete').get_context()
return network_context.request('GET', *args, **kwargs)
def post(*args, **kwargs):
update_kwargs(**kwargs)
return http_post(*args, **kwargs)
network_context = NETWORKS.get('autocomplete').get_context()
return network_context.request('POST', *args, **kwargs)
def brave(query, _lang):

View File

@ -0,0 +1,54 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""media.ccc.de"""
import datetime
from urllib.parse import urlencode
from dateutil import parser
about = {
'website': 'https://media.ccc.de',
'official_api_documentation': 'https://github.com/voc/voctoweb',
'use_official_api': True,
'require_api_key': False,
'results': 'JSON',
}
categories = ['videos']
paging = True
api_url = "https://api.media.ccc.de"
def request(query, params):
args = {'q': query, 'page': params['pageno']}
params['url'] = f"{api_url}/public/events/search?{urlencode(args)}"
return params
def response(resp):
results = []
for item in resp.json()['events']:
publishedDate = None
if item.get('date'):
publishedDate = parser.parse(item['date'])
iframe_src = None
if len(item['recordings']) > 0:
iframe_src = item['recordings'][0]['recording_url']
results.append(
{
'template': 'videos.html',
'url': item['frontend_link'],
'title': item['title'],
'content': item['description'],
'thumbnail': item['thumb_url'],
'publishedDate': publishedDate,
'length': datetime.timedelta(seconds=item['length']),
'iframe_src': iframe_src,
}
)
return results

View File

@ -13,7 +13,7 @@ about = {
}
engine_type = 'online_dictionary'
categories = ['general']
categories = ['general', 'translate']
url = 'https://api-free.deepl.com/v2/translate'
api_key = None
@ -51,11 +51,6 @@ def response(resp):
infobox += "</dl>"
results.append(
{
'infobox': 'Deepl',
'content': infobox,
}
)
results.append({'answer': infobox})
return results

View File

@ -18,7 +18,7 @@ about = {
}
engine_type = 'online_dictionary'
categories = ['general']
categories = ['general', 'translate']
url = 'https://dictzone.com/{from_lang}-{to_lang}-dictionary/{query}'
weight = 100

View File

@ -0,0 +1,46 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""LibreTranslate (Free and Open Source Machine Translation API)"""
import random
from json import dumps
about = {
"website": 'https://libretranslate.com',
"wikidata_id": None,
"official_api_documentation": 'https://libretranslate.com/docs/',
"use_official_api": True,
"require_api_key": False,
"results": 'JSON',
}
engine_type = 'online_dictionary'
categories = ['general', 'translate']
base_url = "https://translate.terraprint.co"
api_key = ''
def request(_query, params):
request_url = random.choice(base_url) if isinstance(base_url, list) else base_url
params['url'] = f"{request_url}/translate"
args = {'source': params['from_lang'][1], 'target': params['to_lang'][1], 'q': params['query']}
if api_key:
args['api_key'] = api_key
params['data'] = dumps(args)
params['method'] = 'POST'
params['headers'] = {'Content-Type': 'application/json'}
return params
def response(resp):
results = []
json_resp = resp.json()
text = json_resp.get('translatedText')
if text:
results.append({'answer': text})
return results

View File

@ -13,7 +13,7 @@ about = {
}
engine_type = 'online_dictionary'
categories = ['general']
categories = ['general', 'translate']
url = "https://lingva.thedaviddelta.com"
search_url = "{url}/api/v1/{from_lang}/{to_lang}/{query}"

View File

@ -15,7 +15,7 @@ about = {
}
engine_type = 'online_dictionary'
categories = ['general']
categories = ['general', 'translate']
base_url = "https://mozhi.aryak.me"
mozhi_engine = "google"

View File

@ -14,7 +14,7 @@ about = {
}
engine_type = 'online_dictionary'
categories = ['dictionaries']
categories = ['general', 'translate']
url = 'https://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}'
web_url = 'https://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}'
weight = 100

View File

@ -68,7 +68,7 @@ def response(resp):
'title': result['display']['displayName'],
'content': content,
'img_src': img_src,
'metadata': f"{gettext('Language')}: {result['locale'].split('-')[0]}",
'metadata': gettext('Language') + f": {result['locale'].split('-')[0]}",
}
)

View File

@ -1,265 +1,483 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=missing-module-docstring, global-statement
# lint: pylint
# pyright: basic
# pylint: disable=redefined-outer-name
# ^^ because there is the raise_for_httperror function and the raise_for_httperror parameter.
"""HTTP for SearXNG.
import asyncio
In httpx and similar libraries, a client (also named session) contains a pool of HTTP connections.
The client reuses these HTTP connections and automatically recreates them when the server at the other
end closes the connections. Whatever the library, each client uses only one proxy (eventually none) and only
one local IP address.
SearXNG's primary use case is an engine sending one (or more) outgoing HTTP request(s). The admin can configure
an engine to use multiple proxies and/or IP addresses: SearXNG sends the outgoing HTTP requests through these
different proxies/IP addresses ( = HTTP clients ) on a rotational basis.
In addition, when SearXNG runs an engine request, there is a hard timeout: the engine runtime must not exceed
a defined value.
Moreover, an engine can ask SearXNG to retry a failed HTTP request.
However, we want to keep the engine codes simple and keep the complexity either in the configuration or the
core component components (here, in this module).
To answer the above requirements, the `searx.network` module introduces three components:
* HTTPClient and TorHTTPClient are two classes that wrap one or multiple httpx.Client
* NetworkManager, a set of named Network. Each Network
* holds the configuration defined in settings.yml
* creates NetworkContext fed with an HTTPClient (or TorHTTPClient).
This is where the rotation between the proxies and IP addresses happens.
* NetworkContext to provide a runtime context for the engines. The constructor needs a global timeout
and an HTTPClient factory. NetworkContext is an abstract class with three implementations,
one for each retry policy.
It is only possible to send an HTTP request with a NetworkContext
(otherwise, SearXNG raises a NetworkContextNotFound exception).
Two helpers set a NetworkContext for the current thread:
* The decorator `@networkcontext_decorator`, the intended usage is an external script (see searxng_extra)
* The context manager `networkcontext_manager`, for the generic use case.
Inside the thread, the caller can use `searx.network.get`, `searx.network.post` and similar functions without
caring about the HTTP client. However, if the caller creates a new thread, it must initialize a new NetworkContext.
A NetworkContext is most probably thread-safe, but this has not been tested.
The overall architecture:
* searx.network.network.NETWORKS contains all the networks.
The method `NetworkManager.get(network_name)` returns an initialized Network.
* searx.network.network.Network defines a network (a set of proxies, local IP address, etc...).
They are defined in settings.yml.
The method `Network.get_context()` creates a new NetworkContext.
* searx.network.context contains three different implementations of NetworkContext. One for each retry policy.
* searx.network.client.HTTPClient and searx.network.client.TorHTTPClient implement wrappers around httpx.Client.
"""
import threading
import concurrent.futures
from queue import SimpleQueue
from types import MethodType
from timeit import default_timer
from typing import Iterable, NamedTuple, Tuple, List, Dict, Union
from contextlib import contextmanager
from functools import wraps
from typing import Any, Callable, Optional, Union
import httpx
import anyio
from .network import get_network, initialize, check_network_configuration # pylint:disable=cyclic-import
from .client import get_loop
from .raise_for_httperror import raise_for_httperror
from searx.network.client import NOTSET, _NotSetClass
from searx.network.context import NetworkContext, P, R
from searx.network.network import NETWORKS
from searx.network.raise_for_httperror import raise_for_httperror
__all__ = [
"NETWORKS",
"NetworkContextNotFound",
"networkcontext_manager",
"networkcontext_decorator",
"raise_for_httperror",
"request",
"get",
"options",
"head",
"post",
"put",
"patch",
"delete",
]
THREADLOCAL = threading.local()
"""Thread-local data is data for thread specific values."""
_THREADLOCAL = threading.local()
"""Thread-local that contains only one field: network_context."""
_NETWORK_CONTEXT_KEY = 'network_context'
"""Key to access _THREADLOCAL"""
DEFAULT_MAX_REDIRECTS = httpx._config.DEFAULT_MAX_REDIRECTS # pylint: disable=protected-access
def reset_time_for_thread():
THREADLOCAL.total_time = 0
class NetworkContextNotFound(Exception):
"""A NetworkContext is expected to exist for the current thread.
def get_time_for_thread():
"""returns thread's total time or None"""
return THREADLOCAL.__dict__.get('total_time')
def set_timeout_for_thread(timeout, start_time=None):
THREADLOCAL.timeout = timeout
THREADLOCAL.start_time = start_time
def set_context_network_name(network_name):
THREADLOCAL.network = get_network(network_name)
def get_context_network():
"""If set return thread's network.
If unset, return value from :py:obj:`get_network`.
Use searx.network.networkcontext_manager or searx.network.networkcontext_decorator
to set a NetworkContext
"""
return THREADLOCAL.__dict__.get('network') or get_network()
@contextmanager
def _record_http_time():
# pylint: disable=too-many-branches
time_before_request = default_timer()
start_time = getattr(THREADLOCAL, 'start_time', time_before_request)
try:
yield start_time
finally:
# update total_time.
# See get_time_for_thread() and reset_time_for_thread()
if hasattr(THREADLOCAL, 'total_time'):
time_after_request = default_timer()
THREADLOCAL.total_time += time_after_request - time_before_request
def networkcontext_manager(
network_name: Optional[str] = None, timeout: Optional[float] = None, start_time: Optional[float] = None
):
"""Context manager to set a NetworkContext for the current thread
The timeout is for the whole function and is infinite by default (None).
The timeout is counted from the current time or start_time if different from None.
def _get_timeout(start_time, kwargs):
# pylint: disable=too-many-branches
Example of usage:
# timeout (httpx)
if 'timeout' in kwargs:
timeout = kwargs['timeout']
else:
timeout = getattr(THREADLOCAL, 'timeout', None)
if timeout is not None:
kwargs['timeout'] = timeout
```python
from time import sleep
from searx.network import networkcontext_manager, get
# 2 minutes timeout for the requests without timeout
timeout = timeout or 120
def search(query):
# the timeout is automatically set to 2.0 seconds (the remaining time for the NetworkContext)
# 2.0 because the timeout for the NetworkContext is 3.0 and one second has elllapsed with sleep(1.0)
auckland_time = get("http://worldtimeapi.org/api/timezone/Pacific/Auckland").json()
# the timeout is automatically set to 2.0 - (runtime of the previous HTTP request)
ip_time = get("http://worldtimeapi.org/api/ip").json()
return auckland_time, ip_time
# adjust actual timeout
timeout += 0.2 # overhead
if start_time:
timeout -= default_timer() - start_time
return timeout
def request(method, url, **kwargs):
"""same as requests/requests/api.py request(...)"""
with _record_http_time() as start_time:
network = get_context_network()
timeout = _get_timeout(start_time, kwargs)
future = asyncio.run_coroutine_threadsafe(network.request(method, url, **kwargs), get_loop())
try:
return future.result(timeout)
except concurrent.futures.TimeoutError as e:
raise httpx.TimeoutException('Timeout', request=None) from e
def multi_requests(request_list: List["Request"]) -> List[Union[httpx.Response, Exception]]:
"""send multiple HTTP requests in parallel. Wait for all requests to finish."""
with _record_http_time() as start_time:
# send the requests
network = get_context_network()
loop = get_loop()
future_list = []
for request_desc in request_list:
timeout = _get_timeout(start_time, request_desc.kwargs)
future = asyncio.run_coroutine_threadsafe(
network.request(request_desc.method, request_desc.url, **request_desc.kwargs), loop
)
future_list.append((future, timeout))
# read the responses
responses = []
for future, timeout in future_list:
try:
responses.append(future.result(timeout))
except concurrent.futures.TimeoutError:
responses.append(httpx.TimeoutException('Timeout', request=None))
except Exception as e: # pylint: disable=broad-except
responses.append(e)
return responses
class Request(NamedTuple):
"""Request description for the multi_requests function"""
method: str
url: str
kwargs: Dict[str, str] = {}
@staticmethod
def get(url, **kwargs):
return Request('GET', url, kwargs)
@staticmethod
def options(url, **kwargs):
return Request('OPTIONS', url, kwargs)
@staticmethod
def head(url, **kwargs):
return Request('HEAD', url, kwargs)
@staticmethod
def post(url, **kwargs):
return Request('POST', url, kwargs)
@staticmethod
def put(url, **kwargs):
return Request('PUT', url, kwargs)
@staticmethod
def patch(url, **kwargs):
return Request('PATCH', url, kwargs)
@staticmethod
def delete(url, **kwargs):
return Request('DELETE', url, kwargs)
def get(url, **kwargs):
kwargs.setdefault('allow_redirects', True)
return request('get', url, **kwargs)
def options(url, **kwargs):
kwargs.setdefault('allow_redirects', True)
return request('options', url, **kwargs)
def head(url, **kwargs):
kwargs.setdefault('allow_redirects', False)
return request('head', url, **kwargs)
def post(url, data=None, **kwargs):
return request('post', url, data=data, **kwargs)
def put(url, data=None, **kwargs):
return request('put', url, data=data, **kwargs)
def patch(url, data=None, **kwargs):
return request('patch', url, data=data, **kwargs)
def delete(url, **kwargs):
return request('delete', url, **kwargs)
async def stream_chunk_to_queue(network, queue, method, url, **kwargs):
try:
async with await network.stream(method, url, **kwargs) as response:
queue.put(response)
# aiter_raw: access the raw bytes on the response without applying any HTTP content decoding
# https://www.python-httpx.org/quickstart/#streaming-responses
async for chunk in response.aiter_raw(65536):
if len(chunk) > 0:
queue.put(chunk)
except (httpx.StreamClosed, anyio.ClosedResourceError):
# the response was queued before the exception.
# the exception was raised on aiter_raw.
# we do nothing here: in the finally block, None will be queued
# so stream(method, url, **kwargs) generator can stop
pass
except Exception as e: # pylint: disable=broad-except
# broad except to avoid this scenario:
# exception in network.stream(method, url, **kwargs)
# -> the exception is not catch here
# -> queue None (in finally)
# -> the function below steam(method, url, **kwargs) has nothing to return
queue.put(e)
finally:
queue.put(None)
def _stream_generator(method, url, **kwargs):
queue = SimpleQueue()
network = get_context_network()
future = asyncio.run_coroutine_threadsafe(stream_chunk_to_queue(network, queue, method, url, **kwargs), get_loop())
# yield chunks
obj_or_exception = queue.get()
while obj_or_exception is not None:
if isinstance(obj_or_exception, Exception):
raise obj_or_exception
yield obj_or_exception
obj_or_exception = queue.get()
future.result()
def _close_response_method(self):
asyncio.run_coroutine_threadsafe(self.aclose(), get_loop())
# reach the end of _self.generator ( _stream_generator ) to an avoid memory leak.
# it makes sure that :
# * the httpx response is closed (see the stream_chunk_to_queue function)
# * to call future.result() in _stream_generator
for _ in self._generator: # pylint: disable=protected-access
continue
def stream(method, url, **kwargs) -> Tuple[httpx.Response, Iterable[bytes]]:
"""Replace httpx.stream.
Usage:
response, stream = poolrequests.stream(...)
for chunk in stream:
...
httpx.Client.stream requires to write the httpx.HTTPTransport version of the
the httpx.AsyncHTTPTransport declared above.
# "worldtimeapi" is network defined in settings.yml
# network_context.call might call multiple times the search function,
# however the timeout will be respected.
with networkcontext_manager('worldtimeapi', timeout=3.0) as network_context:
sleep(1.0)
auckland_time, ip_time = network_context.call(search(query))
print("Auckland time: ", auckland_time["datetime"])
print("My time: ", ip_time["datetime"])
print("HTTP runtime:", network_context.get_http_runtime())
```
"""
generator = _stream_generator(method, url, **kwargs)
network = NETWORKS.get(network_name)
network_context = network.get_context(timeout=timeout, start_time=start_time)
setattr(_THREADLOCAL, _NETWORK_CONTEXT_KEY, network_context)
try:
yield network_context
finally:
delattr(_THREADLOCAL, _NETWORK_CONTEXT_KEY)
del network_context
# yield response
response = next(generator) # pylint: disable=stop-iteration-return
if isinstance(response, Exception):
raise response
response._generator = generator # pylint: disable=protected-access
response.close = MethodType(_close_response_method, response)
def networkcontext_decorator(
network_name: Optional[str] = None, timeout: Optional[float] = None, start_time: Optional[float] = None
):
"""Set the NetworkContext, then call the wrapped function using searx.network.context.NetworkContext.call
return response, generator
The timeout is for the whole function and is infinite by default (None).
The timeout is counted from the current time or start_time if different from None
Intended usage: to provide a NetworkContext for scripts in searxng_extra.
Example of usage:
```python
from time import sleep
from searx import network
@network.networkcontext_decorator(timeout=3.0)
def main()
sleep(1.0)
# the timeout is automatically set to 2.0 (the remaining time for the NetworkContext).
my_ip = network.get("https://ifconfig.me/ip").text
print(my_ip)
if __name__ == '__main__':
main()
```
"""
def func_outer(func: Callable[P, R]):
@wraps(func)
def func_inner(*args: P.args, **kwargs: P.kwargs) -> R:
with networkcontext_manager(network_name, timeout, start_time) as network_context:
return network_context.call(func, *args, **kwargs)
return func_inner
return func_outer
def request(
method: str,
url: str,
params: Optional[httpx._types.QueryParamTypes] = None,
content: Optional[httpx._types.RequestContent] = None,
data: Optional[httpx._types.RequestData] = None,
files: Optional[httpx._types.RequestFiles] = None,
json: Optional[Any] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
timeout: httpx._types.TimeoutTypes = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.request ( https://www.python-httpx.org/api/ ) with some differences:
* proxies:
it is not available and has to be defined in the Network configuration (in settings.yml)
* cert:
it is not available and is always None.
* trust_env:
it is not available and is always True.
* timeout:
the implementation uses the lowest timeout between this parameter and remaining time for the NetworkContext.
* allow_redirects:
it replaces the follow_redirects parameter to be compatible with the requests API.
* raise_for_httperror:
when True, this function calls searx.network.raise_for_httperror.raise_for_httperror.
Some parameters from httpx.Client ( https://www.python-httpx.org/api/#client) are available:
* max_redirects:
Set to None to use the value from the Network configuration.
The maximum number of redirect responses that should be followed.
* verify:
Set to None to use the value from the Network configuration.
* limits:
it has to be defined in the Network configuration (in settings.yml)
* default_encoding:
this parameter is not available and is always "utf-8".
This function requires a NetworkContext provided by either networkcontext_decorator or networkcontext_manager.
The implementation uses one or more httpx.Client
"""
# pylint: disable=too-many-arguments
network_context: Optional[NetworkContext] = getattr(_THREADLOCAL, _NETWORK_CONTEXT_KEY, None)
if network_context is None:
raise NetworkContextNotFound()
http_client = network_context._get_http_client() # pylint: disable=protected-access
return http_client.request(
method,
url,
params=params,
content=content,
data=data,
files=files,
json=json,
headers=headers,
cookies=cookies,
auth=auth,
timeout=timeout,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
raise_for_httperror=raise_for_httperror,
)
def get(
url: str,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = True,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.get, see the request method for the details.
allow_redirects is by default True (httpx default value is False).
"""
# pylint: disable=too-many-arguments
return request(
"GET",
url,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)
def options(
url: str,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.options, see the request method for the details."""
# pylint: disable=too-many-arguments
return request(
"OPTIONS",
url,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)
def head(
url: str,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.head, see the request method for the details."""
# pylint: disable=too-many-arguments
return request(
"HEAD",
url,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)
def post(
url: str,
content: Optional[httpx._types.RequestContent] = None,
data: Optional[httpx._types.RequestData] = None,
files: Optional[httpx._types.RequestFiles] = None,
json: Optional[Any] = None,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.post, see the request method for the details."""
# pylint: disable=too-many-arguments
return request(
"POST",
url,
content=content,
data=data,
files=files,
json=json,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)
def put(
url: str,
content: Optional[httpx._types.RequestContent] = None,
data: Optional[httpx._types.RequestData] = None,
files: Optional[httpx._types.RequestFiles] = None,
json: Optional[Any] = None,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.put, see the request method for the details."""
# pylint: disable=too-many-arguments
return request(
"PUT",
url,
content=content,
data=data,
files=files,
json=json,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)
def patch(
url: str,
content: Optional[httpx._types.RequestContent] = None,
data: Optional[httpx._types.RequestData] = None,
files: Optional[httpx._types.RequestFiles] = None,
json: Optional[Any] = None,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.patch, see the request method for the details."""
# pylint: disable=too-many-arguments
return request(
"PATCH",
url,
content=content,
data=data,
files=files,
json=json,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)
def delete(
url: str,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
auth: Optional[httpx._types.AuthTypes] = None,
allow_redirects: bool = False,
max_redirects: Union[_NotSetClass, int] = NOTSET,
verify: Union[_NotSetClass, httpx._types.VerifyTypes] = NOTSET,
timeout: httpx._types.TimeoutTypes = None,
raise_for_httperror: bool = False,
) -> httpx.Response:
"""Similar to httpx.delete, see the request method for the details."""
# pylint: disable=too-many-arguments
return request(
"DELETE",
url,
params=params,
headers=headers,
cookies=cookies,
auth=auth,
allow_redirects=allow_redirects,
max_redirects=max_redirects,
verify=verify,
timeout=timeout,
raise_for_httperror=raise_for_httperror,
)

View File

@ -1,34 +1,63 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=missing-module-docstring, global-statement
"""Implement various ABCHTTPClient
* OneHTTPClient wrapper around httpx.Client
* BaseHTTPClient httpx.Client accept the verify and max_redirects parameter only in the constructor.
BaseHTTPClient allows to pass these parameter in each query by creating multiple OneHTTPClient.
* HTTPClient Inherit from BaseHTTPClient, raise an error according to retry_on_http_error parameter.
* TorHTTPClient Inherit from HTTPClientSoftError, check Tor connectivity
"""
import asyncio
import logging
import random
from abc import ABC, abstractmethod
from collections import namedtuple
from ssl import SSLContext
import threading
from typing import Any, Dict
from typing import Any, Dict, Optional, Tuple, Union
import httpx
from httpx_socks import AsyncProxyTransport
from python_socks import parse_proxy_url, ProxyConnectionError, ProxyTimeoutError, ProxyError
from httpx_socks import SyncProxyTransport
from python_socks import ProxyConnectionError, ProxyError, ProxyTimeoutError, parse_proxy_url
from searx import logger
from .raise_for_httperror import raise_for_httperror
# Optional uvloop (support Python 3.6)
try:
import uvloop
except ImportError:
pass
else:
uvloop.install()
CertTypes = Union[
# certfile
str,
# (certfile, keyfile)
Tuple[str, Optional[str]],
# (certfile, keyfile, password)
Tuple[str, Optional[str], Optional[str]],
]
logger = logger.getChild('searx.network.client')
LOOP = None
SSLCONTEXTS: Dict[Any, SSLContext] = {}
def shuffle_ciphers(ssl_context):
class _NotSetClass: # pylint: disable=too-few-public-methods
"""Internal class for this module, do not create instance of this class.
Replace the None value, allow explicitly pass None as a function argument"""
NOTSET = _NotSetClass()
class SoftRetryHTTPException(Exception):
"""Client implementations raise this exception to tell the NetworkContext
the response is invalid even if there is no HTTP exception.
This exception is INTERNAL to searx.network and must not be seen outside.
See HTTPClientSoftError which check the HTTP response according to
the raise_for_httperror parameter.
"""
def __init__(self, response):
self.response = response
message = "SoftRetryHTTPException, you should not see this error"
super().__init__(message)
def _shuffle_ciphers(ssl_context):
"""Shuffle httpx's default ciphers of a SSL context randomly.
From `What Is TLS Fingerprint and How to Bypass It`_
@ -51,18 +80,28 @@ def shuffle_ciphers(ssl_context):
ssl_context.set_ciphers(":".join(sc_list + c_list))
def get_sslcontexts(proxy_url=None, cert=None, verify=True, trust_env=True, http2=False):
key = (proxy_url, cert, verify, trust_env, http2)
def _get_sslcontexts(
local_address: str,
proxy_url: Optional[str],
cert: Optional[CertTypes],
verify: Union[str, bool],
trust_env: bool,
http2: bool,
):
key = (local_address, proxy_url, cert, verify, trust_env, http2)
if key not in SSLCONTEXTS:
SSLCONTEXTS[key] = httpx.create_ssl_context(cert, verify, trust_env, http2)
shuffle_ciphers(SSLCONTEXTS[key])
_shuffle_ciphers(SSLCONTEXTS[key])
return SSLCONTEXTS[key]
class AsyncHTTPTransportNoHttp(httpx.AsyncHTTPTransport):
### Transport
class _HTTPTransportNoHttp(httpx.HTTPTransport):
"""Block HTTP request
The constructor is blank because httpx.AsyncHTTPTransport.__init__ creates an SSLContext unconditionally:
The constructor is blank because httpx.HTTPTransport.__init__ creates an SSLContext unconditionally:
https://github.com/encode/httpx/blob/0f61aa58d66680c239ce43c8cdd453e7dc532bfc/httpx/_transports/default.py#L271
Each SSLContext consumes more than 500kb of memory, since there is about one network per engine.
@ -77,33 +116,29 @@ class AsyncHTTPTransportNoHttp(httpx.AsyncHTTPTransport):
# this on purpose if the base class is not called
pass
async def handle_async_request(self, request):
def handle_request(self, request):
raise httpx.UnsupportedProtocol('HTTP protocol is disabled')
async def aclose(self) -> None:
def close(self) -> None:
pass
async def __aenter__(self):
def __enter__(self): # Use generics for subclass support.
return self
async def __aexit__(
self,
exc_type=None,
exc_value=None,
traceback=None,
) -> None:
def __exit__(self, exc_type, exc_value, traceback) -> None: # pylint: disable=signature-differs
# avoid to import the various type for the signature, but pylint is not happy
pass
class AsyncProxyTransportFixed(AsyncProxyTransport):
"""Fix httpx_socks.AsyncProxyTransport
class _CustomSyncProxyTransport(SyncProxyTransport):
"""Inherit from httpx_socks.SyncProxyTransport
Map python_socks exceptions to httpx.ProxyError exceptions
"""
async def handle_async_request(self, request):
def handle_request(self, request):
try:
return await super().handle_async_request(request)
return super().handle_request(request)
except ProxyConnectionError as e:
raise httpx.ProxyError("ProxyConnectionError: " + e.strerror, request=request) from e
except ProxyTimeoutError as e:
@ -112,7 +147,7 @@ class AsyncProxyTransportFixed(AsyncProxyTransport):
raise httpx.ProxyError("ProxyError: " + e.args[0], request=request) from e
def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit, retries):
def _get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit, retries):
# support socks5h (requests compatibility):
# https://requests.readthedocs.io/en/master/user/advanced/#socks
# socks5:// hostname is resolved on client side
@ -124,16 +159,17 @@ def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit
rdns = True
proxy_type, proxy_host, proxy_port, proxy_username, proxy_password = parse_proxy_url(proxy_url)
verify = get_sslcontexts(proxy_url, None, verify, True, http2) if verify is True else verify
return AsyncProxyTransportFixed(
verify = _get_sslcontexts(local_address, proxy_url, None, verify, True, http2) if verify is True else verify
# About verify: in ProxyTransportFixed, verify is of type httpx._types.VerifyTypes
return _CustomSyncProxyTransport(
proxy_type=proxy_type,
proxy_host=proxy_host,
proxy_port=proxy_port,
username=proxy_username,
password=proxy_password,
rdns=rdns,
loop=get_loop(),
verify=verify,
verify=verify, # type: ignore
http2=http2,
local_address=local_address,
limits=limit,
@ -141,9 +177,9 @@ def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit
)
def get_transport(verify, http2, local_address, proxy_url, limit, retries):
verify = get_sslcontexts(None, None, verify, True, http2) if verify is True else verify
return httpx.AsyncHTTPTransport(
def _get_transport(verify, http2, local_address, proxy_url, limit, retries):
verify = _get_sslcontexts(local_address, None, None, verify, True, http2) if verify is True else verify
return httpx.HTTPTransport(
# pylint: disable=protected-access
verify=verify,
http2=http2,
@ -154,83 +190,378 @@ def get_transport(verify, http2, local_address, proxy_url, limit, retries):
)
def new_client(
# pylint: disable=too-many-arguments
enable_http,
verify,
enable_http2,
max_connections,
max_keepalive_connections,
keepalive_expiry,
proxies,
local_address,
retries,
max_redirects,
hook_log_response,
):
limit = httpx.Limits(
max_connections=max_connections,
max_keepalive_connections=max_keepalive_connections,
keepalive_expiry=keepalive_expiry,
)
# See https://www.python-httpx.org/advanced/#routing
mounts = {}
for pattern, proxy_url in proxies.items():
if not enable_http and pattern.startswith('http://'):
continue
if proxy_url.startswith('socks4://') or proxy_url.startswith('socks5://') or proxy_url.startswith('socks5h://'):
mounts[pattern] = get_transport_for_socks_proxy(
verify, enable_http2, local_address, proxy_url, limit, retries
)
else:
mounts[pattern] = get_transport(verify, enable_http2, local_address, proxy_url, limit, retries)
if not enable_http:
mounts['http://'] = AsyncHTTPTransportNoHttp()
transport = get_transport(verify, enable_http2, local_address, None, limit, retries)
event_hooks = None
if hook_log_response:
event_hooks = {'response': [hook_log_response]}
return httpx.AsyncClient(
transport=transport,
mounts=mounts,
max_redirects=max_redirects,
event_hooks=event_hooks,
)
### Clients
def get_loop():
return LOOP
class ABCHTTPClient(ABC):
"""Abstract HTTP client
Multiple implementation are defined bellow.
There are like an onion: each implementation relies on the previous one
and bring new feature.
"""
@abstractmethod
def send(self, stream: bool, method: str, url: str, **kwargs) -> httpx.Response:
pass
@abstractmethod
def close(self):
pass
@property
@abstractmethod
def is_closed(self) -> bool:
pass
def request(self, method, url, **kwargs) -> httpx.Response:
return self.send(False, method, url, **kwargs)
def stream(self, method, url, **kwargs) -> httpx.Response:
return self.send(True, method, url, **kwargs)
def init():
# log
for logger_name in (
'httpx',
'httpcore.proxy',
'httpcore.connection',
'httpcore.http11',
'httpcore.http2',
'hpack.hpack',
'hpack.table',
class OneHTTPClient(ABCHTTPClient):
"""Wrap a httpx.Client
Use httpx_socks for socks proxies.
Deal with httpx.RemoteProtocolError exception: httpx raises this exception when the
HTTP/2 server disconnect. It is excepted to reconnect.
Related to https://github.com/encode/httpx/issues/1478
Perhaps it can be removed now : TODO check in production.
To be backward compatible with Request:
* In Response, "ok" is set to "not response.is_error()"
See https://www.python-httpx.org/compatibility/#checking-for-success-and-failure-responses
* allow_redirects is accepted
See https://www.python-httpx.org/compatibility/#redirects
"""
def __init__(
# pylint: disable=too-many-arguments
self,
verify=True,
enable_http=True,
enable_http2=False,
max_connections=None,
max_keepalive_connections=None,
keepalive_expiry=None,
proxies=None,
local_addresses=None,
max_redirects=30,
hook_log_response=None,
log_trace=None,
allow_redirects=True,
logger=None,
):
logging.getLogger(logger_name).setLevel(logging.WARNING)
self.enable_http = enable_http
self.verify = verify
self.enable_http2 = enable_http2
self.max_connections = max_connections
self.max_keepalive_connections = max_keepalive_connections
self.keepalive_expiry = keepalive_expiry
self.proxies = proxies or {}
self.local_address = local_addresses
self.max_redirects = max_redirects
self.hook_log_response = hook_log_response
self.allow_redirects = allow_redirects
self.logger = logger
self.extensions = None
if log_trace:
self.extensions = {"trace": log_trace}
self._new_client()
# loop
def loop_thread():
global LOOP
LOOP = asyncio.new_event_loop()
LOOP.run_forever()
def send(self, stream, method, url, timeout=None, **kwargs):
self._patch_request(kwargs)
retry = 1
response = None
while retry >= 0: # pragma: no cover
retry -= 1
try:
if stream:
# from https://www.python-httpx.org/async/#streaming-responses
# > For situations when context block usage is not practical,
# > it is possible to enter "manual mode" by sending a Request
# > instance using client.send(..., stream=True).
request = self.client.build_request(
method=method,
url=url,
content=kwargs.get("content"),
data=kwargs.get("data"),
files=kwargs.get("files"),
json=kwargs.get("json"),
params=kwargs.get("params"),
headers=kwargs.get("headers"),
cookies=kwargs.get("cookies"),
timeout=timeout,
extensions=self.extensions,
)
response = self.client.send(
request,
stream=True,
follow_redirects=kwargs.get("follow_redirects", False),
auth=kwargs.get("auth"),
)
else:
response = self.client.request(method, url, extensions=self.extensions, timeout=timeout, **kwargs)
self._patch_response(response)
return response
except httpx.RemoteProtocolError as e:
if response:
response.close()
if retry >= 0:
# the server has closed the connection:
# try again without decreasing the retries variable & with a new HTTP client
self._reconnect_client()
if self.logger:
self.logger.warning('httpx.RemoteProtocolError: the server has disconnected, retrying')
continue
raise e
except (httpx.RequestError, httpx.HTTPStatusError) as e:
if response:
response.close()
raise e
return response # type: ignore
thread = threading.Thread(
target=loop_thread,
name='asyncio_loop',
daemon=True,
)
thread.start()
def close(self):
self.client.close()
@property
def is_closed(self) -> bool:
return self.client.is_closed
def _new_client(self):
limit = httpx.Limits(
max_connections=self.max_connections,
max_keepalive_connections=self.max_keepalive_connections,
keepalive_expiry=self.keepalive_expiry,
)
# See https://www.python-httpx.org/advanced/#routing
mounts = {}
for pattern, proxy_url in self.proxies.items():
if not self.enable_http and pattern.startswith('http://'):
continue
if (
proxy_url.startswith('socks4://')
or proxy_url.startswith('socks5://')
or proxy_url.startswith('socks5h://')
):
mounts[pattern] = _get_transport_for_socks_proxy(
self.verify, self.enable_http2, self.local_address, proxy_url, limit, 0
)
else:
mounts[pattern] = _get_transport(
self.verify, self.enable_http2, self.local_address, proxy_url, limit, 0
)
if not self.enable_http:
mounts['http://'] = _HTTPTransportNoHttp()
transport = _get_transport(self.verify, self.enable_http2, self.local_address, None, limit, 0)
event_hooks = None
if self.hook_log_response:
event_hooks = {'response': [self.hook_log_response]}
self.client = httpx.Client(
transport=transport,
mounts=mounts,
max_redirects=self.max_redirects,
event_hooks=event_hooks,
)
def _reconnect_client(self):
self.client.close()
self._new_client()
def _patch_request(self, kwargs):
# see https://www.python-httpx.org/compatibility/#redirects
follow_redirects = self.allow_redirects
if 'allow_redirects' in kwargs:
# see https://github.com/encode/httpx/pull/1808
follow_redirects = kwargs.pop('allow_redirects')
kwargs['follow_redirects'] = follow_redirects
def _patch_response(self, response):
if isinstance(response, httpx.Response):
# requests compatibility (response is not streamed)
# see also https://www.python-httpx.org/compatibility/#checking-for-4xx5xx-responses
response.ok = not response.is_error # type: ignore
return response
init()
_HTTPMultiClientConf = namedtuple('HTTPMultiClientConf', ['verify', 'max_redirects'])
class BaseHTTPClient(ABCHTTPClient):
"""Some parameter like verify, max_redirects are defined at the client level,
not at the request level.
This class allow to specify these parameters at the request level.
The implementation uses multiple instances of OneHTTPClient
This class does not deal with the retry_on_http_error parameter
"""
def __init__(
self,
**default_kwargs,
):
# set the default values
self.default = _HTTPMultiClientConf(True, 30)
# extract the values from the HTTPCient constructor
# the line before is mandatory to be able to self._extract_kwargs_clients
# and keep the other arguments
self.default, self.default_kwargs = self._extract_kwargs_clients(default_kwargs)
self.clients: Dict[Tuple, OneHTTPClient] = {}
def close(self):
for client in self.clients.values():
client.close()
@property
def is_closed(self) -> bool:
return all(client.is_closed for client in self.clients.values())
# send(... ,foo=1, bar=2)
def send(self, stream, method, url, timeout=None, **kwargs):
client = self._get_client_and_update_kwargs(kwargs)
return client.send(stream, method, url, timeout, **kwargs)
def _get_client_and_update_kwargs(self, kwargs) -> OneHTTPClient:
# extract HTTPMultiClientConf using the parameter in the request
# and fallback to the parameters defined in the constructor
# = the parameters set in the network settings
http_multi_client_conf, kwargs = self._extract_kwargs_clients(kwargs)
if http_multi_client_conf not in self.clients:
self.clients[http_multi_client_conf] = OneHTTPClient(
verify=http_multi_client_conf.verify,
max_redirects=http_multi_client_conf.max_redirects,
**self.default_kwargs,
)
return self.clients[http_multi_client_conf]
def _extract_kwargs_clients(self, kwargs) -> Tuple[_HTTPMultiClientConf, Dict]:
# default values
# see https://www.python-httpx.org/compatibility/#ssl-configuration
verify = kwargs.pop('verify', NOTSET)
max_redirects = kwargs.pop('max_redirects', NOTSET)
if verify == NOTSET:
verify = self.default.verify
if max_redirects == NOTSET:
max_redirects = self.default.max_redirects
return _HTTPMultiClientConf(verify, max_redirects), kwargs
class HTTPClient(BaseHTTPClient):
"""Inherit from BaseHTTPClient, raise an exception according to the retry_on_http_error parameter"""
def __init__(self, retry_on_http_error=None, **kwargs):
super().__init__(**kwargs)
self.retry_on_http_error = retry_on_http_error
self._check_configuration()
def _check_configuration(self):
# make sure we can create at least an OneHTTPClient without exception
self._get_client_and_update_kwargs({})
def send(self, stream, method, url, timeout=None, **kwargs):
try:
do_raise_for_httperror = self._extract_do_raise_for_httperror(kwargs)
response = super().send(stream, method, url, timeout=timeout, **kwargs)
if do_raise_for_httperror:
raise_for_httperror(response)
if self._is_error_but_retry(response):
raise SoftRetryHTTPException(response)
return response
except (httpx.RequestError, httpx.HTTPStatusError) as e:
raise e
def _is_error_but_retry(self, response):
# pylint: disable=too-many-boolean-expressions
return (
(self.retry_on_http_error is True and 400 <= response.status_code <= 599)
or (isinstance(self.retry_on_http_error, list) and response.status_code in self.retry_on_http_error)
or (isinstance(self.retry_on_http_error, int) and response.status_code == self.retry_on_http_error)
)
@staticmethod
def _extract_do_raise_for_httperror(kwargs):
do_raise_for_httperror = True
if 'raise_for_httperror' in kwargs:
do_raise_for_httperror = kwargs['raise_for_httperror']
del kwargs['raise_for_httperror']
return do_raise_for_httperror
def __repr__(self):
keys_values = " ".join([f"{k}={v!r}" for k, v in self.default_kwargs.items()])
return f"<{self.__class__.__name__} retry_on_http_error={self.retry_on_http_error!r} {keys_values}>"
class TorHTTPClient(HTTPClient):
"""Extend HTTPClientSoftError client. To use with Tor configuration.
The class checks if the client is really connected through Tor.
"""
_TOR_CHECK_RESULT = {}
def __init__(self, proxies=None, local_addresses=None, **kwargs):
self.proxies = proxies
self.local_addresses = local_addresses
super().__init__(proxies=proxies, local_addresses=local_addresses, **kwargs)
def _check_configuration(self):
if not self._is_connected_through_tor(self.proxies, self.local_addresses):
self.close()
raise httpx.HTTPError('Network configuration problem: not using Tor')
def _is_connected_through_tor(self, proxies, local_addresses) -> bool:
"""TODO : rewrite to check the proxies variable instead of checking the HTTPTransport ?"""
if proxies is None:
return False
cache_key = (local_addresses, tuple(proxies.items()))
if cache_key in TorHTTPClient._TOR_CHECK_RESULT:
return TorHTTPClient._TOR_CHECK_RESULT[cache_key]
# False is the client use the DNS from the proxy
use_local_dns = False
# get one httpx client through get_client_and_update_kwargs
one_http_client = self._get_client_and_update_kwargs({"verify": True})
httpx_client = one_http_client.client
# ignore client._transport because it is not used with all://
for transport in httpx_client._mounts.values(): # pylint: disable=protected-access
if isinstance(transport, _HTTPTransportNoHttp):
# ignore the NO HTTP transport
continue
if isinstance(transport, _CustomSyncProxyTransport) and not getattr(
transport._pool, "_rdns", False # pylint: disable=protected-access # type: ignore
):
# socks5:// with local DNS
# expect socks5h:// with remote DNS to resolve .onion domain.
use_local_dns = True
break
#
if use_local_dns:
# no test
result = False
else:
# actual check
response = one_http_client.request("GET", "https://check.torproject.org/api/ip", timeout=60)
if response.status_code != 200:
result = False
else:
result = bool(response.json().get("IsTor", False))
TorHTTPClient._TOR_CHECK_RESULT[cache_key] = result
return result
@staticmethod
def _clear_cache():
"""Only for the tests"""
TorHTTPClient._TOR_CHECK_RESULT = {}

418
searx/network/context.py Normal file
View File

@ -0,0 +1,418 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# lint: pylint
# pyright: basic
"""This module implements various NetworkContext which deals with
* retry strategies: what to do when an HTTP request fails and retries>0
* record HTTP runtime
* timeout: In engines, the user query starts at one point in time,
the engine timeout is the starting point plus a defined value.
NetworkContext sends HTTP requests following the request timeout and the engine timeouts.
Example of usage:
```
context = NetworkContextRetryFunction(...) # or another implementation
def my_engine():
http_client = context.get_http_client()
ip_ifconfig = http_client.request("GET", "https://ifconfig.me/")
print("ip from ifconfig.me ", ip_ifconfig)
ip_myip = http_client.request("GET", "https://api.myip.com").json()["ip"]
print("ip from api.myip.com", ip_myip)
assert ip_ifconfig == ip_myip
# ^^ always true with NetworkContextRetryFunction and NetworkContextRetrySameHTTPClient
result = context.call(my_engine)
print('HTTP runtime:', context.get_total_time())
```
Note in the code above NetworkContextRetryFunction is instanced directly for the sake of simplicity.
NetworkContext are actually instanciated using Network.get_context(...)
Various implementations define what to do when there is an exception in the function `my_engine`:
* `NetworkContextRetryFunction` gets another HTTP client and tries the whole function again.
* `NetworkContextRetryDifferentHTTPClient` gets another HTTP client and tries the query again.
* `NetworkContextRetrySameHTTPClient` tries the query again with the same HTTP client.
"""
import functools
import ssl
from abc import ABC, abstractmethod
from contextlib import contextmanager
from timeit import default_timer
from typing import Callable, Optional, final
try:
from typing import ParamSpec, TypeVar
except ImportError:
# to support Python < 3.10
from typing_extensions import ParamSpec, TypeVar
import httpx
from searx.network.client import ABCHTTPClient, SoftRetryHTTPException
P = ParamSpec('P')
R = TypeVar('R')
HTTPCLIENTFACTORY = Callable[[], ABCHTTPClient]
DEFAULT_TIMEOUT = 120.0
## NetworkContext
class NetworkContext(ABC):
"""Abstract implementation: the call must defined in concrete classes.
Lifetime: one engine request or initialization of an engine.
"""
__slots__ = ('_retries', '_http_client_factory', '_http_client', '_start_time', '_http_time', '_timeout')
def __init__(
self,
retries: int,
http_client_factory: HTTPCLIENTFACTORY,
start_time: Optional[float],
timeout: Optional[float],
):
self._retries: int = retries
# wrap http_client_factory here, so we can forget about this wrapping
self._http_client_factory = _TimeHTTPClientWrapper.wrap_factory(http_client_factory, self)
self._http_client: Optional[ABCHTTPClient] = None
self._start_time: float = start_time or default_timer()
self._http_time: float = 0.0
self._timeout: Optional[float] = timeout
@abstractmethod
def call(self, func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R:
"""Call func within the network context.
The retry policy might call func multiple times.
Within the function self.get_http_client() returns an HTTP client to use.
The retry policy might send multiple times the same HTTP request
until it works or the retry count falls to zero.
"""
@final
def request(self, *args, **kwargs):
"""Convenient method to wrap a call to request inside the call method.
Use a new HTTP client to wrap a call to the request method using self.call
"""
def local_request(*args, **kwargs):
return self._get_http_client().request(*args, **kwargs)
return self.call(local_request, *args, **kwargs)
@final
def stream(self, *args, **kwargs):
"""Convenient method to wrap a call to stream inside the call method.
Use a new HTTP client to wrap a call to the stream method using self.call
"""
def local_stream(*args, **kwargs):
return self._get_http_client().stream(*args, **kwargs)
return self.call(local_stream, *args, **kwargs)
@final
def get_http_runtime(self) -> Optional[float]:
"""Return the amount of time spent on HTTP requests"""
return self._http_time
@final
def get_remaining_time(self, _override_timeout: Optional[float] = None) -> float:
"""Return the remaining time for the context.
_override_timeout is not intended to be used outside this module.
"""
timeout = _override_timeout or self._timeout or DEFAULT_TIMEOUT
timeout += 0.2 # overhead
timeout -= default_timer() - self._start_time
return timeout
@final
def _get_http_client(self) -> ABCHTTPClient:
"""Return the HTTP client to use for this context."""
if self._http_client is None:
raise ValueError("HTTP client has not been set")
return self._http_client
@final
def _set_http_client(self):
"""Ask the NetworkContext to use another HTTP client using the factory.
Use the method _get_new_client_from_factory() to call the factory,
so the NetworkContext implementations can wrap the ABCHTTPClient.
"""
self._http_client = self._get_new_client_from_factory()
@final
def _reset_http_client(self):
self._http_client = None
def _get_new_client_from_factory(self):
return self._http_client_factory()
@contextmanager
def _record_http_time(self):
"""This decorator records the code's runtime and adds it to self.total_time"""
time_before_request = default_timer()
try:
yield
finally:
self._http_time += default_timer() - time_before_request
def __repr__(self):
common_attributes = (
f"{self.__class__.__name__}"
+ f" retries={self._retries!r} timeout={self._timeout!r} http_client={self._http_client!r}"
)
# get the original factory : see the __init__ method of this class and _TimeHTTPClientWrapper.wrap_factory
factory = self._http_client_factory.__wrapped__
# break the abstraction safely: get back the Network object through the bound method
# see Network.get_context
bound_instance = getattr(factory, "__self__", None)
if bound_instance is not None and hasattr(bound_instance, 'get_context'):
# bound_instance has a "get_context" attribute: this is most likely a Network
# searx.network.network.Network is not imported to avoid circular import
return f"<{common_attributes} network_context={factory.__self__!r}>"
# fallback : this instance was not created using Network.get_context
return f"<{common_attributes} http_client_factory={factory!r}>"
## Measure time and deal with timeout
class _TimeHTTPClientWrapper(ABCHTTPClient):
"""Wrap an ABCHTTPClient:
* to record the HTTP runtime
* to override the timeout to make sure the total time does not exceed the timeout set on the NetworkContext
"""
__slots__ = ('http_client', 'network_context')
@staticmethod
def wrap_factory(http_client_factory: HTTPCLIENTFACTORY, network_context: NetworkContext):
"""Return a factory which wraps the result of http_client_factory with _TimeHTTPClientWrapper instance."""
functools.wraps(http_client_factory)
def wrapped_factory():
return _TimeHTTPClientWrapper(http_client_factory(), network_context)
wrapped_factory.__wrapped__ = http_client_factory
return wrapped_factory
def __init__(self, http_client: ABCHTTPClient, network_context: NetworkContext) -> None:
self.http_client = http_client
self.network_context = network_context
def send(self, stream, method, url, **kwargs) -> httpx.Response:
"""Send the HTTP request using self.http_client
Inaccurate with stream: the method must record HTTP time with the close method of httpx.Response.
It is not a problem since stream are used only for the image proxy.
"""
with self.network_context._record_http_time(): # pylint: disable=protected-access
timeout = self._extract_timeout(kwargs)
return self.http_client.send(stream, method, url, timeout=timeout, **kwargs)
def close(self):
return self.http_client.close()
@property
def is_closed(self) -> bool:
return self.http_client.is_closed
def _extract_timeout(self, kwargs):
"""Extract the timeout parameter and adjust it according to the remaining time"""
timeout = kwargs.pop('timeout', None)
return self.network_context.get_remaining_time(timeout)
## NetworkContextRetryFunction
class NetworkContextRetryFunction(NetworkContext):
"""When an HTTP request fails, this NetworkContext tries again
the whole function with another HTTP client.
This guarantees that func has the same HTTP client all along.
"""
def call(self, func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R:
try:
# if retries == 1, this method can call `func` twice,
# so the exit condition is self._retries must be equal or above zero
# to allow two iteration
while self._retries >= 0 and self.get_remaining_time() > 0:
self._set_http_client()
try:
return func(*args, **kwargs) # type: ignore
except SoftRetryHTTPException as e:
if self._retries <= 0:
return e.response
if e.response:
e.response.close()
except (ssl.SSLError, httpx.RequestError, httpx.HTTPStatusError) as e:
if self._retries <= 1:
# raise the exception only there is no more try
raise e
self._retries -= 1
if self.get_remaining_time() <= 0:
raise httpx.TimeoutException("Timeout")
raise httpx.HTTPError("Internal error: this should not happen")
finally:
self._reset_http_client()
def _get_new_client_from_factory(self):
return _RetryFunctionHTTPClient(super()._get_new_client_from_factory(), self)
class _RetryFunctionHTTPClient(ABCHTTPClient):
"""Companion class of NetworkContextRetryFunction
Do one thing: if the retries count of the NetworkContext is zero and there is a SoftRetryHTTPException,
then the send method catch this exception and returns the HTTP response.
This make sure the SoftRetryHTTPException exception is not seen outside the searx.network module.
"""
def __init__(self, http_client: ABCHTTPClient, network_context: NetworkContextRetryFunction):
self.http_client = http_client
self.network_context = network_context
def send(self, stream: bool, method: str, url: str, **kwargs) -> httpx.Response:
try:
return self.http_client.send(stream, method, url, **kwargs)
except SoftRetryHTTPException as e:
if self.network_context._retries <= 0: # pylint: disable=protected-access
return e.response
if e.response:
e.response.close()
raise e
def close(self):
return self.http_client.close()
@property
def is_closed(self) -> bool:
return self.http_client.is_closed
## NetworkContextRetrySameHTTPClient
class NetworkContextRetrySameHTTPClient(NetworkContext):
"""When an HTTP request fails, this NetworkContext tries again
the same HTTP request with the same HTTP client
The implementation wraps the provided ABCHTTPClient with _RetrySameHTTPClient."""
def call(self, func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R:
try:
self._set_http_client()
return func(*args, **kwargs) # type: ignore
finally:
self._reset_http_client()
def _get_new_client_from_factory(self):
return _RetrySameHTTPClient(super()._get_new_client_from_factory(), self)
class _RetrySameHTTPClient(ABCHTTPClient):
"""Companion class of NetworkContextRetrySameHTTPClient"""
def __init__(self, http_client: ABCHTTPClient, network_content: NetworkContextRetrySameHTTPClient):
self.http_client = http_client
self.network_context = network_content
def send(self, stream: bool, method: str, url: str, **kwargs) -> httpx.Response:
retries = self.network_context._retries # pylint: disable=protected-access
# if retries == 1, this method can send two HTTP requets,
# so the exit condition is self._retries must be equal or above zero
# to allow two iteration
while retries >= 0 and self.network_context.get_remaining_time() > 0:
try:
return self.http_client.send(stream, method, url, **kwargs)
except SoftRetryHTTPException as e:
if retries <= 0:
return e.response
if e.response:
e.response.close()
except (ssl.SSLError, httpx.RequestError, httpx.HTTPStatusError) as e:
if retries <= 0:
raise e
retries -= 1
if self.network_context.get_remaining_time() <= 0:
raise httpx.TimeoutException("Timeout")
raise httpx.HTTPError("Internal error: this should not happen")
def close(self):
return self.http_client.close()
@property
def is_closed(self) -> bool:
return self.http_client.is_closed
## NetworkContextRetryDifferentHTTPClient
class NetworkContextRetryDifferentHTTPClient(NetworkContext):
"""When a HTTP request fails, this NetworkContext tries again
the same HTTP request with a different HTTP client
The implementation wraps the provided ABCHTTPClient with _RetryDifferentHTTPClient."""
def call(self, func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R:
self._set_http_client()
try:
return func(*args, **kwargs) # type: ignore
finally:
self._reset_http_client()
def _get_new_client_from_factory(self):
return _RetryDifferentHTTPClient(self)
class _RetryDifferentHTTPClient(ABCHTTPClient):
"""Companion class of NetworkContextRetryDifferentHTTPClient"""
def __init__(self, network_context: NetworkContextRetryDifferentHTTPClient) -> None:
self.network_context = network_context
def send(self, stream: bool, method: str, url: str, **kwargs) -> httpx.Response:
retries = self.network_context._retries # pylint: disable=protected-access
# if retries == 1, this method can send two HTTP requets,
# so the exit condition is self._retries must be equal or above zero
# to allow two iteration
while retries >= 0 and self.network_context.get_remaining_time() > 0:
http_client = self.network_context._http_client_factory() # pylint: disable=protected-access
try:
return http_client.send(stream, method, url, **kwargs)
except SoftRetryHTTPException as e:
if retries <= 0:
return e.response
if e.response:
e.response.close()
except (ssl.SSLError, httpx.RequestError, httpx.HTTPStatusError) as e:
if retries <= 0:
raise e
retries -= 1
if self.network_context.get_remaining_time() <= 0:
raise httpx.TimeoutException("Timeout")
raise httpx.HTTPError("Internal error: this should not happen")
def close(self):
raise NotImplementedError()
@property
def is_closed(self) -> bool:
raise NotImplementedError()

View File

@ -1,154 +1,229 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=global-statement
# pylint: disable=missing-module-docstring, missing-class-docstring
"""Deal with
* create Networks from settings.yml
* each Network contains an ABCHTTPClient for each (proxies, IP addresses). Lazy initialized.
* a Network provides two methods:
* get_http_client: returns an HTTP client. Prefer the get_context,
retry strategy is ignored with get_http_client
* get_context: provides a runtime context for the engine, see searx.network.context
"""
import atexit
import asyncio
import ipaddress
from dataclasses import dataclass, field
from enum import Enum
from itertools import cycle
from typing import Dict
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
import httpx
from searx import logger, searx_debug
from .client import new_client, get_loop, AsyncHTTPTransportNoHttp
from .raise_for_httperror import raise_for_httperror
from searx.network.client import HTTPClient, TorHTTPClient
from searx.network.context import (
NetworkContext,
NetworkContextRetryDifferentHTTPClient,
NetworkContextRetryFunction,
NetworkContextRetrySameHTTPClient,
)
logger = logger.getChild('network')
DEFAULT_NAME = '__DEFAULT__'
NETWORKS: Dict[str, 'Network'] = {}
# requests compatibility when reading proxy settings from settings.yml
PROXY_PATTERN_MAPPING = {
'http': 'http://',
'https': 'https://',
'socks4': 'socks4://',
'socks5': 'socks5://',
'socks5h': 'socks5h://',
'http:': 'http://',
'https:': 'https://',
'socks4:': 'socks4://',
'socks5:': 'socks5://',
'socks5h:': 'socks5h://',
}
ADDRESS_MAPPING = {'ipv4': '0.0.0.0', 'ipv6': '::'}
class RetryStrategy(Enum):
ENGINE = NetworkContextRetryFunction
SAME_HTTP_CLIENT = NetworkContextRetrySameHTTPClient
DIFFERENT_HTTP_CLIENT = NetworkContextRetryDifferentHTTPClient
TYPE_IP_ANY = Union[ # pylint: disable=invalid-name
ipaddress.IPv4Address,
ipaddress.IPv6Address,
ipaddress.IPv4Network,
ipaddress.IPv6Network,
]
TYPE_RETRY_ON_ERROR = Union[List[int], int, bool] # pylint: disable=invalid-name
@dataclass(order=True, frozen=True)
class NetworkSettings:
"""Configuration for a Network. See NetworkSettingsReader
TODO: check if we need order=True
"""
# Individual HTTP requests can override these parameters.
verify: bool = True
max_redirects: int = 30
# These parameters can not be overridden.
enable_http: bool = False # disable http:// URL (unencrypted) by default = make sure to use HTTPS
enable_http2: bool = True
max_connections: Optional[int] = 10
max_keepalive_connections: Optional[int] = 100
keepalive_expiry: Optional[float] = 5.0
local_addresses: List[TYPE_IP_ANY] = field(default_factory=list)
proxies: Dict[str, List[str]] = field(default_factory=dict)
using_tor_proxy: bool = False
retries: int = 0
retry_strategy: RetryStrategy = RetryStrategy.DIFFERENT_HTTP_CLIENT
retry_on_http_error: Optional[TYPE_RETRY_ON_ERROR] = None
logger_name: Optional[str] = None
class Network:
"""Provides NetworkContext and ABCHTTPClient following NetworkSettings.
A Network might have multiple IP addresses and proxies;
in this case, each call to get_context or get_http_client provides a different
configuration.
"""
__slots__ = (
'enable_http',
'verify',
'enable_http2',
'max_connections',
'max_keepalive_connections',
'keepalive_expiry',
'local_addresses',
'proxies',
'using_tor_proxy',
'max_redirects',
'retries',
'retry_on_http_error',
'_settings',
'_local_addresses_cycle',
'_proxies_cycle',
'_clients',
'_logger',
)
_TOR_CHECK_RESULT = {}
def __init__(self, settings: NetworkSettings):
"""Creates a Network from a NetworkSettings"""
self._settings = settings
self._local_addresses_cycle = self._get_local_addresses_cycle()
self._proxies_cycle = self._get_proxy_cycles()
self._clients: Dict[Tuple, HTTPClient] = {}
self._logger = logger.getChild(settings.logger_name) if settings.logger_name else logger
def __init__(
# pylint: disable=too-many-arguments
self,
enable_http=True,
verify=True,
enable_http2=False,
max_connections=None,
max_keepalive_connections=None,
keepalive_expiry=None,
proxies=None,
using_tor_proxy=False,
local_addresses=None,
retries=0,
retry_on_http_error=None,
max_redirects=30,
logger_name=None,
):
@staticmethod
def from_dict(**kwargs):
"""Creates a Network from a keys/values"""
return Network(NetwortSettingsDecoder.from_dict(kwargs))
self.enable_http = enable_http
self.verify = verify
self.enable_http2 = enable_http2
self.max_connections = max_connections
self.max_keepalive_connections = max_keepalive_connections
self.keepalive_expiry = keepalive_expiry
self.proxies = proxies
self.using_tor_proxy = using_tor_proxy
self.local_addresses = local_addresses
self.retries = retries
self.retry_on_http_error = retry_on_http_error
self.max_redirects = max_redirects
self._local_addresses_cycle = self.get_ipaddress_cycle()
self._proxies_cycle = self.get_proxy_cycles()
self._clients = {}
self._logger = logger.getChild(logger_name) if logger_name else logger
self.check_parameters()
def close(self):
"""Close all the ABCHTTPClient hold by the Network"""
for client in self._clients.values():
client.close()
def check_parameters(self):
for address in self.iter_ipaddresses():
if '/' in address:
ipaddress.ip_network(address, False)
else:
ipaddress.ip_address(address)
def check_configuration(self) -> bool:
"""Check if the network configuration is valid.
if self.proxies is not None and not isinstance(self.proxies, (str, dict)):
raise ValueError('proxies type has to be str, dict or None')
Typical use case: check if the proxy is really a Tor proxy"""
try:
self._get_http_client()
return True
except Exception: # pylint: disable=broad-except
self._logger.exception('Error')
return False
def iter_ipaddresses(self):
local_addresses = self.local_addresses
if not local_addresses:
return
if isinstance(local_addresses, str):
local_addresses = [local_addresses]
yield from local_addresses
def get_context(self, timeout: Optional[float] = None, start_time: Optional[float] = None) -> NetworkContext:
"""Return a new NetworkContext"""
context_cls = self._settings.retry_strategy.value
return context_cls(self._settings.retries, self._get_http_client, start_time, timeout)
def get_ipaddress_cycle(self):
def _get_http_client(self) -> HTTPClient:
"""Return an HTTP client.
Different HTTP clients are returned according to the configuration.
For example, if two proxies are defined,
the first call to this function returns an HTTP client using the first proxy.
A second call returns an HTTP client using the second proxy.
A third call returns the same HTTP client from the first call, using the first proxy.
"""
local_addresses = next(self._local_addresses_cycle)
proxies = next(self._proxies_cycle) # is a tuple so it can be part of the key
key = (local_addresses, proxies)
if key not in self._clients or self._clients[key].is_closed:
http_client_cls = TorHTTPClient if self._settings.using_tor_proxy else HTTPClient
hook_log_response = self._log_response if searx_debug else None
log_trace = self._log_trace if searx_debug else None
self._clients[key] = http_client_cls(
verify=self._settings.verify,
enable_http=self._settings.enable_http,
enable_http2=self._settings.enable_http2,
max_connections=self._settings.max_connections,
max_keepalive_connections=self._settings.max_keepalive_connections,
keepalive_expiry=self._settings.keepalive_expiry,
proxies=dict(proxies),
local_addresses=local_addresses,
retry_on_http_error=self._settings.retry_on_http_error,
hook_log_response=hook_log_response,
log_trace=log_trace,
logger=self._logger,
)
return self._clients[key]
def _get_local_addresses_cycle(self):
"""Never-ending generator of IP addresses"""
while True:
count = 0
for address in self.iter_ipaddresses():
if '/' in address:
for a in ipaddress.ip_network(address, False).hosts():
at_least_one = False
for address in self._settings.local_addresses:
if isinstance(address, (ipaddress.IPv4Network, ipaddress.IPv6Network)):
for a in address.hosts():
yield str(a)
count += 1
at_least_one = True
else:
a = ipaddress.ip_address(address)
yield str(a)
count += 1
if count == 0:
yield str(address)
at_least_one = True
if not at_least_one:
# IPv4Network.hosts() and IPv6Network.hosts() might never return an IP address.
# at_least_one makes sure the generator does not turn into infinite loop without yield
yield None
def iter_proxies(self):
if not self.proxies:
return
# https://www.python-httpx.org/compatibility/#proxy-keys
if isinstance(self.proxies, str):
yield 'all://', [self.proxies]
else:
for pattern, proxy_url in self.proxies.items():
pattern = PROXY_PATTERN_MAPPING.get(pattern, pattern)
if isinstance(proxy_url, str):
proxy_url = [proxy_url]
yield pattern, proxy_url
def _get_proxy_cycles(self):
"""Never-ending generator of proxy configurations.
def get_proxy_cycles(self):
proxy_settings = {}
for pattern, proxy_urls in self.iter_proxies():
proxy_settings[pattern] = cycle(proxy_urls)
Each iteration returns tuples of tuples.
Semantically, this is a dictionary where
* keys are the mount points (see https://www.python-httpx.org/advanced/#mounting-transports )
* values are the proxy URLs.
This private method returns a tuple instead of a dictionary to be hashable.
See the line `key = (local_addresses, proxies)` above.
For example, if settings.yml contains:
```yaml
proxies: socks5h://localhost:1337
```
This is equivalent to
```yaml
proxies:
- all://: socks5h://localhost:1337
```
And this method always returns:
* `(('all://', 'socks5h://localhost:1337'))`
Another example:
```yaml
proxies:
- all://: socks5h://localhost:1337
- https://bing.com:
- socks5h://localhost:4000
- socks5h://localhost:5000
```
In this example, this method alternately returns these two responses:
* `(('all://', 'socks5h://localhost:1337'), ('https://bing.com', 'socks5h://localhost:4000'))`
* `(('all://', 'socks5h://localhost:1337'), ('https://bing.com', 'socks5h://localhost:5000'))`
When no proxies are configured, this method returns an empty tuple at each iteration.
"""
# for each pattern, turn each list of proxy into a cycle
proxy_settings = {pattern: cycle(proxy_urls) for pattern, proxy_urls in (self._settings.proxies).items()}
while True:
# pylint: disable=stop-iteration-return
# ^^ is it a pylint bug ?
yield tuple((pattern, next(proxy_url_cycle)) for pattern, proxy_url_cycle in proxy_settings.items())
async def log_response(self, response: httpx.Response):
def _log_response(self, response: httpx.Response):
"""Logs from httpx are disabled. Log the HTTP response with the logger from the network"""
request = response.request
status = f"{response.status_code} {response.reason_phrase}"
response_line = f"{response.http_version} {status}"
@ -156,270 +231,274 @@ class Network:
content_type = f' ({content_type})' if content_type else ''
self._logger.debug(f'HTTP Request: {request.method} {request.url} "{response_line}"{content_type}')
@staticmethod
async def check_tor_proxy(client: httpx.AsyncClient, proxies) -> bool:
if proxies in Network._TOR_CHECK_RESULT:
return Network._TOR_CHECK_RESULT[proxies]
def _log_trace(self, name: str, info: Mapping[str, Any]) -> None:
"""Log the actual source / dest IPs and SSL cipher.
result = True
# ignore client._transport because it is not used with all://
for transport in client._mounts.values(): # pylint: disable=protected-access
if isinstance(transport, AsyncHTTPTransportNoHttp):
continue
if getattr(transport, "_pool") and getattr(
transport._pool, "_rdns", False # pylint: disable=protected-access
):
continue
return False
response = await client.get("https://check.torproject.org/api/ip", timeout=60)
if not response.json()["IsTor"]:
result = False
Network._TOR_CHECK_RESULT[proxies] = result
return result
Note: does not work with socks proxy
async def get_client(self, verify=None, max_redirects=None):
verify = self.verify if verify is None else verify
max_redirects = self.max_redirects if max_redirects is None else max_redirects
local_address = next(self._local_addresses_cycle)
proxies = next(self._proxies_cycle) # is a tuple so it can be part of the key
key = (verify, max_redirects, local_address, proxies)
hook_log_response = self.log_response if searx_debug else None
if key not in self._clients or self._clients[key].is_closed:
client = new_client(
self.enable_http,
verify,
self.enable_http2,
self.max_connections,
self.max_keepalive_connections,
self.keepalive_expiry,
dict(proxies),
local_address,
0,
max_redirects,
hook_log_response,
)
if self.using_tor_proxy and not await self.check_tor_proxy(client, proxies):
await client.aclose()
raise httpx.ProxyError('Network configuration problem: not using Tor')
self._clients[key] = client
return self._clients[key]
See
* https://www.encode.io/httpcore/extensions/
* https://github.com/encode/httpx/blob/e874351f04471029b2c5dcb2d0b50baccc7b9bc0/httpx/_main.py#L207
"""
if name == "connection.connect_tcp.complete":
stream = info["return_value"]
server_addr = stream.get_extra_info("server_addr")
client_addr = stream.get_extra_info("client_addr")
self._logger.debug(f"* Connected from {client_addr[0]!r} to {server_addr[0]!r} on port {server_addr[1]}")
elif name == "connection.start_tls.complete": # pragma: no cover
stream = info["return_value"]
ssl_object = stream.get_extra_info("ssl_object")
version = ssl_object.version()
cipher = ssl_object.cipher()
alpn = ssl_object.selected_alpn_protocol()
self._logger.debug(f"* SSL established using {version!r} / {cipher[0]!r}, ALPN protocol: {alpn!r}")
elif name == "http2.send_request_headers.started":
self._logger.debug(f"* HTTP/2 stream_id: {info['stream_id']}")
async def aclose(self):
async def close_client(client):
try:
await client.aclose()
except httpx.HTTPError:
pass
await asyncio.gather(*[close_client(client) for client in self._clients.values()], return_exceptions=False)
@staticmethod
def extract_kwargs_clients(kwargs):
kwargs_clients = {}
if 'verify' in kwargs:
kwargs_clients['verify'] = kwargs.pop('verify')
if 'max_redirects' in kwargs:
kwargs_clients['max_redirects'] = kwargs.pop('max_redirects')
if 'allow_redirects' in kwargs:
# see https://github.com/encode/httpx/pull/1808
kwargs['follow_redirects'] = kwargs.pop('allow_redirects')
return kwargs_clients
@staticmethod
def extract_do_raise_for_httperror(kwargs):
do_raise_for_httperror = True
if 'raise_for_httperror' in kwargs:
do_raise_for_httperror = kwargs['raise_for_httperror']
del kwargs['raise_for_httperror']
return do_raise_for_httperror
@staticmethod
def patch_response(response, do_raise_for_httperror):
if isinstance(response, httpx.Response):
# requests compatibility (response is not streamed)
# see also https://www.python-httpx.org/compatibility/#checking-for-4xx5xx-responses
response.ok = not response.is_error
# raise an exception
if do_raise_for_httperror:
raise_for_httperror(response)
return response
def is_valid_response(self, response):
# pylint: disable=too-many-boolean-expressions
if (
(self.retry_on_http_error is True and 400 <= response.status_code <= 599)
or (isinstance(self.retry_on_http_error, list) and response.status_code in self.retry_on_http_error)
or (isinstance(self.retry_on_http_error, int) and response.status_code == self.retry_on_http_error)
):
return False
return True
async def call_client(self, stream, method, url, **kwargs):
retries = self.retries
was_disconnected = False
do_raise_for_httperror = Network.extract_do_raise_for_httperror(kwargs)
kwargs_clients = Network.extract_kwargs_clients(kwargs)
while retries >= 0: # pragma: no cover
client = await self.get_client(**kwargs_clients)
try:
if stream:
response = client.stream(method, url, **kwargs)
else:
response = await client.request(method, url, **kwargs)
if self.is_valid_response(response) or retries <= 0:
return Network.patch_response(response, do_raise_for_httperror)
except httpx.RemoteProtocolError as e:
if not was_disconnected:
# the server has closed the connection:
# try again without decreasing the retries variable & with a new HTTP client
was_disconnected = True
await client.aclose()
self._logger.warning('httpx.RemoteProtocolError: the server has disconnected, retrying')
continue
if retries <= 0:
raise e
except (httpx.RequestError, httpx.HTTPStatusError) as e:
if retries <= 0:
raise e
retries -= 1
async def request(self, method, url, **kwargs):
return await self.call_client(False, method, url, **kwargs)
async def stream(self, method, url, **kwargs):
return await self.call_client(True, method, url, **kwargs)
@classmethod
async def aclose_all(cls):
await asyncio.gather(*[network.aclose() for network in NETWORKS.values()], return_exceptions=False)
def __repr__(self):
return f"<{self.__class__.__name__} logger_name={self._settings.logger_name!r}>"
def get_network(name=None):
return NETWORKS.get(name or DEFAULT_NAME)
class NetwortSettingsDecoder:
"""Convert a description of a network in settings.yml to a NetworkSettings instance"""
def check_network_configuration():
async def check():
exception_count = 0
for network in NETWORKS.values():
if network.using_tor_proxy:
try:
await network.get_client()
except Exception: # pylint: disable=broad-except
network._logger.exception('Error') # pylint: disable=protected-access
exception_count += 1
return exception_count
future = asyncio.run_coroutine_threadsafe(check(), get_loop())
exception_count = future.result()
if exception_count > 0:
raise RuntimeError("Invalid network configuration")
def initialize(settings_engines=None, settings_outgoing=None):
# pylint: disable=import-outside-toplevel)
from searx.engines import engines
from searx import settings
# pylint: enable=import-outside-toplevel)
settings_engines = settings_engines or settings['engines']
settings_outgoing = settings_outgoing or settings['outgoing']
# default parameters for AsyncHTTPTransport
# see https://github.com/encode/httpx/blob/e05a5372eb6172287458b37447c30f650047e1b8/httpx/_transports/default.py#L108-L121 # pylint: disable=line-too-long
default_params = {
'enable_http': False,
'verify': settings_outgoing['verify'],
'enable_http2': settings_outgoing['enable_http2'],
'max_connections': settings_outgoing['pool_connections'],
'max_keepalive_connections': settings_outgoing['pool_maxsize'],
'keepalive_expiry': settings_outgoing['keepalive_expiry'],
'local_addresses': settings_outgoing['source_ips'],
'using_tor_proxy': settings_outgoing['using_tor_proxy'],
'proxies': settings_outgoing['proxies'],
'max_redirects': settings_outgoing['max_redirects'],
'retries': settings_outgoing['retries'],
'retry_on_http_error': None,
# requests compatibility when reading proxy settings from settings.yml
PROXY_PATTERN_MAPPING = {
'http': 'http://',
'https': 'https://',
'socks4': 'socks4://',
'socks5': 'socks5://',
'socks5h': 'socks5h://',
'http:': 'http://',
'https:': 'https://',
'socks4:': 'socks4://',
'socks5:': 'socks5://',
'socks5h:': 'socks5h://',
}
def new_network(params, logger_name=None):
nonlocal default_params
result = {}
result.update(default_params)
result.update(params)
if logger_name:
result['logger_name'] = logger_name
return Network(**result)
@classmethod
def from_dict(cls, network_settings: Dict[str, Any]) -> NetworkSettings:
# Decode the parameters that require it; the other parameters are left as they are
decoders = {
"proxies": cls._decode_proxies,
"local_addresses": cls._decode_local_addresses,
"retry_strategy": cls._decode_retry_strategy,
}
for key, decode_func in decoders.items():
if key not in network_settings:
continue
if network_settings[key] is None:
# None is seen as not set: rely on the default values from NetworkSettings
del network_settings[key]
else:
network_settings[key] = decode_func(network_settings[key])
# Relies on the default values of NetworkSettings for unset parameters
return NetworkSettings(**network_settings)
def iter_networks():
nonlocal settings_engines
@classmethod
def _decode_proxies(cls, proxies) -> Dict[str, List[str]]:
if isinstance(proxies, str):
# for example:
# proxies: socks5://localhost:8000
proxies = {'all://': [proxies]}
elif isinstance(proxies, list):
# for example:
# proxies:
# - socks5h://localhost:8000
# - socks5h://localhost:8001
proxies = {'all://': proxies}
if not isinstance(proxies, dict):
raise ValueError('proxies type has to be str, list, dict or None')
# Here we are sure to have
# proxies = {
# pattern: a_value
# }
# with a_value that can be either a string or a list.
# Now, we make sure that a_value is always a list of strings.
# Also, we keep compatibility with requests regarding the patterns:
# see https://www.python-httpx.org/compatibility/#proxy-keys
result = {}
for pattern, proxy_list in proxies.items():
pattern = cls.PROXY_PATTERN_MAPPING.get(pattern, pattern)
if isinstance(proxy_list, str):
proxy_list = [proxy_list]
if not isinstance(proxy_list, list):
raise ValueError('proxy list')
for proxy in proxy_list:
if not isinstance(proxy, str):
raise ValueError(f'{repr(proxy)} : an URL is expected')
result[pattern] = proxy_list
return result
@staticmethod
def _decode_local_addresses(ip_addresses: Union[str, List[str]]) -> List[TYPE_IP_ANY]:
if isinstance(ip_addresses, str):
ip_addresses = [ip_addresses]
if not isinstance(ip_addresses, list):
raise ValueError('IP address must be either None or a string or a list of strings')
# check IP address syntax
result = []
for address in ip_addresses:
if not isinstance(address, str):
raise ValueError(f'An {address!r} must be an IP address written as a string')
if '/' in address:
result.append(ipaddress.ip_network(address, False))
else:
result.append(ipaddress.ip_address(address))
return result
@staticmethod
def _decode_retry_strategy(retry_strategy: str) -> RetryStrategy:
for member in RetryStrategy:
if member.name.lower() == retry_strategy.lower():
return member
raise ValueError(f"{retry_strategy} is not a RetryStrategy")
class NetworkManager:
"""Contains all the Network instances.
By default, there is one default network with the default parameters,
so @searx.network.provide_networkcontext() works out of the box.
"""
DEFAULT_NAME = '__DEFAULT__'
def __init__(self):
# Create a default network so scripts in searxng_extra don't have load settings.yml
self.networks: Dict[str, Network] = {NetworkManager.DEFAULT_NAME: Network.from_dict()}
def get(self, name: Optional[str] = None):
return self.networks[name or NetworkManager.DEFAULT_NAME]
def initialize_from_settings(self, settings_engines, settings_outgoing, check=True):
# pylint: disable=too-many-branches
from searx.engines import engines # pylint: disable=import-outside-toplevel
# Default parameters for HTTPTransport
# see https://github.com/encode/httpx/blob/e05a5372eb6172287458b37447c30f650047e1b8/httpx/_transports/default.py#L108-L121 # pylint: disable=line-too-long
default_network_settings = {
'verify': settings_outgoing['verify'],
'enable_http': settings_outgoing['enable_http'],
'enable_http2': settings_outgoing['enable_http2'],
'max_connections': settings_outgoing['pool_connections'], # different because of historical reason
'max_keepalive_connections': settings_outgoing['pool_maxsize'], # different because of historical reason
'keepalive_expiry': settings_outgoing['keepalive_expiry'],
'max_redirects': settings_outgoing['max_redirects'],
'retries': settings_outgoing['retries'],
'proxies': settings_outgoing['proxies'],
'local_addresses': settings_outgoing['source_ips'], # different because of historical reason
'using_tor_proxy': settings_outgoing['using_tor_proxy'],
'retry_on_http_error': None,
}
def new_network(network_settings: Dict[str, Any], logger_name: Optional[str] = None):
nonlocal default_network_settings
result = {}
result.update(default_network_settings)
result.update(network_settings)
if logger_name:
result['logger_name'] = logger_name
return Network.from_dict(**result)
# ipv4 and ipv6 are always defined
self.networks = {
NetworkManager.DEFAULT_NAME: new_network({}, logger_name='default'),
'ipv4': new_network({'local_addresses': '0.0.0.0'}, logger_name='ipv4'),
'ipv6': new_network({'local_addresses': '::'}, logger_name='ipv6'),
}
# define networks from outgoing.networks. Example of configuration:
#
# outgoing:
# networks:
# my_proxy:
# proxies: http://localhost:1337
#
for network_name, network_dict in settings_outgoing['networks'].items():
self.networks[network_name] = new_network(network_dict, logger_name=network_name)
# Get the engine network settings directly from the engine modules and settings.yml (not as NetworkSettings)
engine_network_dict_settings = {}
for engine_spec in settings_engines:
engine_name = engine_spec['name']
engine = engines.get(engine_name)
if engine is None:
continue
engine_network_dict_settings[engine_name] = self._get_engine_network_settings(
engine_name, engine, default_network_settings
)
# Define networks from engines.[i].network (except references)
for engine_name, network_dict in engine_network_dict_settings.items():
if isinstance(network_dict, dict):
self.networks[engine_name] = new_network(network_dict, logger_name=engine_name)
# Define networks from engines.[i].network (only references)
for engine_name, network_dict in engine_network_dict_settings.items():
if isinstance(network_dict, str):
self.networks[engine_name] = self.networks[network_dict]
# The /image_proxy endpoint has a dedicated network using the same parameters
# as the default network, but HTTP/2 is disabled. It decreases the CPU load average,
# and the total time is more or less the same.
if 'image_proxy' not in self.networks:
image_proxy_params = default_network_settings.copy()
image_proxy_params['enable_http2'] = False
self.networks['image_proxy'] = new_network(image_proxy_params, logger_name='image_proxy')
# Define a network the autocompletion
if 'autocomplete' not in self.networks:
self.networks['autocomplete'] = new_network(default_network_settings, logger_name='autocomplete')
# Check if each network is valid:
# * one HTTP client is instantiated
# --> Tor connectivity is checked if using_tor_proxy is True
if check:
exception_count = 0
for network in self.networks.values():
if not network.check_configuration():
exception_count += 1
if exception_count > 0:
raise RuntimeError("Invalid network configuration")
@staticmethod
def _get_engine_network_settings(engine_name, engine, default_network_settings):
if hasattr(engine, 'network'):
# The network configuration is defined in settings.yml inside a network key.
# For example:
#
# - name: arxiv
# engine: arxiv
# shortcut: arx
# network:
# http2: false
# proxies: socks5h://localhost:1337
#
network = getattr(engine, 'network', None)
yield engine_name, engine, network
if NETWORKS:
done()
NETWORKS.clear()
NETWORKS[DEFAULT_NAME] = new_network({}, logger_name='default')
NETWORKS['ipv4'] = new_network({'local_addresses': '0.0.0.0'}, logger_name='ipv4')
NETWORKS['ipv6'] = new_network({'local_addresses': '::'}, logger_name='ipv6')
# define networks from outgoing.networks
for network_name, network in settings_outgoing['networks'].items():
NETWORKS[network_name] = new_network(network, logger_name=network_name)
# define networks from engines.[i].network (except references)
for engine_name, engine, network in iter_networks():
if network is None:
network = {}
for attribute_name, attribute_value in default_params.items():
if hasattr(engine, attribute_name):
network[attribute_name] = getattr(engine, attribute_name)
else:
network[attribute_name] = attribute_value
NETWORKS[engine_name] = new_network(network, logger_name=engine_name)
elif isinstance(network, dict):
NETWORKS[engine_name] = new_network(network, logger_name=engine_name)
# define networks from engines.[i].network (references)
for engine_name, engine, network in iter_networks():
if isinstance(network, str):
NETWORKS[engine_name] = NETWORKS[network]
# the /image_proxy endpoint has a dedicated network.
# same parameters than the default network, but HTTP/2 is disabled.
# It decreases the CPU load average, and the total time is more or less the same
if 'image_proxy' not in NETWORKS:
image_proxy_params = default_params.copy()
image_proxy_params['enable_http2'] = False
NETWORKS['image_proxy'] = new_network(image_proxy_params, logger_name='image_proxy')
if not isinstance(network, (dict, str)):
raise ValueError(f'Engine {engine_name}: network must be a dictionnary or string')
return network
# The network settings are mixed with the other engine settings.
# The code checks if the keys from default_network_settings are defined in the engine module
#
# For example:
#
# - name: arxiv
# engine: arxiv
# shortcut: arx
# http2: false
# proxies: socks5h://localhost:1337
#
return {
attribute_name: getattr(engine, attribute_name)
for attribute_name in default_network_settings.keys()
if hasattr(engine, attribute_name)
}
@atexit.register
def done():
"""Close all HTTP client
Avoid a warning at exit
See https://github.com/encode/httpx/pull/2026
Note: since Network.aclose has to be async, it is not possible to call this method on Network.__del__
So Network.aclose is called here using atexit.register
"""
try:
loop = get_loop()
if loop:
future = asyncio.run_coroutine_threadsafe(Network.aclose_all(), loop)
# wait 3 seconds to close the HTTP clients
future.result(3)
finally:
NETWORKS.clear()
NETWORKS[DEFAULT_NAME] = Network()
NETWORKS = NetworkManager()

View File

@ -3,12 +3,12 @@
"""
from searx import get_setting
from searx.exceptions import (
SearxEngineAccessDeniedException,
SearxEngineCaptchaException,
SearxEngineTooManyRequestsException,
SearxEngineAccessDeniedException,
)
from searx import get_setting
def is_cloudflare_challenge(resp):

View File

@ -18,7 +18,7 @@ from searx import logger
from searx.plugins import plugins
from searx.search.models import EngineRef, SearchQuery
from searx.engines import load_engines
from searx.network import initialize as initialize_network, check_network_configuration
from searx.network import NETWORKS
from searx.metrics import initialize as initialize_metrics, counter_inc, histogram_observe_time
from searx.search.processors import PROCESSORS, initialize as initialize_processors
from searx.search.checker import initialize as initialize_checker
@ -30,9 +30,7 @@ logger = logger.getChild('search')
def initialize(settings_engines=None, enable_checker=False, check_network=False, enable_metrics=True):
settings_engines = settings_engines or settings['engines']
load_engines(settings_engines)
initialize_network(settings_engines, settings['outgoing'])
if check_network:
check_network_configuration()
NETWORKS.initialize_from_settings(settings_engines, settings['outgoing'], check=check_network)
initialize_metrics([engine['name'] for engine in settings_engines], enable_metrics)
initialize_processors(settings_engines)
if enable_checker:

View File

@ -13,12 +13,14 @@ from urllib.parse import urlparse
import re
import httpx
from searx import network, logger
from searx import logger
from searx.network import NETWORKS
from searx.utils import gen_useragent, detect_language
from searx.results import ResultContainer
from searx.search.models import SearchQuery, EngineRef
from searx.search.processors import EngineProcessor
from searx.metrics import counter_inc
from searx.exceptions import SearxEngineResponseException
logger = logger.getChild('searx.search.checker')
@ -72,8 +74,8 @@ def _download_and_check_if_image(image_url: str) -> bool:
a = time()
try:
# use "image_proxy" (avoid HTTP/2)
network.set_context_network_name('image_proxy')
r, stream = network.stream(
network_context = NETWORKS.get('image_proxy').get_context()
r = network_context.stream(
'GET',
image_url,
timeout=10.0,
@ -96,7 +98,6 @@ def _download_and_check_if_image(image_url: str) -> bool:
else:
is_image = False
del r
del stream
return is_image
except httpx.TimeoutException:
logger.error('Timeout for %s: %i', image_url, int(time() - a))
@ -104,6 +105,9 @@ def _download_and_check_if_image(image_url: str) -> bool:
except httpx.HTTPError:
logger.exception('Exception for %s', image_url)
return False
except SearxEngineResponseException:
logger.exception('Exception for %s', image_url)
return False
return False

View File

@ -10,7 +10,7 @@ from typing import Dict, Union
from searx import settings, logger
from searx.engines import engines
from searx.network import get_time_for_thread, get_network
from searx.network import NETWORKS
from searx.metrics import histogram_observe, counter_inc, count_exception, count_error
from searx.exceptions import SearxEngineAccessDeniedException, SearxEngineResponseException
from searx.utils import get_engine_from_settings
@ -64,7 +64,7 @@ class EngineProcessor(ABC):
self.engine = engine
self.engine_name = engine_name
self.logger = engines[engine_name].logger
key = get_network(self.engine_name)
key = NETWORKS.get(self.engine_name)
key = id(key) if key else self.engine_name
self.suspended_status = SUSPENDED_STATUS.setdefault(key, SuspendedStatus())
@ -105,26 +105,25 @@ class EngineProcessor(ABC):
suspended_time = exception_or_message.suspended_time
self.suspended_status.suspend(suspended_time, error_message) # pylint: disable=no-member
def _extend_container_basic(self, result_container, start_time, search_results):
def _extend_container_basic(self, result_container, start_time, search_results, network_time=None):
# update result_container
result_container.extend(self.engine_name, search_results)
engine_time = default_timer() - start_time
page_load_time = get_time_for_thread()
result_container.add_timing(self.engine_name, engine_time, page_load_time)
result_container.add_timing(self.engine_name, engine_time, network_time)
# metrics
counter_inc('engine', self.engine_name, 'search', 'count', 'successful')
histogram_observe(engine_time, 'engine', self.engine_name, 'time', 'total')
if page_load_time is not None:
histogram_observe(page_load_time, 'engine', self.engine_name, 'time', 'http')
if network_time is not None:
histogram_observe(network_time, 'engine', self.engine_name, 'time', 'http')
def extend_container(self, result_container, start_time, search_results):
def extend_container(self, result_container, start_time, search_results, network_time=None):
if getattr(threading.current_thread(), '_timeout', False):
# the main thread is not waiting anymore
self.handle_exception(result_container, 'timeout', None)
else:
# check if the engine accepted the request
if search_results is not None:
self._extend_container_basic(result_container, start_time, search_results)
self._extend_container_basic(result_container, start_time, search_results, network_time)
self.suspended_status.resume()
def extend_container_if_suspended(self, result_container):

View File

@ -7,6 +7,8 @@
from timeit import default_timer
import asyncio
import ssl
from typing import Dict, List
import httpx
import searx.network
@ -40,13 +42,8 @@ class OnlineProcessor(EngineProcessor):
engine_type = 'online'
def initialize(self):
# set timeout for all HTTP requests
searx.network.set_timeout_for_thread(self.engine.timeout, start_time=default_timer())
# reset the HTTP total time
searx.network.reset_time_for_thread()
# set the network
searx.network.set_context_network_name(self.engine_name)
super().initialize()
with searx.network.networkcontext_manager(self.engine_name, self.engine.timeout) as network_context:
network_context.call(super().initialize)
def get_params(self, search_query, engine_category):
"""Returns a set of :ref:`request params <engine request online>` or ``None``
@ -110,7 +107,8 @@ class OnlineProcessor(EngineProcessor):
else:
req = searx.network.post
request_args['data'] = params['data']
if params['data']:
request_args['data'] = params['data']
# send the request
response = req(params['url'], **request_args)
@ -131,7 +129,7 @@ class OnlineProcessor(EngineProcessor):
return response
def _search_basic(self, query, params):
def _search_basic(self, query, params) -> List[Dict]:
# update request parameters dependent on
# search-engine (contained in engines folder)
self.engine.request(query, params)
@ -151,21 +149,18 @@ class OnlineProcessor(EngineProcessor):
return self.engine.response(response)
def search(self, query, params, result_container, start_time, timeout_limit):
# set timeout for all HTTP requests
searx.network.set_timeout_for_thread(timeout_limit, start_time=start_time)
# reset the HTTP total time
searx.network.reset_time_for_thread()
# set the network
searx.network.set_context_network_name(self.engine_name)
try:
# send requests and parse the results
search_results = self._search_basic(query, params)
self.extend_container(result_container, start_time, search_results)
with searx.network.networkcontext_manager(self.engine_name, timeout_limit, start_time) as network_context:
# send requests and parse the results
search_results = network_context.call(self._search_basic, query, params)
# extend_container in the network context to get the HTTP runtime
self.extend_container(
result_container, start_time, search_results, network_time=network_context.get_http_runtime()
)
except ssl.SSLError as e:
# requests timeout (connect or read)
self.handle_exception(result_container, e, suspend=True)
self.logger.error("SSLError {}, verify={}".format(e, searx.network.get_network(self.engine_name).verify))
self.logger.error("SSLError {}, verify={}".format(e, searx.network.NETWORKS.get(self.engine_name).verify))
except (httpx.TimeoutException, asyncio.TimeoutError) as e:
# requests timeout (connect or read)
self.handle_exception(result_container, e, suspend=True)

View File

@ -12,6 +12,8 @@ __all__ = [
'CATEGORY_GROUPS',
'STYLE_NAMES',
'BRAND_CUSTOM_LINKS',
'WEATHER_TERMS',
'SOCIAL_MEDIA_TERMS',
]
CONSTANT_NAMES = {
@ -27,6 +29,8 @@ CATEGORY_NAMES = {
'SOCIAL_MEDIA': 'social media',
'IMAGES': 'images',
'VIDEOS': 'videos',
'RADIO': 'radio',
'TV': 'tv',
'IT': 'it',
'NEWS': 'news',
'MAP': 'map',
@ -57,3 +61,37 @@ BRAND_CUSTOM_LINKS = {
'UPTIME': 'Uptime',
'ABOUT': 'About',
}
WEATHER_TERMS = {
'AVERAGE TEMP.': 'Average temp.',
'CLOUD COVER': 'Cloud cover',
'CONDITION': 'Condition',
'CURRENT CONDITION': 'Current condition',
'EVENING': 'Evening',
'FEELS LIKE': 'Feels like',
'HUMIDITY': 'Humidity',
'MAX TEMP.': 'Max temp.',
'MIN TEMP.': 'Min temp.',
'MORNING': 'Morning',
'NIGHT': 'Night',
'NOON': 'Noon',
'PRESSURE': 'Pressure',
'SUNRISE': 'Sunrise',
'SUNSET': 'Sunset',
'TEMPERATURE': 'Temperature',
'UV INDEX': 'UV index',
'VISIBILITY': 'Visibility',
'WIND': 'Wind',
}
SOCIAL_MEDIA_TERMS = {
'SUBSCRIBERS': 'subscribers',
'POSTS': 'posts',
'ACTIVE USERS': 'active users',
'COMMENTS': 'comments',
'USER': 'user',
'COMMUNITY': 'community',
'POINTS': 'points',
'TITLE': 'title',
'AUTHOR': 'author',
}

View File

@ -438,32 +438,19 @@ engines:
shortcut: bt
disabled: true
- name: ccc-tv
engine: xpath
paging: false
search_url: https://media.ccc.de/search/?q={query}
url_xpath: //div[@class="caption"]/h3/a/@href
title_xpath: //div[@class="caption"]/h3/a/text()
content_xpath: //div[@class="caption"]/h4/@title
categories: videos
disabled: true
shortcut: c3tv
about:
website: https://media.ccc.de/
wikidata_id: Q80729951
official_api_documentation: https://github.com/voc/voctoweb
use_official_api: false
require_api_key: false
results: HTML
# We don't set language: de here because media.ccc.de is not just
# for a German audience. It contains many English videos and many
# German videos have English subtitles.
- name: openverse
engine: openverse
categories: images
shortcut: opv
- name: media.ccc.de
engine: ccc_media
shortcut: c3tv
# We don't set language: de here because media.ccc.de is not just
# for a German audience. It contains many English videos and many
# German videos have English subtitles.
disabled: true
- name: chefkoch
engine: chefkoch
shortcut: chef
@ -1060,6 +1047,16 @@ engines:
shortcut: loc
categories: images
- name: libretranslate
engine: libretranslate
# https://github.com/LibreTranslate/LibreTranslate?tab=readme-ov-file#mirrors
base_url:
- https://translate.terraprint.co
- https://trans.zillyhuhn.com
# api_key: abc123
shortcut: lt
disabled: true
- name: lingva
engine: lingva
shortcut: lv

View File

@ -210,9 +210,11 @@ SCHEMA = {
'outgoing': {
'useragent_suffix': SettingsValue(str, ''),
'request_timeout': SettingsValue(numbers.Real, 3.0),
'enable_http2': SettingsValue(bool, True),
'verify': SettingsValue((bool, str), True),
'max_request_timeout': SettingsValue((None, numbers.Real), None),
# defaut network
'verify': SettingsValue((bool, str), True),
'enable_http': SettingsValue(bool, False),
'enable_http2': SettingsValue(bool, True),
'pool_connections': SettingsValue(int, 100),
'pool_maxsize': SettingsValue(int, 10),
'keepalive_expiry': SettingsValue(numbers.Real, 5.0),

View File

@ -218,7 +218,7 @@ module.exports = function (grunt) {
name: "addAttributesToSVGElement",
params: {
attributes: [
{ "aria-hidden": "true" }
{ "class": "ionicon", "aria-hidden": "true" }
]
}
}

View File

@ -1,25 +1,25 @@
{# this file was generated by searx/static/themes/simple/gruntfile.js #}
{%- set icons = {
'warning':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M256 80c-8.66 0-16.58 7.36-16 16l8 216a8 8 0 008 8h0a8 8 0 008-8l8-216c.58-8.64-7.34-16-16-16z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><circle cx="256" cy="416" r="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'close':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368"/></svg>',
'chevron-up-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M112 328l144-144 144 144"/></svg>',
'chevron-right':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M184 112l144 144-144 144"/></svg>',
'chevron-left':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M328 112L184 256l144 144"/></svg>',
'menu-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M262.29 192.31a64 64 0 1057.4 57.4 64.13 64.13 0 00-57.4-57.4zM416.39 256a154.34 154.34 0 01-1.53 20.79l45.21 35.46a10.81 10.81 0 012.45 13.75l-42.77 74a10.81 10.81 0 01-13.14 4.59l-44.9-18.08a16.11 16.11 0 00-15.17 1.75A164.48 164.48 0 01325 400.8a15.94 15.94 0 00-8.82 12.14l-6.73 47.89a11.08 11.08 0 01-10.68 9.17h-85.54a11.11 11.11 0 01-10.69-8.87l-6.72-47.82a16.07 16.07 0 00-9-12.22 155.3 155.3 0 01-21.46-12.57 16 16 0 00-15.11-1.71l-44.89 18.07a10.81 10.81 0 01-13.14-4.58l-42.77-74a10.8 10.8 0 012.45-13.75l38.21-30a16.05 16.05 0 006-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 00-6.07-13.94l-38.19-30A10.81 10.81 0 0149.48 186l42.77-74a10.81 10.81 0 0113.14-4.59l44.9 18.08a16.11 16.11 0 0015.17-1.75A164.48 164.48 0 01187 111.2a15.94 15.94 0 008.82-12.14l6.73-47.89A11.08 11.08 0 01213.23 42h85.54a11.11 11.11 0 0110.69 8.87l6.72 47.82a16.07 16.07 0 009 12.22 155.3 155.3 0 0121.46 12.57 16 16 0 0015.11 1.71l44.89-18.07a10.81 10.81 0 0113.14 4.58l42.77 74a10.8 10.8 0 01-2.45 13.75l-38.21 30a16.05 16.05 0 00-6.05 14.08c.33 4.14.55 8.3.55 12.47z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'ellipsis-vertical-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><circle cx="256" cy="256" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="416" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="96" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
'magnet-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M421.83 293.82A144 144 0 00218.18 90.17M353.94 225.94a48 48 0 00-67.88-67.88" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M192 464v-48M90.18 421.82l33.94-33.94M48 320h48"/><path d="M286.06 158.06L172.92 271.19a32 32 0 01-45.25 0L105 248.57a32 32 0 010-45.26L218.18 90.17M421.83 293.82L308.69 407a32 32 0 01-45.26 0l-22.62-22.63a32 32 0 010-45.26l113.13-113.17M139.6 169.98l67.88 67.89M275.36 305.75l67.89 67.88" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/></svg>',
'globe-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M117.33 117.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 394.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32" d="M256 48v416M464 256H48"/></svg>',
'search-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M221.09 64a157.09 157.09 0 10157.09 157.09A157.1 157.1 0 00221.09 64z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M338.29 338.29L448 448"/></svg>',
'image-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><rect x="48" y="80" width="416" height="352" rx="48" ry="48" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><circle cx="336" cy="176" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M304 335.79l-90.66-90.49a32 32 0 00-43.87-1.3L48 352M224 432l123.34-123.34a32 32 0 0143.11-2L464 368" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'play-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
'newspaper-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M368 415.86V72a24.07 24.07 0 00-24-24H72a24.07 24.07 0 00-24 24v352a40.12 40.12 0 0040 40h328" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><path d="M416 464h0a48 48 0 01-48-48V128h72a24 24 0 0124 24v264a48 48 0 01-48 48z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M240 128h64M240 192h64M112 256h192M112 320h192M112 384h192"/><path d="M176 208h-64a16 16 0 01-16-16v-64a16 16 0 0116-16h64a16 16 0 0116 16v64a16 16 0 01-16 16z"/></svg>',
'location-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M256 48c-79.5 0-144 61.39-144 137 0 87 96 224.87 131.25 272.49a15.77 15.77 0 0025.5 0C304 409.89 400 272.07 400 185c0-75.61-64.5-137-144-137z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><circle cx="256" cy="192" r="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'musical-notes-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M192 218v-6c0-14.84 10-27 24.24-30.59l174.59-46.68A20 20 0 01416 154v22" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M416 295.94v80c0 13.91-8.93 25.59-22 30l-22 8c-25.9 8.72-52-10.42-52-38h0a33.37 33.37 0 0123-32l51-18.15c13.07-4.4 22-15.94 22-29.85V58a10 10 0 00-12.6-9.61L204 102a16.48 16.48 0 00-12 16v226c0 13.91-8.93 25.6-22 30l-52 18c-13.88 4.68-22 17.22-22 32h0c0 27.58 26.52 46.55 52 38l22-8c13.07-4.4 22-16.08 22-30v-80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'layers-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M434.8 137.65l-149.36-68.1c-16.19-7.4-42.69-7.4-58.88 0L77.3 137.65c-17.6 8-17.6 21.09 0 29.09l148 67.5c16.89 7.7 44.69 7.7 61.58 0l148-67.5c17.52-8 17.52-21.1-.08-29.09zM160 308.52l-82.7 37.11c-17.6 8-17.6 21.1 0 29.1l148 67.5c16.89 7.69 44.69 7.69 61.58 0l148-67.5c17.6-8 17.6-21.1 0-29.1l-79.94-38.47" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M160 204.48l-82.8 37.16c-17.6 8-17.6 21.1 0 29.1l148 67.49c16.89 7.7 44.69 7.7 61.58 0l148-67.49c17.7-8 17.7-21.1.1-29.1L352 204.48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'school-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M32 192L256 64l224 128-224 128L32 192z"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M112 240v128l144 80 144-80V240M480 368V192M256 320v128"/></svg>',
'file-tray-full-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M384 80H128c-26 0-43 14-48 40L48 272v112a48.14 48.14 0 0048 48h320a48.14 48.14 0 0048-48V272l-32-152c-5-27-23-40-48-40z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M48 272h144M320 272h144M192 272a64 64 0 00128 0M144 144h224M128 208h256"/></svg>',
'people-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M402 168c-2.93 40.67-33.1 72-66 72s-63.12-31.32-66-72c-3-42.31 26.37-72 66-72s69 30.46 66 72z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M336 304c-65.17 0-127.84 32.37-143.54 95.41-2.08 8.34 3.15 16.59 11.72 16.59h263.65c8.57 0 13.77-8.25 11.72-16.59C463.85 335.36 401.18 304 336 304z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M200 185.94c-2.34 32.48-26.72 58.06-53 58.06s-50.7-25.57-53-58.06C91.61 152.15 115.34 128 147 128s55.39 24.77 53 57.94z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M206 306c-18.05-8.27-37.93-11.45-59-11.45-52 0-102.1 25.85-114.65 76.2-1.65 6.66 2.53 13.25 9.37 13.25H154" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32"/></svg>',
'heart-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M352.92 80C288 80 256 144 256 144s-32-64-96.92-64c-52.76 0-94.54 44.14-95.08 96.81-1.1 109.33 86.73 187.08 183 252.42a16 16 0 0018 0c96.26-65.34 184.09-143.09 183-252.42-.54-52.67-42.32-96.81-95.08-96.81z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'warning':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M256 80c-8.66 0-16.58 7.36-16 16l8 216a8 8 0 008 8h0a8 8 0 008-8l8-216c.58-8.64-7.34-16-16-16z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><circle cx="256" cy="416" r="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'close':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368"/></svg>',
'chevron-up-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M112 328l144-144 144 144"/></svg>',
'chevron-right':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M184 112l144 144-144 144"/></svg>',
'chevron-left':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M328 112L184 256l144 144"/></svg>',
'menu-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M262.29 192.31a64 64 0 1057.4 57.4 64.13 64.13 0 00-57.4-57.4zM416.39 256a154.34 154.34 0 01-1.53 20.79l45.21 35.46a10.81 10.81 0 012.45 13.75l-42.77 74a10.81 10.81 0 01-13.14 4.59l-44.9-18.08a16.11 16.11 0 00-15.17 1.75A164.48 164.48 0 01325 400.8a15.94 15.94 0 00-8.82 12.14l-6.73 47.89a11.08 11.08 0 01-10.68 9.17h-85.54a11.11 11.11 0 01-10.69-8.87l-6.72-47.82a16.07 16.07 0 00-9-12.22 155.3 155.3 0 01-21.46-12.57 16 16 0 00-15.11-1.71l-44.89 18.07a10.81 10.81 0 01-13.14-4.58l-42.77-74a10.8 10.8 0 012.45-13.75l38.21-30a16.05 16.05 0 006-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 00-6.07-13.94l-38.19-30A10.81 10.81 0 0149.48 186l42.77-74a10.81 10.81 0 0113.14-4.59l44.9 18.08a16.11 16.11 0 0015.17-1.75A164.48 164.48 0 01187 111.2a15.94 15.94 0 008.82-12.14l6.73-47.89A11.08 11.08 0 01213.23 42h85.54a11.11 11.11 0 0110.69 8.87l6.72 47.82a16.07 16.07 0 009 12.22 155.3 155.3 0 0121.46 12.57 16 16 0 0015.11 1.71l44.89-18.07a10.81 10.81 0 0113.14 4.58l42.77 74a10.8 10.8 0 01-2.45 13.75l-38.21 30a16.05 16.05 0 00-6.05 14.08c.33 4.14.55 8.3.55 12.47z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'ellipsis-vertical-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><circle cx="256" cy="256" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="416" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="96" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
'magnet-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M421.83 293.82A144 144 0 00218.18 90.17M353.94 225.94a48 48 0 00-67.88-67.88" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M192 464v-48M90.18 421.82l33.94-33.94M48 320h48"/><path d="M286.06 158.06L172.92 271.19a32 32 0 01-45.25 0L105 248.57a32 32 0 010-45.26L218.18 90.17M421.83 293.82L308.69 407a32 32 0 01-45.26 0l-22.62-22.63a32 32 0 010-45.26l113.13-113.17M139.6 169.98l67.88 67.89M275.36 305.75l67.89 67.88" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/></svg>',
'globe-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M117.33 117.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 394.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32" d="M256 48v416M464 256H48"/></svg>',
'search-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M221.09 64a157.09 157.09 0 10157.09 157.09A157.1 157.1 0 00221.09 64z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M338.29 338.29L448 448"/></svg>',
'image-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><rect x="48" y="80" width="416" height="352" rx="48" ry="48" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><circle cx="336" cy="176" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M304 335.79l-90.66-90.49a32 32 0 00-43.87-1.3L48 352M224 432l123.34-123.34a32 32 0 0143.11-2L464 368" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'play-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
'newspaper-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M368 415.86V72a24.07 24.07 0 00-24-24H72a24.07 24.07 0 00-24 24v352a40.12 40.12 0 0040 40h328" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><path d="M416 464h0a48 48 0 01-48-48V128h72a24 24 0 0124 24v264a48 48 0 01-48 48z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M240 128h64M240 192h64M112 256h192M112 320h192M112 384h192"/><path d="M176 208h-64a16 16 0 01-16-16v-64a16 16 0 0116-16h64a16 16 0 0116 16v64a16 16 0 01-16 16z"/></svg>',
'location-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M256 48c-79.5 0-144 61.39-144 137 0 87 96 224.87 131.25 272.49a15.77 15.77 0 0025.5 0C304 409.89 400 272.07 400 185c0-75.61-64.5-137-144-137z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><circle cx="256" cy="192" r="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'musical-notes-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M192 218v-6c0-14.84 10-27 24.24-30.59l174.59-46.68A20 20 0 01416 154v22" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M416 295.94v80c0 13.91-8.93 25.59-22 30l-22 8c-25.9 8.72-52-10.42-52-38h0a33.37 33.37 0 0123-32l51-18.15c13.07-4.4 22-15.94 22-29.85V58a10 10 0 00-12.6-9.61L204 102a16.48 16.48 0 00-12 16v226c0 13.91-8.93 25.6-22 30l-52 18c-13.88 4.68-22 17.22-22 32h0c0 27.58 26.52 46.55 52 38l22-8c13.07-4.4 22-16.08 22-30v-80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'layers-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M434.8 137.65l-149.36-68.1c-16.19-7.4-42.69-7.4-58.88 0L77.3 137.65c-17.6 8-17.6 21.09 0 29.09l148 67.5c16.89 7.7 44.69 7.7 61.58 0l148-67.5c17.52-8 17.52-21.1-.08-29.09zM160 308.52l-82.7 37.11c-17.6 8-17.6 21.1 0 29.1l148 67.5c16.89 7.69 44.69 7.69 61.58 0l148-67.5c17.6-8 17.6-21.1 0-29.1l-79.94-38.47" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M160 204.48l-82.8 37.16c-17.6 8-17.6 21.1 0 29.1l148 67.49c16.89 7.7 44.69 7.7 61.58 0l148-67.49c17.7-8 17.7-21.1.1-29.1L352 204.48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'school-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M32 192L256 64l224 128-224 128L32 192z"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M112 240v128l144 80 144-80V240M480 368V192M256 320v128"/></svg>',
'file-tray-full-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M384 80H128c-26 0-43 14-48 40L48 272v112a48.14 48.14 0 0048 48h320a48.14 48.14 0 0048-48V272l-32-152c-5-27-23-40-48-40z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M48 272h144M320 272h144M192 272a64 64 0 00128 0M144 144h224M128 208h256"/></svg>',
'people-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M402 168c-2.93 40.67-33.1 72-66 72s-63.12-31.32-66-72c-3-42.31 26.37-72 66-72s69 30.46 66 72z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M336 304c-65.17 0-127.84 32.37-143.54 95.41-2.08 8.34 3.15 16.59 11.72 16.59h263.65c8.57 0 13.77-8.25 11.72-16.59C463.85 335.36 401.18 304 336 304z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M200 185.94c-2.34 32.48-26.72 58.06-53 58.06s-50.7-25.57-53-58.06C91.61 152.15 115.34 128 147 128s55.39 24.77 53 57.94z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M206 306c-18.05-8.27-37.93-11.45-59-11.45-52 0-102.1 25.85-114.65 76.2-1.65 6.66 2.53 13.25 9.37 13.25H154" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32"/></svg>',
'heart-outline':'<svg viewBox="0 0 512 512" class="ionicon" aria-hidden="true"><path d="M352.92 80C288 80 256 144 256 144s-32-64-96.92-64c-52.76 0-94.54 44.14-95.08 96.81-1.1 109.33 86.73 187.08 183 252.42a16 16 0 0018 0c96.26-65.34 184.09-143.09 183-252.42-.54-52.67-42.32-96.81-95.08-96.81z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'information-circle-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M248 64C146.39 64 64 146.39 64 248s82.39 184 184 184 184-82.39 184-184S349.61 64 248 64z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M220 220h32v116"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M208 340h88"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" d="M248 130a26 26 0 1026 26 26 26 0 00-26-26z"/></svg>',
}

View File

@ -13,17 +13,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-12 17:28+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Afrikaans <https://translate.codeberg.org/projects/searxng/"
"searxng/af/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\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"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -66,6 +66,16 @@ msgstr "prente"
msgid "videos"
msgstr "video's"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "draadloos"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -157,116 +167,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Aangaande"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "aand"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Oggend"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nag"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Middag"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Geen item gevind"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Bron"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Fout met die laai van die volgende bladsy"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Ongeldige opstellings, redigeer asb jou voorkeure"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ongeldige opstellings"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "soekfout"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "tydsverloop"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "ontledingsfout"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP protokol fout"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "netwerk fout"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL vout: Kon nie sertifikaat verifieer nie"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "onverwagse breek"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP fout"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP koppelingsfout"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proksie fout"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "te veel versoeke"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "toegang geweier"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "bediener API fout"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Opgehef"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minute terug"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} ure, {minutes} minute terug"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Ewekansige getal genereerder"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Genereer verskillende ewekansige waardes"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistiese funksies"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Verwerk {functions} van die argumente"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Kry aanwysings"
@ -278,31 +428,28 @@ msgstr "{title} (VEROUDERD)"
msgid "This entry has been superseded by"
msgstr "Hierdie inskrywing was vervang deur"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanaal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "draadloos"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitsnelheid"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "stemme"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikke"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Taal"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -310,7 +457,7 @@ msgstr ""
"{numCitations} aanhalings vanaf die jaar {firstCitationVelocityYear} tot "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -320,7 +467,7 @@ msgstr ""
"wat nie ondersteun is nie. TinEye ondersteun slegs prente wat JPEG, PNG, "
"GIF, BMP, TIFF of WebP is."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -329,57 +476,41 @@ msgstr ""
"basiese vlak van visuele detail om suksesvol ooreenkomste te "
"identifiseer."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Die prent kon nie afgelaai word nie."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Oggend"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Middag"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "aand"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nag"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "boekgradering"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Lêer kwaliteit"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Skakel snare om na verskillende hash digests."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "vervang Gasheernaam"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Herskryf resultaatgasheername of verwyder resultate op grond van die "
"gasheernaam"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "oop toegang DOI oorskryf"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -387,11 +518,11 @@ msgstr ""
"Vermy betaalmure deur na ope-toegang weergawes van publikasies te herlei "
"wanneer beskikbaar"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Self-inligting"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -399,11 +530,11 @@ msgstr ""
"Vertoon jou IP indien die navraag \"ip\" is en jou gebruiker agent indien"
" die navraag \"user agent\" bevat."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor toets inprop"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -412,7 +543,7 @@ msgstr ""
"uitgang nodus is en stel die gebruiker in kennis indien wel, soos "
"check.torproject.org maar vanaf SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -420,7 +551,7 @@ msgstr ""
"Kon nie die lys van Tor-uitgangsnodes aflaai vanaf: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -428,17 +559,17 @@ msgstr ""
"Jy maak gebruik van Tor en dit lys as of jy hierdie eksterne IP-adres het"
" :{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
"Jy maak gebruik van Tor en dit lys as of jy hierdie eksterne IP-adres het"
" :{ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Spoorsnyer URL verwyderaar"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Verwyder spoorsnyersargumente van die teruggestuurde URL"
@ -455,45 +586,45 @@ msgstr "Gaan na %(search_page)s."
msgid "search page"
msgstr "soekblad"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Skenk"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Voorkeure"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Aangedryf deur"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "'n oop metasoekenjin wat privaatheid respekteer"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Bronkode"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Uitgawe spoorsnyer"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Enjin statistieke"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Openbare instansies"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Privaatheidsbeleid"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontak instansie onderhouer"
@ -1512,3 +1643,4 @@ msgstr "versteek video"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr ""

View File

@ -18,21 +18,20 @@
# Yahya-Lando <Yahya-Lando@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"PO-Revision-Date: 2024-03-25 23:18+0000\n"
"Last-Translator: Yahya-Lando <Yahya-Lando@users.noreply.translate.codeberg."
"org>\n"
"Language-Team: Arabic <https://translate.codeberg.org/projects/searxng/"
"searxng/ar/>\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-21 16:49+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: ar\n"
"Language-Team: Arabic "
"<https://translate.codeberg.org/projects/searxng/searxng/ar/>\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -75,6 +74,16 @@ msgstr "صور"
msgid "videos"
msgstr "ڤيديوهات"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "راديو"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -163,119 +172,259 @@ msgstr "مظلم"
#. BRAND_CUSTOM_LINKS['UPTIME']
#: searx/searxng.msg
msgid "Uptime"
msgstr ""
msgstr "فترة التشغيل"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "حَول"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "مساء"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "صباحا"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "ليلا"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "ظهيرة"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "تعذر العثور على عناصر"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "المصدر"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "حدث خلل أثناء تحميل الصفحة التالية"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "إنّ الإعدادات خاطئة، يرجى تعديل خياراتك"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "إعدادات غير صالحة"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "خطأ في البحث"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "نفذ الوقت"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "خطأ تحليل"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "خطأ في بروتوكول HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "خطأ في الشبكة"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "خطأ SSL: فشل التحقق من صحة الشهادة"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "تعطل غير متوقع"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "خطأ HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "خطأ في اتصال HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "خطأ في وكيل البروكسي"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "أسئلة التحقق"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "الكثير من الطلبات"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "الدخول مرفوض"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "خطأ في API الخادم"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "معلق"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "قبل دقائق"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "قبل {hours} ساعات، {minutes} دقائق"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "مولّد قيمة عشوائية"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "توليد قِيم عشوائية مختلفة"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "الدالات الإحصائية"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "حوسبة معطيات ال{functions}"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "احصل على الاتجاهات"
@ -287,31 +436,28 @@ msgstr "{title} (قديما)"
msgid "This entry has been superseded by"
msgstr "هذا الإدخال تم استبداله بـ"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "القناة"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "راديو"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "معدل البت"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "تصويتات"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "نقرات"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "اللغة"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -319,7 +465,7 @@ msgstr ""
"{numCitation}استجلاب من العام {firstCitationVelocityYear} إلى "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -328,7 +474,7 @@ msgstr ""
"تعذر قراءة عنوان url للصورة. قد يكون هذا بسبب تنسيق ملف غير مدعوم. تدعم "
"TinEye فقط الصور بتنسيق JPEG أو PNG أو GIF أو BMP أو TIFF أو WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -336,55 +482,39 @@ msgstr ""
"الصورة أبسط من أن تجد مطابقات. يتطلب TinEye مستوى أساسيًا من التفاصيل "
"المرئية لتحديد التطابقات بنجاح."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "لا يمكن تنزيل الصورة."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "صباحا"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "ظهيرة"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "مساء"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "ليلا"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "تقييم الكتاب"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "جودة الملف"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "يحول السلسلة إلى ملخص التجزئة."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "ملخص التجزئة"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "استبدال اسم المضيف"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "أعد كتابة أسماء مضيفي النتائج أو أزل النتائج بناءً على اسم المضيف"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "فتح الوصول معرف الكائن الرقمي إعادة كتابة"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -392,11 +522,11 @@ msgstr ""
"تجنب جدران الدفع عن طريق إعادة التوجيه إلى إصدارات الوصول المفتوح من "
"المنشورات عند توفرها"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "نشرة المعلومات"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -404,11 +534,11 @@ msgstr ""
"يعرض IP إذا كان الاستعلام \"ip\" و وكيل المستخدم الخاص بك إذا كان "
"الاستعلام يحتوي على\"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "فحص المكون الإضافي ل Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -416,7 +546,7 @@ msgstr ""
"يتحقق هذا المكون الإضافي مما إذا كان عنوان الطلب هو عقدة خروج TOR ، ويبلغ"
" المستخدم إذا كان كذلك ، مثل check.torproject.org ولكن من SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -424,21 +554,21 @@ msgstr ""
"لم يمكن تنزيل قائمة Tor exit-nodes من عناوين: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "انت تستعمل Tor ويبدو انه لديك هذا الIP: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "أنت لا تستعمل Tor حالياً وهذا هو عنوان الـIP الخاص بك: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "مزيل روابط التعقّب"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
"إزالة وسيطات التتبع من \"URL\" الذي تم إرجاعه , إزالة وسيطات التتبع من "
@ -457,45 +587,45 @@ msgstr "إذهب إلى %(search_page)s."
msgid "search page"
msgstr "صفحة البحث"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "تبرُّع"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "التفضيلات"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "مدعوم بواسطة"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "الخصوصية ذو الاعتبار, محرك البحث عميق عُموميا"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "شيفرة مصدرية"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "تعقب القضايا"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "إحصائيات المحرك"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "نماذج الخوادم العمومية"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "سياسة الخصوصية"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "اتصال بالمشرف المخدم النموذجي"
@ -1767,3 +1897,4 @@ msgstr "إخفاء الفيديو"
#~ "لم نتوصل إلى العثور على أية نتيجة."
#~ " الرجاء إعادة صياغة طلب البحث أو "
#~ "إبحث مع تحديد أكثر من فئة."

View File

@ -13,19 +13,19 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-22 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Bulgarian <https://translate.codeberg.org/projects/searxng/"
"searxng/bg/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: bg\n"
"Language-Team: Bulgarian "
"<https://translate.codeberg.org/projects/searxng/searxng/bg/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -68,6 +68,16 @@ msgstr "изображения"
msgid "videos"
msgstr "видео"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "радио"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -159,116 +169,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Относно"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Вечер"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Сутрин"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Нощ"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Обяд"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Не е намерен артикул"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Източник"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Грешка при зареждането на следващата страница"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Неправилни настройки, моля проверете предпочитанията си"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Невалидни настройки"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "Грешка при търсенето"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "изчакване"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "грешка при анализа"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "Грешка в протокола HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "мрежова грешка"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL грешка: проверката на сертификата е неуспешна"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "неочакван срив"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP грешка"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP грешка във връзката"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "прокси грешка"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "Кепча"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "твърде много искания"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "отказан достъп"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "грешка в API на сървъра"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "преустановен"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "преди {minutes} минута(минути)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "преди {hours} час(ове), {minutes} минута(минути)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Генератор на произволни стойности"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Генерирайте различни произволни стойности"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Функции за статистика"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Изчислете {functions} на аргументите"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Вземете упътвания"
@ -280,31 +430,28 @@ msgstr "{title} (ОСТАРЯЛО)"
msgid "This entry has been superseded by"
msgstr "Този запис е заменен от"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Канал"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "радио"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "Скорост"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "Гласове"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "клика"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Език"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -312,7 +459,7 @@ msgstr ""
"{numCitations} цитати от годината {firstCitationVelocityYear} до "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -322,7 +469,7 @@ msgstr ""
"дължи на неподдържан файлов формат. TinEye поддържа само изображения, "
"които са JPEG, PNG, GIF, BMP, TIFF или WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -331,57 +478,41 @@ msgstr ""
"основно ниво на визуална детайлност за успешно идентифициране на "
"съвпадения."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Снимката не може да бъде смъкната."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Сутрин"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Обяд"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Вечер"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Нощ"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Рейтинг на книги"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Качество на файл"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Преобразува низове в различни хаш-извлечение."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "хеш извлечение"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Замяна на името на хоста"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Пренапишете имената на хостове на резултатите или премахнете резултатите "
"въз основа на името на хоста"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Отворен достъп DOI пренаписване"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -389,21 +520,21 @@ msgstr ""
"Избягвайте заплатите, като пренасочвате към версии с отворен достъп на "
"публикации, когато са налични"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr "Показва IP-то ви и др. инфо, ако търсенето е \"ip\" или \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Проверка на Tor приставката"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -411,7 +542,7 @@ msgstr ""
"Тази добавка проверява дали адресът на заявката е изходен възел на TOR и "
"осведомява потребителя ако е - като check.torproject.org, но от SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -419,21 +550,21 @@ msgstr ""
"Не можe да се изтегли списъка с mаршрутизатори/рутери на Tor от: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "В момента използваш Tor и твоят IP адрес е: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "В момента не използваш Tor и твоят IP адрес е: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Премахвач на URL тракери"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Премахни следящите аргументи от върнатия URL"
@ -450,45 +581,45 @@ msgstr "Отиди на %(search_page)s."
msgid "search page"
msgstr "търси страница"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Дарете"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Предпочитания"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "С подкрепата на"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "отворена метатърсачка, уважаваща поверителността на потребителя"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Код на SearXNG"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Търсачка на проблеми"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Статистика на търсачката"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Публични сървъри"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Политика за поверителност"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Контакт за връзка с поддържащия публичния сървър"
@ -1767,3 +1898,4 @@ msgstr "скрий видеото"
#~ "не намерихме резултати. Моля пробвайте "
#~ "други ключови думи или търсете в "
#~ "повече категории."

View File

@ -15,18 +15,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-16 19:53+0000\n"
"Last-Translator: MonsoonRain <MonsoonRain@users.noreply.translate.codeberg."
"org>\n"
"Language-Team: Bengali <https://translate.codeberg.org/projects/searxng/"
"searxng/bn/>\n"
"Last-Translator: MonsoonRain "
"<MonsoonRain@users.noreply.translate.codeberg.org>\n"
"Language: bn\n"
"Language-Team: Bengali "
"<https://translate.codeberg.org/projects/searxng/searxng/bn/>\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -69,6 +68,16 @@ msgstr "ছবি"
msgid "videos"
msgstr "ভিডিও"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "বেতার"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -160,116 +169,256 @@ msgid "Uptime"
msgstr "চলনকাল"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "সম্বন্ধে"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "সন্ধ্যা"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "সকাল"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "রাত"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "দুপুর"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "কোন আইটেম পাওয়া যায়নি"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "উৎস"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "পরবর্তী পৃষ্ঠাটি লোড করায় ত্রুটি দেখা যাচ্ছে"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "অকেজো সেটিংস, অনুগ্রহ করে আপনার পছন্দগুলি সম্পাদনা করুন"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "অকেজো সেটিংস"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "সার্চ ত্রুটি"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "সময় শেষ"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "পার্স ত্রুটি"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP প্রোটোকল ত্রুটি"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "নেটওয়ার্ক ত্রুটি"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL ত্রুটি: সার্টিফিকেট বৈধতা ব্যর্থ হয়েছে৷"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "অপ্রত্যাশিত ক্র্যাশ"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP ত্রুটি"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP সংযোগ ত্রুটি"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "প্রক্সি ত্রুটি"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "ক্যাপচা"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "অনেক বেশি অনুরোধ"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "প্রবেশ অগ্রাহ্য করা হল"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "সার্ভার API ত্রুটি"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "স্থগিত"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} মিনিট আগে"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} ঘণ্টা, {minutes} মিনিট আগে"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "এলোমেলো মান জেনারেটর"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "বিভিন্ন এলোমেলো মান তৈরি করুন"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "পরিসংখ্যান কার্যাবলী"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "আর্গুমেন্টগুলির {functions} গণনা করুন৷"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "দিকনির্দেশ পান"
@ -281,31 +430,28 @@ msgstr "{title} (অচল)"
msgid "This entry has been superseded by"
msgstr "এই এনট্রিটি দ্বারা বাতিল করা হয়েছে৷"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "চ্যানেল"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "বেতার"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "বিটরেট"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "ভোট"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "ক্লিক সংখ্যা"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "ভাষা"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -313,7 +459,7 @@ msgstr ""
"{numCitations} উদ্ধৃতি সাল {firstCitationVelocityYear} থেকে "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -323,7 +469,7 @@ msgstr ""
"পারার জন্যে। TinEye কেবল JPEG, PNG, GIF, BMP, TIFF আর WebP ফরম্যাট কে "
"পড়তে পারে।"
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -331,55 +477,39 @@ msgstr ""
"এই ছবিটি খুবই সাধারণ হওয়ায় কোন মিল পাওয়া যাচ্ছে না। TinEye এর একটু "
"চাক্ষুষ বিস্তর প্রয়োজন সফল ভাবে মিল পাওয়ার জন্যে ।"
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "ছবিটি ডাউনলোড করা যায়নি ।"
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "সকাল"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "দুপুর"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "সন্ধ্যা"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "রাত"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "বই পর্যালোচনা"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "নথি মান"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "স্ট্রিংগুলিকে বিভিন্ন হ্যাশ ডাইজেস্টে রূপান্তর করে।"
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "হ্যাশ ডাইজেস্ট"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "হোস্টনাম প্রতিস্থাপন"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "ফলাফল হোস্টনাম পুনরায় লিখুন বা হোস্টনামের উপর ভিত্তি করে ফলাফল মুছে ফেলুন"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "পুনর্লিখিত DOI উন্মুক্ত প্রবেশ"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -387,11 +517,11 @@ msgstr ""
"Paywall এড়িয়ে চলতে প্রকাশন গুলির open-access সংস্করণে রিডাইরেক্ট করুন "
"উপলব্ধ থাকলে"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "নিজ তথ্য"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -399,11 +529,11 @@ msgstr ""
"ক্যোয়ারীটি \"ip\" হলে আপনার আইপি এবং যদি ক্যোয়ারীতে \"ব্যবহারকারী "
"এজেন্ট\" থাকে তাহলে আপনার ব্যবহারকারী এজেন্ট প্রদর্শন করে।"
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "টর চেক প্লাগইন"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -412,13 +542,13 @@ msgstr ""
"ব্যবহারকারীকে জানিয়ে দেয় যে এটি কিনা, যেমন check.torproject.org কিন্তু "
"SearXNG থেকে।"
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr "টর exit-node থেকে লিস্ট ডাউনলোড করা যায়নি"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -426,17 +556,17 @@ msgstr ""
"আপনি টর ব্যবহার করছেন এবং মনে হচ্ছে এটি আপনার বাহ্যিক আইপি অ্যাড্রেসঃ "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
"আপনি টর ব্যবহার করছেন না এবং মনে হচ্ছে এটি আপনার বাহ্যিক আইপি অ্যাড্রেসঃ "
"{ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "ট্র্যাকার URL রিমুভার"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "ফিরে আসা URL থেকে ট্র্যাকার আর্গুমেন্টগুলি সরান৷"
@ -453,45 +583,45 @@ msgstr "%(search_page)s এ যান৷"
msgid "search page"
msgstr "অনুসন্ধান পৃষ্ঠা"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "দান করুন"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "পছন্দসমূহ"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "দ্বারা চালিত"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "একটি গোপনীয়তা-সম্মানকারী, খোলা মেটাসার্চ ইঞ্জিন"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "সোর্স কোড"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "সমস্যা অনুসরণ"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "ইঞ্জিন পরিসংখ্যান"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "পাবলিক ইন্সট্যান্স"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "গোপনীয়তা নীতি"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "ইন্সট্যান্স রক্ষণাবেক্ষণকারীর সাথে যোগাযোগ করুন"
@ -1065,8 +1195,8 @@ msgid ""
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
"key on main or result page to get help."
msgstr ""
"অনুসন্ধানের ফলাফল হটকি দিয়ে পরিভ্রমণ করো (জাভাস্ক্রিপ্ট প্রয়োজন)। মূল পাতায় "
"বা ফলাফল পাতায় \"h\" টিপ দাও সাহায্যের জন্য।"
"অনুসন্ধানের ফলাফল হটকি দিয়ে পরিভ্রমণ করো (জাভাস্ক্রিপ্ট প্রয়োজন)। মূল "
"পাতায় বা ফলাফল পাতায় \"h\" টিপ দাও সাহায্যের জন্য।"
#: searx/templates/simple/preferences/image_proxy.html:2
msgid "Image proxy"
@ -1523,3 +1653,4 @@ msgstr "ভিডিও লুকিয়ে ফেলুন"
#~ "আমরা কোন ফলাফল খুঁজে পাইনি. অনুগ্রহ "
#~ "করে অন্য কোনো প্রশ্ন ব্যবহার করুন "
#~ "বা আরও বিভাগে অনুসন্ধান করুন।"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2023-06-02 07:07+0000\n"
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
"Language: bo\n"
@ -62,6 +62,16 @@ msgstr "པར་རིས།"
msgid "videos"
msgstr "བརྙན་ཟློས།"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr ""
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -153,116 +163,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr ""
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr ""
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr ""
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr ""
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr ""
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr ""
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།ཁྱེད་ཀྱིས་གདམ་ཀ་ལ་བཅོས་སྒྲིག་གཏོང་རོགས།"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "འཚོལ་བཤེར་ལ་ནོར་འཁྲུལ་བྱུང་།"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr ""
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr ""
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr ""
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr ""
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr ""
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr ""
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr ""
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr ""
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr ""
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr ""
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr ""
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr ""
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr ""
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "སྐར་མ་ {minutes} སྔོན་ལ།"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "ཆུ་ཚོད་ {hours} དང་སྐར་མ {minutes} སྔོན་ལ།"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "ངེས་མེད་གྲངས་ཀ་མཁོ་སྤྲོད།"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "ངེས་མེད་གྲངས་ཀ་ཁ་ཤས་ཐོབ་པར་བྱེད།"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "སྡོམ་བརྩིས་ཀྱི་བྱེད་ནུས།"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "{functions} གཞི་གྲངས་གྲངས་རྩིས།"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr ""
@ -274,144 +424,125 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr "འཚོལ་བྱང་འདི་གཞན་གྱིས་ཚབ་བྱེད་འདུག"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr ""
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr ""
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr ""
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
msgstr ""
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr ""
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Night"
msgstr ""
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr ""
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr ""
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr ""
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr ""
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr ""
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr ""
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "དྲ་གནས་རྗེས་འདེད་སྤོ་འབུད།"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -428,45 +559,45 @@ msgstr "%(search_page)s ལ་བསྐྱོད།"
msgid "search page"
msgstr "འཚོལ་བཤེར་དྲ་ངོས།"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr ""
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "སྒྲིག་བཀོད།"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "བཟོ་སྐུན་པ་ནི"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr ""
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "སྒུལ་བྱེད་ཀྱི་སྡོམ་རྩིས།"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr ""
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""

View File

@ -19,19 +19,18 @@
# sserra <sserra@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-06 00:18+0000\n"
"Last-Translator: sserra <sserra@users.noreply.translate.codeberg.org>\n"
"Language-Team: Catalan <https://translate.codeberg.org/projects/searxng/"
"searxng/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"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -74,6 +73,16 @@ msgstr "imatges"
msgid "videos"
msgstr "vídeos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -165,116 +174,256 @@ msgid "Uptime"
msgstr "Temps actiu"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Quant a"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Vespre"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Matí"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nit"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Migdia"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "No s'ha trobat cap element"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Origen"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "S'ha produït un error en carregar la següent pàgina"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "La configuració no és vàlida, editeu-la"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "La configuració no és vàlida"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "error de cerca"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "expirat"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "error de processament"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "error del protocol HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "error de xarxa"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "error de SSL: la validació del certificat ha fallat"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "error inesperat"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "error de HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "error de connexió HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "error del servidor intermediari"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "masses peticions"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "accés denegat"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "error en l'API del servidor"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspès"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "fa {minutes} minut(s)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "fa {hours} hores i {minutes} minut(s)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generador de valors aleatoris"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Genera diferents valors aleatoris"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Funcions estadístiques"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Calcula {functions} dels arguments"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Obtén indicacions"
@ -286,31 +435,28 @@ msgstr "{title} (OBSOLET)"
msgid "This entry has been superseded by"
msgstr "Aquesta entrada ha estat substituïda per"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Canal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "tasa de bits"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "vots"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clics"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Llengua"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -318,7 +464,7 @@ msgstr ""
"{numCitations} cites des de l'any {firstCitationVelocityYear} fins a "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -328,7 +474,7 @@ msgstr ""
" de fitxer no compatible. TinEye només admet imatges en format JPEG, PNG,"
" GIF, BMP, TIFF o WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -336,55 +482,39 @@ msgstr ""
"La imatge és massa senzilla per trobar coincidències. TinEye requereix un"
" mínim de complexitat visual per identificar amb èxit les coincidències."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "No s'ha pogut baixar la imatge."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Matí"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Migdia"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Vespre"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nit"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Valoració de llibre"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Qualitat del fitxer"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Converteix cadenes en diferents empremtes de hash."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "resum del hash"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Substitució del nom de l'amfitrió"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Reescriu o suprimeix resultats basant-se en els noms d'amfitrió"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Reescriptura de l'Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -392,11 +522,11 @@ msgstr ""
"Evita els llocs de pagament redirigint a versions d'accés obert de les "
"publicacions quan estiguin disponibles"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informació pròpia"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -404,11 +534,11 @@ msgstr ""
"Mostra la vostra IP si la consulta és «ip» i el valor «user agent» del "
"navegador si la consulta conté «user agent»."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Plugin de comprovació de Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -417,7 +547,7 @@ msgstr ""
"sortida TOR i informa a l'usuari si ho és, com check.torproject.org però "
"des de SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -425,21 +555,21 @@ msgstr ""
"No s'ha pogut descarregar la llista de nodes de sortida de Tor des de: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Estàs usant Tor i sembla que tens aquesta adreça IP: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "No estàs usant Tor i tens aquesta adreça IP: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Suprimeix l'URL de rastreig"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Suprimeix els arguments de rastreig dels URL retornats"
@ -456,45 +586,45 @@ msgstr "Ves a %(search_page)s."
msgid "search page"
msgstr "pàgina de cerca"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Donar"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Preferències"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Funciona amb"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "metacercador obert, que respecta la privacitat"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Codi font"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Gestor d'incidències"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Estadístiques del cercador"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Instàncies públiques"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Política de privacitat"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Contacteu amb el mantenidor de la instància"
@ -1790,3 +1920,4 @@ msgstr "oculta el vídeo"
#~ "no hem trobat cap resultat. Feu "
#~ "una consulta diferent o cerqueu en "
#~ "més categories."

View File

@ -15,20 +15,19 @@
# Fjuro <ifjuro@proton.me>, 2023, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-02-26 16:56+0000\n"
"Last-Translator: Fjuro <ifjuro@proton.me>\n"
"Language-Team: Czech <https://translate.codeberg.org/projects/searxng/"
"searxng/cs/>\n"
"Language: cs\n"
"Language-Team: Czech "
"<https://translate.codeberg.org/projects/searxng/searxng/cs/>\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && "
"n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n "
"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -71,6 +70,16 @@ msgstr "obrázky"
msgid "videos"
msgstr "videa"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "rádio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -162,116 +171,256 @@ msgid "Uptime"
msgstr "Spolehlivost"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "O SearXNG"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Večer"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Ráno"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Noc"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Poledne"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nic nenalezeno"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "zdroj"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Chyba při načítání další stránky"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Neplatné nastavení, upravte své předvolby"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Neplatné nastavení"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "chyba vyhledávání"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "čas vypršel"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "chyba parsování"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "chyba HTTP protokolu"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "síťová chyba"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "chyba SSL: ověření certifikátu selhalo"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "nečekaná chyba"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "chyba HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "Chyba spojení HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "chyba proxy"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "příliš mnoho požadavků"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "přístup odepřen"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "chyba API serveru"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Pozastaveno"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "před {minutes} minutami"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "před {hours} hodinami, {minutes} minutami"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generátor náhodných hodnot"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generování náhodných hodnot"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistické funkce"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Výpočet funkcí {functions} pro daný argument"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Získat pokyny"
@ -283,31 +432,28 @@ msgstr "{title} (ZASTARALÉ)"
msgid "This entry has been superseded by"
msgstr "Tato položka byla nahrazena položkou"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanál"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "rádio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "datový tok"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "hlasy"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "kliknutí"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Jazyk"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -315,7 +461,7 @@ msgstr ""
"{numCitations} citace z roku {firstCitationVelocityYear} do "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -325,7 +471,7 @@ msgstr ""
"souboru. TinEye podporuje pouze obrázky ve formátu JPEG, PNG, GIF, BMP, "
"TIFF nebo WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -333,55 +479,39 @@ msgstr ""
"Obrázek je příliš jednoduchý na to, aby bylo možné najít shody. TinEye "
"vyžaduje základní úroveň vizuálních detailů pro úspěšnou identifikaci."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Obrázek se nepodařilo stáhnout."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Ráno"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Poledne"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Večer"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Noc"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Hodnocení knih"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Množství souborů"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Převádí řetězce na různé hash hodnoty."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash hodnota"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Nahrazení adresy serveru"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Přepsat adresy serverů nebo odstranit výsledky podle adresy"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Přesměrování na Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -389,11 +519,11 @@ msgstr ""
"Automaticky přesměrovat na volně přístupné verze publikací místo "
"placených, pokud je to možné"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informace o sobě"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -401,11 +531,11 @@ msgstr ""
"Umožňuje hledat informace o sobě: \"ip\" zobrazí vaši IP adresu a \"user "
"agent\" zobrazí identifikátor prohlížeče."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Plugin kontroly TORu"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -414,7 +544,7 @@ msgstr ""
"informuje uživatele, pokud tomu tak je; jako check.torproject.org, ale od"
" SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -422,21 +552,21 @@ msgstr ""
"Nelze stáhnout seznam výstupních uzlů Tor z: https://check.torproject.org"
"/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Používáte Tor a vypadá to, že máte tuto externí IP adresu: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Nepoužíváte Tor a máte tuto externí IP adresu: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Odstraňovač sledovacích URL"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Odstranit sledovací parametry z načtených URL"
@ -453,45 +583,45 @@ msgstr "Přejít na %(search_page)s."
msgid "search page"
msgstr "stránka vyhledávání"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Dar"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Nastavení"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Poháněno softwarem"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "otevřený, metavyhledávající engine, respektující soukromí"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Zdrojový kód"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Hlášení chyb"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistiky vyhledávače"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Veřejné instance"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Zásady soukromí"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontaktujte správce instance"
@ -1775,3 +1905,4 @@ msgstr "skrýt video"
#~ "Nenašli jsme žádné výsledky. Použijte "
#~ "prosím jiný dotaz nebo hledejte ve "
#~ "více kategoriích."

View File

@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2023-11-23 06:13+0000\n"
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
"Language: cy\n"
@ -65,6 +65,16 @@ msgstr "delweddau"
msgid "videos"
msgstr "fideos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -156,116 +166,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Ynghylch"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Noswaith"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Bore"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nos"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Canol Dydd"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Ni chanfuwyd eitem"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Ffynhonnell"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Gwall wrth lwytho'r dudalen nesaf"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Gosodiadau annilys, golygu eich dewisiadau"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Gosodiadau annilys"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "gwall chwilio"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "amser allan"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "gwall dosrannu"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "Gwall protocol HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "gwall rhwydwaith"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Gwall SSL: dilysu tystysgrif wedi methu"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "damwain annisgwyl"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "gwall http"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "gwall cysylltiad http"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "gwall dirprwy"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "gormod o geisiadau"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "mynediad wedi ei wrthod"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "gwall API gweinydd"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Atal"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} munud yn ôl"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} awr, {minutes} munud yn ôl"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generadur gwerth ar hap"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Cynhyrchu gwahanol werthoedd ar hap"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Swyddogaethau ystadegau"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Compute {functions} o'r dadleuon"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Cael cyfarwyddiadau"
@ -277,31 +427,28 @@ msgstr "{title} (OBSOLETE)"
msgid "This entry has been superseded by"
msgstr "Mae'r cofnod hwn wedi ei ddisodli gan"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Sianel"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "cyfradd didau"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr ""
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Iaith"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -309,7 +456,7 @@ msgstr ""
"{numCitations} dyfyniadau o'r flwyddyn {firstCitationVelocityYear} i "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -319,7 +466,7 @@ msgstr ""
"ffeil heb gymorth. Mae TinEye yn cefnogi delweddau yn unig sy'n JPEG, "
"PNG, GIF, BMP, TIFF neu WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -327,101 +474,85 @@ msgstr ""
"Mae'r ddelwedd yn rhy syml i ddod o hyd i gemau. Mae TinEye angen lefel "
"sylfaenol o fanylion gweledol i adnabod gemau yn llwyddiannus."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Doedd dim modd lawrlwytho'r ddelwedd."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Bore"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Canol Dydd"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Noswaith"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nos"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Gradd llyfr"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr ""
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Trosi llinynnau i wahanol dreuliadau hash."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "Digon o hash"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr ""
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr ""
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr ""
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -438,45 +569,45 @@ msgstr "Mynd i %(search_page)s."
msgid "search page"
msgstr "tudalen chwilio"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Rhoddi"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Dewisiadau"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Pwerwyd gan"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Cod ffynhonnell"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr ""
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr ""
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""

View File

@ -10,19 +10,19 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-04 14:18+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Danish <https://translate.codeberg.org/projects/searxng/"
"searxng/da/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: da\n"
"Language-Team: Danish "
"<https://translate.codeberg.org/projects/searxng/searxng/da/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -65,6 +65,16 @@ msgstr "billeder"
msgid "videos"
msgstr "videoer"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "Radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -156,116 +166,256 @@ msgid "Uptime"
msgstr "Oppetid"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Om"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Aften"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Morgen"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nat"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Middag"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Intet fundet"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Kilde"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Fejl ved indlæsning af den næste side"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Ugyldige indstillinger, redigér venligst dine valg"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ugyldig indstilling"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "søgefejl"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "udløbstid"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "fortolkningsfejl"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP-protokolfejl"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "netværksfejl"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL-fejl: certifikatvalidering mislykkedes"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "uventet nedbrud"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP-fejl"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP-tilkoblingsfejl"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxyfejl"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "for mange forespørgsler"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "adgang nægtet"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "server-API-fejl"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspenderet"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "for {minutes} minut(ter) siden"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "for {hours} time(r) og {minutes} minut(ter) siden"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generator af tilfældig værdi"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generér forskellige tilfældige værdier"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistiske funktioner"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Beregn {functions} af parametrene"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Få rutevejledning"
@ -277,31 +427,28 @@ msgstr "{title} (FORÆLDET)"
msgid "This entry has been superseded by"
msgstr "Denne værdi er blevet overskrevet af"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "Radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "Bitrate"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "Stemmer"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "Klik"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Sprog"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -309,7 +456,7 @@ msgstr ""
"{numCitations} citater fra år {firstCitationVelocityYear} til "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -319,7 +466,7 @@ msgstr ""
"understøttet filformat. TinEye understøtter kun billeder, der er i JPEG, "
"PNG, GIF, BMP, TIFF eller WebP format."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -328,57 +475,41 @@ msgstr ""
"grundlæggende niveau af visuelle detaljer for at kunne identificere "
"matchene billeder."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Dette billede kunne ikke downloades."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Morgen"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Middag"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Aften"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nat"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Bogbedømmelse"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Filkvalitet"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Konverterer strenge til forskellige hash-digests."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash-digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Værtsnavn erstat"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Omskriv resultatets værtsnavne eller fjerne resultater baseret på "
"værtsnavnet"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Open Access DOI-omskrivning"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -386,11 +517,11 @@ msgstr ""
"Undgå betalingsmure ved at viderestille til en åbent tilgængelig version,"
" hvis en sådan findes"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Selv information"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -398,11 +529,11 @@ msgstr ""
"Viser din IP adresse hvis søgningen er \"ip\" og din user-agent i "
"søgningen indeholder \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor undersøg plugin"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -411,7 +542,7 @@ msgstr ""
"informerer brugeren, hvis den er, som check.torproject.org, men fra "
"SearXNG i stedet."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -419,21 +550,21 @@ msgstr ""
"Kunne ikke downloade liste af Tor exit-nodes fra: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Du bruger Tor og du har denne eksterne IP adresse: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Du bruger ikke Tor og du har denne eksterne IP adresse: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Fjernelse af tracker URL"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Fjern trackeres parametre fra den returnerede URL"
@ -450,45 +581,45 @@ msgstr "Gå til 1%(search_page)s."
msgid "search page"
msgstr "søgeside"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Donere"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Indstillinger"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Leveret af"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "en åben metasøgemaskine, der respekterer privatlivet"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Kildekode"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Problemsporer"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Søgemaskine-statistik"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Offentlige instanser"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Privatlivspolitik"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontakt tilbyderen af instansen"
@ -1775,3 +1906,4 @@ msgstr "skjul video"
#~ "Vi fandt ingen resultater. Benyt "
#~ "venligst en anden søge-streng eller "
#~ "søg i flere kategorier."

View File

@ -22,19 +22,18 @@
# return42 <markus.heiser@darmarit.de>, 2023, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-02-26 16:56+0000\n"
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
"Language-Team: German <https://translate.codeberg.org/projects/searxng/"
"searxng/de/>\n"
"Language: de\n"
"Language-Team: German "
"<https://translate.codeberg.org/projects/searxng/searxng/de/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -77,6 +76,16 @@ msgstr "Bilder"
msgid "videos"
msgstr "Videos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "Radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -168,116 +177,256 @@ msgid "Uptime"
msgstr "Laufzeit"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Über"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Abends"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Morgens"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nachts"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Mittags"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Keine Einträge gefunden"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Quelle"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Fehler beim Laden der nächsten Seite"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Ungültige Einstellungen, bitte Einstellungen ändern"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ungültige Einstellungen"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "Suchfehler"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "Timeout"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "Fehler beim Parsen"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP-Protokollfehler"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "Netzwerkfehler"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL Fehler: Zertifikatsprüfung ist fehlgeschlagen"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "unerwarteter Absturz"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP-Fehler"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP-Verbindungsfehler"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "Proxy-Fehler"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "zu viele Anfragen"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "Zugriff verweigert"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "Server-API-Fehler"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Ausgesetzt"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "vor {minutes} Minute(n)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Zufallswertgenerator"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Erzeugt diverse Zufallswerte"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistikfunktionen"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "{functions} der Argumente berechnen"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Richtung holen"
@ -289,31 +438,28 @@ msgstr "{title} (OBSOLET)"
msgid "This entry has been superseded by"
msgstr "Dieser Eintrag wurde überschrieben von"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "Radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "Bitrate"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "Stimmen"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "Clicks"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Sprache"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -321,7 +467,7 @@ msgstr ""
"{numCitations} Zitierungen in den Jahren {firstCitationVelocityYear} bis "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -331,7 +477,7 @@ msgstr ""
" unterstütztes Dateiformat zurückzuführen sein. TinEye unterstützt nur "
"Bilder im Format JPEG, PNG, GIF, BMP, TIFF oder WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -340,57 +486,41 @@ msgstr ""
"ein grundlegendes Maß an visuellen Details, um erfolgreich "
"Übereinstimmungen zu erkennen."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Das Bild konnte nicht heruntergeladen werden."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Morgens"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Mittags"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Abends"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nachts"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Buchbewertung"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Dateiqualität"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Konvertiert Zeichenketten in verschiedene Hashwerte."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "Hashwert"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Hostnamen ändern"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Umschreiben des Hostnamen oder sperren von Hostnamen in den Such-"
"Ergebnissen"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Open-Access-DOI umschreiben"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -398,11 +528,11 @@ msgstr ""
"Bezahlbeschränkungen durch die Weiterleitung zu der verfügbaren Open-"
"Access-Version vermeiden"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Selbstauskunft"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -410,11 +540,11 @@ msgstr ""
"Zeigt deine IP-Adresse an, wenn die Suchabfrage \"ip\" lautet, und deinen"
" User-Agent, wenn deine Suchabfrage \"user agent\" beinhaltet."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor Prüf-Plugin"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -423,7 +553,7 @@ msgstr ""
"und informiert den Benutzer, wenn dies der Fall ist; wie "
"check.torproject.org, aber von SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -431,7 +561,7 @@ msgstr ""
"Die Liste der Tor-Exit-Nodes konnte nicht heruntergeladen werden von: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -439,17 +569,17 @@ msgstr ""
"Du benutzt Tor und es sieht so aus, als hättest du diese externe IP-"
"Adresse: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
"Du benutzt Tor und es sieht so aus, als hättest du diese externe IP-"
"Adresse: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Tracker-URL-Entferner"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Tracker-Argumente von den zurückgegebenen URLs entfernen"
@ -466,45 +596,45 @@ msgstr "Gehe zu %(search_page)s."
msgid "search page"
msgstr "Suchseite"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Spenden"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Einstellungen"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Betrieben mit"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "Eine privatsphären-respektierende, offene Metasuchmaschine"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Quellcode"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Bugtracker"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Suchmaschinenstatistiken"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Öffentliche Instanzen"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Datenschutzerklärung"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontakt zum Betreuer der Instanz"
@ -1809,3 +1939,4 @@ msgstr "Video verstecken"
#~ "werden. Bitte nutze einen anderen "
#~ "Suchbegriff, oder suche das gewünschte "
#~ "in einer anderen Kategorie."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2022-11-04 07:18+0000\n"
"Last-Translator: Landhoo School Students "
"<landhooschoolstudents@gmail.com>\n"
@ -60,6 +60,16 @@ msgstr "ފޮޓޯ"
msgid "videos"
msgstr "ވީޑިޔޯތައް"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr ""
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -151,116 +161,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr ""
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr ""
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr ""
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr ""
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr ""
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr ""
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr ""
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr ""
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr ""
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr ""
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr ""
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr ""
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr ""
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr ""
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr ""
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr ""
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr ""
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr ""
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr ""
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr ""
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr ""
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr ""
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr ""
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr ""
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr ""
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr ""
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr ""
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr ""
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr ""
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr ""
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr ""
@ -272,144 +422,125 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr ""
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr ""
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr ""
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr ""
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
msgstr ""
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr ""
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Night"
msgstr ""
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr ""
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr ""
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr ""
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr ""
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr ""
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr ""
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr ""
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -426,45 +557,45 @@ msgstr ""
msgid "search page"
msgstr ""
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr ""
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr ""
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr ""
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr ""
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""

View File

@ -14,19 +14,19 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-12 17:28+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Greek <https://translate.codeberg.org/projects/searxng/"
"searxng/el/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\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"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -69,6 +69,16 @@ msgstr "εικόνες"
msgid "videos"
msgstr "Βίντεο"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "ράδιο"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -160,116 +170,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Σχετικά με το SearXNG"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Βράδι"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Πρωί"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Βράδι"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Μεσημέρι"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Δεν βρέθηκαν αντικείμενα"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Πηγή"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Σφάλμα φόρτωσης της επόμενης σελίδας"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Μη έγκυρες ρυθμίσεις, παρακαλούμε ελέγξτε τις προτιμήσεις σας"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Μη έγκυρες ρυθμίσεις"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "σφάλμα αναζήτησης"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "Λήξη χρόνου"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "σφάλμα ανάλυσης"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "Σφάλμα πρωτοκόλλου HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "Σφάλμα δικτύου"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Σφάλμα SSL: η επικύρωση του πιστοποιητικού απέτυχε"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "Απροσδόκητο σφάλμα"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "Σφάλμα HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "Σφάλμα σύνδεσης HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "Σφάλμα διακομιστή μεσολάβησης"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "υπέρβαση ορίου αιτημάτων"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "Άρνηση πρόσβασης"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "Σφάλμα API διακομιστή"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Σε αναστολή"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} λεπτά πριν"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} ώρα(-ες), {minutes} λεπτό(-ά) πριν"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Γεννήτρια τυχαίων τιμών"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Δημιουργία διαφορετικών τυχαίων τιμών"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Λειτουργίες στατιστικής"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Υπολογισμός {functions} των παραμέτρων"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Πάρτε οδηγίες"
@ -281,31 +431,28 @@ msgstr "{title} (ΠΑΡΩΧΗΜΕΝΟΣ)"
msgid "This entry has been superseded by"
msgstr "Αυτή η καταχώριση έχει αντικατασταθεί από"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Κανάλι"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "ράδιο"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "ρυθμός μετάδοσης"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "ψήφους"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "κλικ"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Γλώσσα"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -313,7 +460,7 @@ msgstr ""
"{numCitations} αναφορές απο τα έτη {firstCitationVelocityYear} εώς "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -323,7 +470,7 @@ msgstr ""
" μη υποστηριζόμενη μορφή αρχείου. Το TinEye υποστηρίζει μόνο εικόνες που "
"είναι JPEG, PNG, GIF, BMP, TIFF ή WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -332,57 +479,41 @@ msgstr ""
"ένα στοιχειώδης επίπεδο λεπτομέρειας για τον επιτυχή εντοπισμό "
"αντιστοιχιών."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Αποτυχία μεταφόρτωσης εικόνας."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Πρωί"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Μεσημέρι"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Βράδι"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Βράδι"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Βαθμολογία βιβλίου"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Ποιότητα αρχείου"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Μετατρέπει κείμενο σε διαφορετικές συναρτήσεις κατατεμαχισμού."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "συνάρτηση κατατεμαχισμού"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Αντικατάσταση hostname"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Αντικατάσταση hostname των αποτελεσμάτων ή αφαίρεση των αποτελεσμάτων με "
"βάση το hostname"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Αντικατάσταση με DOI ανοιχτής πρόσβασης"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -390,11 +521,11 @@ msgstr ""
"Αποφυγή τοίχων πληρωμής με ανακατεύθυνση σε ανοικτές εκδόσεις των "
"δημοσιεύσεων όταν είναι διαθέσιμες"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Αυτοπληροφορίες"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -402,11 +533,11 @@ msgstr ""
"Προβολή της IP διεύθυνσης αν η αναζήτηση είναι \"ip\" και το user agent "
"αν η αναζήτηση περιέχει \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Πρόσθετο ελέγχου Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -415,7 +546,7 @@ msgstr ""
"εξόδου του δικτύου Tor και ενημερώνει τον χρήστη εάν είναι έτσι. Όπως στο"
" check.torproject.org, αλλά από το SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -423,7 +554,7 @@ msgstr ""
"Δεν ήταν δυνατή η λήψη της λίστας διευθύνσεων εξόδου του δικτύου Tor από "
"το: https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -431,17 +562,17 @@ msgstr ""
"Χρησιμοποιείτε το δίκτυο Tor και φαίνεται πως η εξωτερική σας διεύθυνση "
"είναι η: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
"Δεν χρησιμοποιείτε το δίκτυο Tor. Η εξωτερική σας διεύθυνση είναι: "
"{ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Αφαίρεση ιχνηλατών από συνδέσμους"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Αφαίρεση ιχνηλατών από τους επιστρεφόμενους συνδέσμους"
@ -458,45 +589,45 @@ msgstr "Μετάβαση στο %(search_page)s."
msgid "search page"
msgstr "σελίδα αναζήτησης"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Κάνε δωρεά"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Προτιμήσεις"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Με την υποστήριξη του"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "μια ανοικτή μηχανή μετα-αναζήτησης που σέβεται την ιδιωτικότητα"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Πηγαίος κώδικας"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Παρακολούθηση ζητημάτων"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Στατιστικά μηχανής"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Δημόσιες εκφάνσεις"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Πολιτική απορρήτου"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Επικοινωνήστε με τον συντηρητή αυτής της σελίδας"
@ -1783,3 +1914,4 @@ msgstr "απόκρυψη βίντεο"
#~ "δε βρέθηκαν αποτελέσματα. Παρακαλούμε "
#~ "χρησιμοποιήστε άλλη αναζήτηση ή ψάξτε σε"
#~ " περισσότερες κατηγορίες."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
@ -58,6 +58,16 @@ msgstr ""
msgid "videos"
msgstr ""
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr ""
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -149,116 +159,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr ""
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr ""
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr ""
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr ""
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr ""
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr ""
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr ""
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr ""
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr ""
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr ""
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr ""
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr ""
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr ""
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr ""
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr ""
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr ""
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr ""
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr ""
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr ""
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr ""
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr ""
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr ""
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr ""
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr ""
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr ""
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr ""
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr ""
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr ""
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr ""
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr ""
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr ""
@ -270,144 +420,125 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr ""
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr ""
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr ""
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr ""
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
msgstr ""
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr ""
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Night"
msgstr ""
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr ""
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr ""
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr ""
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr ""
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr ""
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr ""
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr ""
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -424,45 +555,45 @@ msgstr ""
msgid "search page"
msgstr ""
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr ""
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr ""
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr ""
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr ""
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""

View File

@ -15,19 +15,19 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-22 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Esperanto <https://translate.codeberg.org/projects/searxng/"
"searxng/eo/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: eo\n"
"Language-Team: Esperanto "
"<https://translate.codeberg.org/projects/searxng/searxng/eo/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -70,6 +70,16 @@ msgstr "bildoj"
msgid "videos"
msgstr "videoj"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -161,116 +171,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Pri"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Vespero"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Mateno"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nokto"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Tagmezo"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nenio trovita"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Fonto"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Eraro dum la ŝarĝado de la sekvan paĝon"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Nevalidaj agordoj, bonvolu redaktu viajn agordojn"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Nevalidaj agordoj"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "serĉa eraro"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "eltempiĝo"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "analiza eraro"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP-protokolo-eraro"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "reta eraro"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL-eraro: atestila validigo malsukcesis"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "neatendita kraŝo"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP-eraro"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP-konekto-eraro"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "prokurilo-eraro"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "tro da petoj"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "aliro rifuzita"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "servilo-API-eraro"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspendigita"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "antaŭ {minutes} minuto(j)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "antaŭ {hours} horo(j), {minutes} minuto(j)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Hazardvalora generilo"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generi diversajn hazardajn valorojn"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistikaj funkcioj"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Kalkuli {functions} de la argumentoj"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Akiri direktojn"
@ -282,31 +432,28 @@ msgstr "{title} (MALAKTUALA)"
msgid "This entry has been superseded by"
msgstr "Tiu ĉi enigo estis anstataŭigita per"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanalo"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bito-rapido"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "voĉoj"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klakoj"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Lingvo"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -314,7 +461,7 @@ msgstr ""
"{numCitations} citaĵoj de la {firstCitationVelocityYear}-a jaro ĝis la "
"{lastCitationVelocityYear}-a jaro"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -324,7 +471,7 @@ msgstr ""
"dosierformo. TineEye nur subtenas bildojn, kiuj estas JPEG, PNG, GIF, "
"BMP, TIFF aŭ WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -332,57 +479,41 @@ msgstr ""
"La bildo estas tro simpla por trovi kongruojn. TinEye bezonas bazan "
"levelon de detalo por sukcese identigi kongruojn."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "La bildo ne eblis elŝuti."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Mateno"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Tagmezo"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Vespero"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nokto"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Taksado de libro"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Dosiera kvalito"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Konvertas ĉenojn al malsamaj hash-digestoj."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "haketa mesaĝaro"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Gastnomo anstataŭigas"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Reskribi rezultajn gastigajn nomojn aŭ forigi rezultojn bazitajn sur la "
"gastiga nomo"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Malfermalira COI-ŝanĝo"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -390,11 +521,11 @@ msgstr ""
"Eviti pagomurojn per direkto al malfermaliraj versioj de eldonaĵoj, se "
"eblas"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Meminformoj"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -402,11 +533,11 @@ msgstr ""
"Montras vian IP-adreson se la serĉofrazo estas \"ip\" kaj vian klientan "
"aplikaĵon se la serĉofrazo enhavas \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor-kontrolo kromprogramo"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -415,7 +546,7 @@ msgstr ""
" informas la uzanton ĉu ĝi estas; kiel check.torproject.org, sed de "
"SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -423,7 +554,7 @@ msgstr ""
"Ne eblis elŝuti liston de Tor elirnodoj de: https://check.torproject.org"
"/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -431,15 +562,15 @@ msgstr ""
"Vi uzas Tor kaj ŝajnas, ke vi havas ĉi tiun eksteran IP-adreson: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Vi ne uzas Tor kaj vi havas ĉi tiun eksteran IP-adreson: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Forigilo de URL-spuriloj"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Forviŝi spurajn argumentojn el la ricevita URL"
@ -456,45 +587,45 @@ msgstr "Iri al %(search_page)s."
msgid "search page"
msgstr "Serĉopaĝo"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Donacu"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Agordoj"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Funkciigita per"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "privateco-respektanta, libera metaserĉilo"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Fontaĵo"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Spurilo de problemoj"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistikoj pri la motoro"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Publikaj instancoj"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Regularo pri privateco"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontaktu instancon prizorganto"
@ -1757,3 +1888,4 @@ msgstr "kaŝi videojn"
#~ "ni ne trovis rezultojn. Bonvole uzu "
#~ "alian serĉfrazon aŭ serĉu en pliaj "
#~ "kategorioj."

View File

@ -31,19 +31,18 @@
# sserra <sserra@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-06 00:18+0000\n"
"Last-Translator: sserra <sserra@users.noreply.translate.codeberg.org>\n"
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
"searxng/es/>\n"
"Language: es\n"
"Language-Team: Spanish "
"<https://translate.codeberg.org/projects/searxng/searxng/es/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -86,6 +85,16 @@ msgstr "imágenes"
msgid "videos"
msgstr "vídeos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -177,116 +186,256 @@ msgid "Uptime"
msgstr "Tiempo de actividad"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Acerca de"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Tarde"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Mañana"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Noche"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Mediodía"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Ningún artículo encontrado"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Fuente"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Error al cargar la siguiente página"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Ajustes inválidos, por favor, cambia tus preferencias"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ajustes inválidos"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "error en la búsqueda"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "expirado"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "error de análisis"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "Error de protocolo HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "error de red"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Error SSL: la validación del certificado ha fallado"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "cierre inesperado"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "Error de HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "Error de conexión HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "error de proxy"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "demasiadas peticiones"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "acceso denegado"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "error en la API del servidor"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspendido"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "hace {minutes} minuto(s)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generador de valores aleatorios"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generar varios valores aleatorios"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Funciones de estadística"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Calcular las funciones {functions} de parámetros dados"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Obtener indicaciones"
@ -298,31 +447,28 @@ msgstr "{title} (OBSOLETO)"
msgid "This entry has been superseded by"
msgstr "Esta entrada ha sido sustituida por"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Canal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "Tasa de bits"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "votos"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clics"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Idioma"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -330,7 +476,7 @@ msgstr ""
"{numCitations} citas desde el año {firstCitationVelocityYear} hasta "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -340,7 +486,7 @@ msgstr ""
"archivo no compatible. TinEye solo admite imágenes que son JPEG, PNG, "
"GIF, BMP, TIFF o WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -349,57 +495,41 @@ msgstr ""
"requiere un nivel básico de detalle visual para identificar con éxito las"
" coincidencias."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "No se pudo descargar la imagen."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Mañana"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Mediodía"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Tarde"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Noche"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Valoración del libro"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Calidad de los archivos"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Convierte cadenas de texto a diferentes resúmenes hash."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "resumen de hash"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Sustituir el nombre de host"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Reescribir los nombres de host de los resultados o eliminar los "
"resultados en función del nombre de host"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Reescribir DOI (Identificador de objeto digital) de Open Access"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -407,11 +537,11 @@ msgstr ""
"Evitar barreras de pago redireccionando a las versiones de acceso libre "
"de las publicaciones cuando estén disponibles"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Información propia"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -419,11 +549,11 @@ msgstr ""
"Muestra tu dirección IP si la consulta es \"ip\" y tu Agente de Usuario "
"si la consulta contiene \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Plugin de comprobación de Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -432,7 +562,7 @@ msgstr ""
"salida de Tor, e informa al usuario si lo es; como check.torproject.org, "
"pero desde SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -440,7 +570,7 @@ msgstr ""
"No se pudo descargar la lista de nodos de salida de Tor desde: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -448,15 +578,15 @@ msgstr ""
"Estás usando Tor y parece que tienes esta dirección IP externa: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "No estás usando Tor y tienes esta dirección IP externa: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Removedor de URL rastreadora"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Remueve los argumentos de rastreadores de la URL devuelta"
@ -473,45 +603,45 @@ msgstr "Ir a %(search_page)s."
msgid "search page"
msgstr "página de búsqueda"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Donar"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Preferencias"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Desarrollado por"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "Un metabuscador de código abierto que respeta la privacidad"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Código fuente"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Rastreador de problemas"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Estadísticas del motor de búsqueda"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Instancias públicas"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Politica de privacidad"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Contactar al mantenedor de la instancia"
@ -1808,3 +1938,4 @@ msgstr "ocultar video"
#~ "No encontramos ningún resultado. Por "
#~ "favor, formule su búsqueda de otra "
#~ "forma o busque en más categorías."

View File

@ -12,19 +12,19 @@
# pixrobot <pixrobot@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-25 23:18+0000\n"
"Last-Translator: pixrobot <pixrobot@users.noreply.translate.codeberg.org>\n"
"Language-Team: Estonian <https://translate.codeberg.org/projects/searxng/"
"searxng/et/>\n"
"Last-Translator: pixrobot <pixrobot@users.noreply.translate.codeberg.org>"
"\n"
"Language: et\n"
"Language-Team: Estonian "
"<https://translate.codeberg.org/projects/searxng/searxng/et/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -67,6 +67,16 @@ msgstr "pildid"
msgid "videos"
msgstr "videod"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "raadio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -158,116 +168,256 @@ msgid "Uptime"
msgstr "Kasutusaeg"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Teave"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Õhtu"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Hommik"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Öö"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Keskpäev"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Üksust ei leitud"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Allikas"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Viga järgmise lehekülje laadimisel"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Sobimatud seaded, palun muuda oma eelistusi"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Sobimatud seaded"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "otsingu viga"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "aeg maha"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "parsimise viga"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP-protokolli viga"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "võrguviga"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL viga: sertifikaadi valideerimine ebaõnnestus"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "ootamatu krahh"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP-viga"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP-ühenduse viga"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxy viga"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "liiga palju taotlusi"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "ligipääs keelatud"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "serveri API viga"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Peatatud"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minut(it) tagasi"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} tund(i), {minutes} minut(it) tagasi"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Juhusliku väärtuse generaator"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Genereeri erinevaid juhuslikke väärtusi"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistikafunktsioonid"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Arvuta argumentide {functions}"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Hangi juhised"
@ -279,31 +429,28 @@ msgstr "{title} (VANANENUD)"
msgid "This entry has been superseded by"
msgstr "See üksus on asendatud"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "raadio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitikiirus"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "hääled"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikid"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Keel"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -311,7 +458,7 @@ msgstr ""
"{numCitations} aasta tsitaadid {firstCitationVelocityYear} kuni "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -321,7 +468,7 @@ msgstr ""
"TinEye ainult lubab ainult järgmisi formaate: JPEG, PNG, GIF, BMP, TIFF "
"või WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -329,57 +476,41 @@ msgstr ""
"Pilt on liiga lihtne, et leida vasteid. TinEye nõuab vastete edukaks "
"tuvastamiseks elementaarseid visuaalseid üksikasju."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Pilti ei saanud alla laadida."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Hommik"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Keskpäev"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Õhtu"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Öö"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Raamatu hinnang"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Faili kvaliteet"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Teisendab stringid erinevateks hash-digestideks."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash-digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Hostnime asendamine"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Tulemuste hostinimede ümberkirjutamine või tulemuste eemaldamine "
"hostinime alusel"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Avatud juurdepääsu DOI ümberkirjutamine"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -387,11 +518,11 @@ msgstr ""
"Väldi maksumüüre, suunates võimalusel väljaannete avatud ligipääsuga "
"versioonidele"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Eneseteave"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -399,19 +530,20 @@ msgstr ""
"Kuvab sinu IP'd, kui päringuks on \"ip\" ning kasutajaagenti, kui "
"päringuks on \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor kontrollplugin"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
"See plugin kontrollib, kas päringu aadress on Tor'i väljumissõlm ja teavitab "
"kasutajat, kui see on nii: nagu check.torproject.org, aga alates SearXNG."
"See plugin kontrollib, kas päringu aadress on Tor'i väljumissõlm ja "
"teavitab kasutajat, kui see on nii: nagu check.torproject.org, aga alates"
" SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -419,22 +551,23 @@ msgstr ""
"Ei saanud alla laadida Tori väljumissõlmede nimekiri aadressilt: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
"Te kasutate Tor'i ja tundub, et teil on see väline IP-aadress: {ip_address}"
"Te kasutate Tor'i ja tundub, et teil on see väline IP-aadress: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Te ei kasuta Tor'i ja teil on see väline IP-aadress: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Jälitajate eemaldus URList"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Eemaldab jälitavad argumendid tagastatud URList"
@ -451,45 +584,45 @@ msgstr "Mine %(search_page)s."
msgid "search page"
msgstr "otsinguleht"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Anneta"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Eelistused"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Põhineb tarkvaral"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "üks privaatsust austav, vaba metaotsingumootor"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Lähtekood"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Vigade loetelu"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Mootori statistika"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Avalikud eksemplarid"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Privaatsus poliitika"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Võtke ühendust instantsi hooldajaga"
@ -527,8 +660,8 @@ msgstr "Palun uurige olemasolevate selle otsingumootori tõrgete kohta GitHubist
#: searx/templates/simple/new_issue.html:69
msgid "I confirm there is no existing bug about the issue I encounter"
msgstr ""
"Ma kinnitan et mul ei ole olemasolevat viga probleemi kohta millega ma kokku "
"puutun"
"Ma kinnitan et mul ei ole olemasolevat viga probleemi kohta millega ma "
"kokku puutun"
#: searx/templates/simple/new_issue.html:71
msgid "If this is a public instance, please specify the URL in the bug report"
@ -1003,8 +1136,8 @@ msgid ""
"This tab does not exists in the user interface, but you can search in "
"these engines by its !bangs."
msgstr ""
"Seda vahekaarti ei ole kasutajaliideses olemas, kuid te saate otsida neis "
"mootorites selle !bang järgi."
"Seda vahekaarti ei ole kasutajaliideses olemas, kuid te saate otsida neis"
" mootorites selle !bang järgi."
#: searx/templates/simple/preferences/engines.html:19
msgid "!bang"
@ -1063,8 +1196,8 @@ msgid ""
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
"key on main or result page to get help."
msgstr ""
"Otsingutulemustes navigeerimine kiirklahvide abil (Vajalik JavaScript). Abi "
"saamiseks vajutage põhi või tulemuslehel klahvi \"h\"."
"Otsingutulemustes navigeerimine kiirklahvide abil (Vajalik JavaScript). "
"Abi saamiseks vajutage põhi või tulemuslehel klahvi \"h\"."
#: searx/templates/simple/preferences/image_proxy.html:2
msgid "Image proxy"
@ -1131,8 +1264,8 @@ msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories"
msgstr ""
"Teostage otsing kohe kui kategooria on valitud. Mitme kategooria valimiseks "
"keelake"
"Teostage otsing kohe kui kategooria on valitud. Mitme kategooria "
"valimiseks keelake"
#: searx/templates/simple/preferences/theme.html:2
msgid "Theme"
@ -1751,3 +1884,4 @@ msgstr "peida video"
#~ "me ei leidnud ühtegi tulemust. Palun "
#~ "kasuta teist päringut või otsi "
#~ "rohkematest kategooriatest."

View File

@ -13,19 +13,18 @@
# alexgabi <alexgabi@disroot.org>, 2023, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-11 04:54+0000\n"
"Last-Translator: alexgabi <alexgabi@disroot.org>\n"
"Language-Team: Basque <https://translate.codeberg.org/projects/searxng/"
"searxng/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"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -68,6 +67,16 @@ msgstr "irudiak"
msgid "videos"
msgstr "bideoak"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "irratia"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -159,116 +168,256 @@ msgid "Uptime"
msgstr "Epea"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Honi buruz"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Arratsaldean"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Goizean"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Gauean"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Eguerdian"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Ez da elementurik aurkitu"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Iturria"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Errorea hurrengo orrialdea kargatzean"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Ezarpen baliogabeak, editatu zure hobespenak"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ezarpen baliogabeak"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "bilaketa akatsa"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "itxarote-denbora"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "analizatze errorea"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP protokoloaren errorea"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "sareko errorea"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL errorea: ziurtagiria baliozkotzeak huts egin du"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "ustekabeko kraskatzea"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP errorea"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP konexioaren errorea"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxy-aren errorea"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "eskaera gehiegi"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "sarbidea ukatua"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "API zerbitzariaren errorea"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Etenda"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "duela {minutes} minutu"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "duela {hours} ordu eta {minutes} minutu"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Ausazko balio sortzailea"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Ausazko balio ezberdinak sortu"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Funtzio estatistikoak"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Kalkulatu argumentuen {funtzioak}"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Lortu jarraibideak"
@ -280,31 +429,28 @@ msgstr "{title} (ZAHARKITUA)"
msgid "This entry has been superseded by"
msgstr "Sarrera hau hurrengoarekin ordezkatu da"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanala"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "irratia"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bit emaria"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "botoak"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikak"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Hizkuntza"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -312,7 +458,7 @@ msgstr ""
"{numCitations} aipamen {firstCitationVelocityYear} urtetik "
"{lastCitationVelocityYear} bitartekoak"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -322,7 +468,7 @@ msgstr ""
"fitxategi-formatu baten ondorioz izatea. TinEye-k JPEG, PNG, GIF, BMP, "
"TIFF edo WebP diren irudiak soilik onartzen ditu."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -330,57 +476,41 @@ msgstr ""
"Irudia sinpleegia da antzekoak aurkitzeko. TinEye-k oinarrizko xehetasun "
"bisual bat behar du antzekoak ongi identifikatzeko."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Ezin izan da deskargatu irudia."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Goizean"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Eguerdian"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Arratsaldean"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Gauean"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Liburuaren balorazioa"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Fitxategiaren kalitatea"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Kateak traola laburpen desberdinetara bihurtzen ditu."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "traola laburpena"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Ostalariaren izena ordezkatu"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Berridatzi emaitzen ostalari-izenak edo kendu emaitzak ostalari-izenaren "
"arabera"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Berridatzi Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -388,11 +518,11 @@ msgstr ""
"Saihestu ordain-hormak argitalpenen sarbide irekiko bertsioetara "
"birbideratuz, ahal denean"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Norberaren informazioa"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -400,11 +530,11 @@ msgstr ""
"Zure IPa bistaratzen du kontsulta \"ip\" bada eta zure erabiltzaile-"
"agentea kontsultak \"erabiltzaile-agentea\" badu."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor check plugina"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -413,7 +543,7 @@ msgstr ""
" du eta hala ote den jakinarazten dio erabiltzaileari; "
"check.torproject.org bezala, baina SearXNG-tik."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -421,7 +551,7 @@ msgstr ""
"Ezin izan da Tor irteera-nodoen zerrenda deskargatu: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -429,15 +559,15 @@ msgstr ""
"Tor erabiltzen ari zara eta kanpoko IP helbide hau duzula dirudi: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Ez zara Tor erabiltzen ari eta kanpoko IP helbide hau duzu: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "URL aztarnariak kendu"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Aztarnarien argumentuak kendu itzulitako URLtik"
@ -454,45 +584,45 @@ msgstr "%(search_page)s(e)ra joan."
msgid "search page"
msgstr "bilaketa orria"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Lagundu diruz"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Hobespenak"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Garatzailea"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "pribatutasuna errespetatzen duen metabilatzaile irekia"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Iturburu-kodea"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Arazoen jarraipena"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Bilatzaileen estatistikak"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Instantzia publikoak"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Pribatutasun politika"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Instantziaren mantentzailearekin harremanetan jarri"
@ -1758,3 +1888,4 @@ msgstr "ezkutatu bideoa"
#~ "ez dugu emaitzarik aurkitu. Mesedez "
#~ "beste kontsulta bat egin edo bilatu "
#~ "kategoria gehiagotan."

View File

@ -17,19 +17,18 @@
# tegcope <tegcope@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-06 00:18+0000\n"
"Last-Translator: tegcope <tegcope@users.noreply.translate.codeberg.org>\n"
"Language-Team: Persian <https://translate.codeberg.org/projects/searxng/"
"searxng/fa/>\n"
"Language: fa_IR\n"
"Language-Team: Persian "
"<https://translate.codeberg.org/projects/searxng/searxng/fa/>\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -72,6 +71,16 @@ msgstr "تصاویر"
msgid "videos"
msgstr "ویدیوها"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "رادیو"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -163,116 +172,256 @@ msgid "Uptime"
msgstr "زمان به کار سرور"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "درباره"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "عصر"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "صبح"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "شب"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "ظهر"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "چیزی پیدا نشد"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "منبع"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "خطا در بارگزاری صفحه جدید"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "تنظیمات نادرست است، لطفا تنظیمات جستجو را تغییر دهید"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "تنظیمات نادرست"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "خطای جست‌وجو"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "مهلت پاسخ‌دهی به پایان رسید"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "خطای تجزیه"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "خطای پروتکل HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "خطای شبکه"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "ارور SSL:اعتبار سنجی گواهی امنیتی SSL ناموفق بود"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "مشکل غیرمنتظره"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "خطای HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "خطای اتصال HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "خطای پروکسی"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "کپچا"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "درخواست‌های زیاد"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "دسترسی مجاز نیست"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "خطای API سرور"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "تعلیق‌شده"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} دقیقه پیش"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} ساعت و {minutes} دقیقه پیش"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "ایجادگر مقدار تصادفی"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "ایجاد مقادیر تصادفی متفاوت"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "توابع آماری"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "پردازش {functions} از آرگومان ها"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "دستورهای دریافت"
@ -284,31 +433,28 @@ msgstr "{title} (منسوخ شده)"
msgid "This entry has been superseded by"
msgstr "این ورودی معلق شده است، توسط"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "کانال"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "رادیو"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "بیت ریت"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "رای ها"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "کلیک ها"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "زبان"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -316,17 +462,17 @@ msgstr ""
"{numCitations} نقل قول از سال {firstCitationVelocityYear} تا "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
"نمی‌توان آدرسِ URL تصویر را خواند. این ممکن است به دلیل فرمت فایل پشتیبانی "
"نشده ای باشد. TinEye فقط تصویر های با فرمت JPEG، PNG، GIF، BMP، TIFF یا WebP "
"را پشتیبانی می‌کند."
"نمی‌توان آدرسِ URL تصویر را خواند. این ممکن است به دلیل فرمت فایل "
"پشتیبانی نشده ای باشد. TinEye فقط تصویر های با فرمت JPEG، PNG، GIF، BMP، "
"TIFF یا WebP را پشتیبانی می‌کند."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -334,55 +480,39 @@ msgstr ""
"تصویر برای یافتن موارد منطبق بسیار ساده است. TinEye برای شناسایی موفق به "
"سطح اولیه جزئیات بصری نیاز دارد."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "تصویر نمیتواند دانلود شود."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "صبح"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "ظهر"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "عصر"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "شب"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "رتبه بندی کتاب"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "کیفیت فایل"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "رشته‌ها را به چکیده‌های هش تبدیل می‌کند."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "چکیدهٔ هش"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "جایگزینی نام میزبان"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "نام میزبان نتایج را بازنویسی کنید یا نتایج را بر اساس نام میزبان حذف کنید"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "بازنویسی DOI Access را باز کنید"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -390,11 +520,11 @@ msgstr ""
"با هدایت مجدد به نسخه‌های دسترسی آزاد انتشارات در صورت وجود، از دیوارهای "
"پرداخت اجتناب کنید"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "اطلاعات شخصی"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -402,11 +532,11 @@ msgstr ""
"اگر پرس و جو \"ip\" باشد IP شما و اگر پرس و جو حاوی \"عامل کاربر\" باشد، "
"عامل کاربری شما را نشان می دهد."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "افزونه بررسی Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -415,7 +545,7 @@ msgstr ""
"و در صورت وجود آن به کاربر اطلاع می دهد. مانند check.torproject.org، اما "
"از SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -423,7 +553,7 @@ msgstr ""
"نمی توان لیست گره های خروج Tor را از: https://check.torproject.org/exit-"
"addresses دانلود کرد"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -431,15 +561,15 @@ msgstr ""
"شما از Tor استفاده می کنید و به نظر می رسد این آدرس IP خارجی را دارید: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "شما از Tor استفاده نمی کنید و این آدرس IP خارجی را دارید: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "حذف کننده URL ردیاب"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "آرگومان های ردیاب ها را از URL برگشتی حذف کنید"
@ -456,45 +586,45 @@ msgstr "برو به %(search_page)s."
msgid "search page"
msgstr "صفحهٔ جست‌وجو"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "اهداء کردن"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "تنظیمات"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "قدرت گرفته از<br>"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "یک موتور فراجستجوی آزاد که به حریم خصوصی احترام می گذارد"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "کد منبع"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "ردیاب مشکل"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "آمار موتور"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "نمونه‌های عمومی"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "سیاست حفظ حریم خصوصی"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "تماس با مسئول‌نگهداری نمونه"
@ -1066,8 +1196,8 @@ msgid ""
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
"key on main or result page to get help."
msgstr ""
"هدایت نتایج جست‌وجو با کلید های میانبر (نیازمند JavaScript). برای راهنمایی،"
" کلید «h» را در صفحه اصلی یا صفحه نتایج فشار دهید."
"هدایت نتایج جست‌وجو با کلید های میانبر (نیازمند JavaScript). برای "
"راهنمایی، کلید «h» را در صفحه اصلی یا صفحه نتایج فشار دهید."
#: searx/templates/simple/preferences/image_proxy.html:2
msgid "Image proxy"
@ -1134,8 +1264,8 @@ msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories"
msgstr ""
"انجام دادن جست‌وجو درجا درصورت انتخاب یک دسته بندی. برای انتخاب بیش از یک "
"دسته بندی غیر فعال کنید"
"انجام دادن جست‌وجو درجا درصورت انتخاب یک دسته بندی. برای انتخاب بیش از یک"
" دسته بندی غیر فعال کنید"
#: searx/templates/simple/preferences/theme.html:2
msgid "Theme"
@ -1771,3 +1901,4 @@ msgstr "پنهان‌سازی ویدئو"
#~ "چیزی پیدا نشد. لطفاً ورودی دیگری "
#~ "را بیازمایید یا در دسته‌‌های بیش‌تری "
#~ "جست‌وجو کنید."

View File

@ -11,19 +11,19 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-22 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Finnish <https://translate.codeberg.org/projects/searxng/"
"searxng/fi/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\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"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -66,6 +66,16 @@ msgstr "kuvat"
msgid "videos"
msgstr "videot"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -157,116 +167,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Tietoa SearXNG:stä"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Ilta"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Aamu"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Yö"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Päivä"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Tietuetta ei löytynyt"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Lähde"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Virhe ladattaessa seuraavaa sivua"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Virheelliset asetukset, muokkaa siis asetuksia"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Virheelliset asetukset"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "hakuvirhe"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "aikakatkaistu"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "jäsentämisvirhe"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP-protokollavirhe"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "verkkovirhe"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL-virhe: sertifikaatin vahvistus epäonnistui"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "odottamaton kaatuminen"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP-virhe"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP-yhteysvirhe"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxy-virhe"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "liian monta pyyntöä"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "pääsy kielletty"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "palvelimen API-virhe"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Keskeytetty"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minuutti(a) sitten"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} tunti(a), {minutes} minuutti(a) sitten"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Satunnaisluvun generaattori"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generoi satunnaislukuja"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Tilastolliset funktiot"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Laske argumenttien {functions}"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Reittiohjeet"
@ -278,31 +428,28 @@ msgstr "{title} (VANHENTUNUT)"
msgid "This entry has been superseded by"
msgstr "Tämän kohdan on korvannut"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanava"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bittinopeus"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "ääntä"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikkaukset"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Kieli"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -310,7 +457,7 @@ msgstr ""
"{numCitations} Sitaatit vuodesta {firstCitationVelocityYear} vuoteen "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -320,7 +467,7 @@ msgstr ""
" jota ei tueta. TinEye tukee vain kuvia, jotka ovat JPEG, PNG, GIF, BMP, "
"TIFF tai WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -328,57 +475,41 @@ msgstr ""
"Kuva on liian yksinkertainen löytääkseen osumia. TinEye vaatii "
"visuaalisen tarkkuuden perustason, jotta osumien tunnistaminen onnistuu."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Tätä kuvaa ei voida ladata."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Aamu"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Päivä"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Ilta"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Yö"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Kirjan arvostelu"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Tiedoston laatu"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Muuntaa merkkijonot erilaisiksi hash-digesteiksi."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash-digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Isäntänimen korvaus"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Kirjoita tuloksien isäntänimiä uudelleen tai poista tulokset isäntänimen "
"perusteella"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Open Access DOI -uudelleenkirjoitus"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -386,11 +517,11 @@ msgstr ""
"Vältä maksumuureja ohjaamalla julkaisujen avoimiin versioihin jos "
"mahdollista"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Tietojasi"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -398,11 +529,11 @@ msgstr ""
"Näyttää IP-osoitteesi jos hakuehtosi on \"ip\" ja selaimen tunnistetiedot"
" jos hakuehtosi sisältää sanat \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor-verkon tarkistus lisäosa"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -411,7 +542,7 @@ msgstr ""
"käyttäjälle, jos se on, samalla tavalla kuin check.torproject.org, mutta "
"SearXNGista."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -419,7 +550,7 @@ msgstr ""
"Lopetuspisteiden luettelo Tor-verkon poistumisreiteistä ei voitu ladata "
"osoitteesta: https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -427,15 +558,15 @@ msgstr ""
"Käytät Tor-verkkoa ja vaikuttaa siltä, että sinulla on tämä ulkoinen IP-"
"osoite: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Et käytä Tor-verkkoa ja sinulla on tämä ulkoinen IP-osoite: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Seurantapalvelimen osoitteen poistaja"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Poista seurantapalvelinten argumentit palautetusta osoitteesta"
@ -452,45 +583,45 @@ msgstr "Siirry %(search_page)s."
msgid "search page"
msgstr "hakusivulle"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Lahjoita"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Asetukset"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Taustavoimana"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "yksityisyyttä kunnioittava, avoin metahakukone"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Lähdekoodi"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Ongelmien seuranta"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Hakukoneen tilastot"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Julkiset palvelimet"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Tietosuojakäytäntö"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Ota yhteyttä palvelun ylläpitäjään"
@ -1771,3 +1902,4 @@ msgstr "piilota video"
#~ "löytynyt. Etsi käyttäen eri hakuehtoja "
#~ "tai ulota hakusi nykyistä useampiin eri"
#~ " luokkiin."

View File

@ -13,20 +13,19 @@
# Kita Ikuyo <searinminecraft@courvix.com>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-03 13:28+0000\n"
"Last-Translator: Kita Ikuyo <searinminecraft@courvix.com>\n"
"Language-Team: Filipino <https://translate.codeberg.org/projects/searxng/"
"searxng/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"
"Content-Type: text/plain; charset=utf-8\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.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -69,6 +68,16 @@ msgstr "larawan"
msgid "videos"
msgstr "mga bidyo"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radyo"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -160,116 +169,256 @@ msgid "Uptime"
msgstr "\"uptime\""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Tungkol"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Hapon"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Umaga"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Gabi"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Tanghali"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Walang nakita na aytem"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Pinagmulan"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Error sa paglo-load ng susunod na pahina"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Di-wastong mga setting, pakibago ang iyong mga kagustuhan"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Di-wastong mga setting"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "nagkaproblema sa paghahanap ng mga resulta"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "panandaliang pagtigil"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "error sa pag-parse ng mga resulta"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "Error sa HTTPS protokol"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "Network Error"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL error: Nabigo ang pagpapatunay ng sertipiko"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "Hindi inaasahang pagbagsak"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP error"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "Error sa koneksyong HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "Proxy Error"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "masyadong maraming mga kahilingan"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "tinanggihan ang access"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "pagkakamali sa server API"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspendido"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} na minuto ang nakalipas"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} oras at {minutes} na minto ang nakalipas"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Random na generator ng halaga"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Maglabas ng iba't ibang halaga"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Estatistika ng mga tungkulin"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Tuusin ang {functions} ng pangangatuwiran"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Kumuha ng direksyon"
@ -281,31 +430,28 @@ msgstr "{title} (Luma)"
msgid "This entry has been superseded by"
msgstr "Ang tala na ito ay ipinagpaliban ng"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Tyanel"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radyo"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitrate"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "mga boto"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "mga click"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Wika"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -313,7 +459,7 @@ msgstr ""
"{numCitations} mga sipi mula sa taon {firstCitationVelocityYear} at "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -322,7 +468,7 @@ msgstr ""
"Hindi mabasa ang url ng imahe. Baka ang format ay hindi suportado. JPEG, "
"PNG, GIF, BMP, TIFF o WebP lamang ang tinatanggap ng TinEye."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -330,55 +476,39 @@ msgstr ""
"Masyadong payak ang imahe. Gusto ni TinEye ng higit pang detalye para "
"makahanap ng katugma."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Hindi ma-download ang imahe na ito."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Umaga"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Tanghali"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Hapon"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Gabi"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "rating ng libro"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Kalidad ng file"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Isinasalin ang string sa iba't ibang hash digests."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "Hash digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Palitan ang hostname"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Palitan ang resulta ng hostname o tanggalin ang resulta base sa hostname"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Malayang akses sa muling pagsulat ng DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -386,11 +516,11 @@ msgstr ""
"Iwasan ang paywall sa pag-redirect sa open-access na bersyon ng "
"pahahayagan kapagmakukuha"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Pansariling impormasyon"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -398,11 +528,11 @@ msgstr ""
"Ipapakita ang iyong IP kapag ang tanong ay \"ip\" at ang iyong user agent"
" kapag ang sa tanong ay naglalaman ng \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor check plugin"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -411,7 +541,7 @@ msgstr ""
" exit node, at i-iinform ang user kung oo, gaya ng check.torproject.org "
"ngunit SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -419,7 +549,7 @@ msgstr ""
"Hindi ma-download ang listahan ng mga Tor exit-node mula sa: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -427,17 +557,17 @@ msgstr ""
"Ginagamit mo ang Tor at mukang ito ang iyong external IP address: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
"Hindi mo ginagamit ang Tor at ito ang iyong external IP address: "
"{ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Alisin ang URL tracker"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Alisin ang tracker sa ibabalik na URL"
@ -454,45 +584,45 @@ msgstr "Pumunta sa %(search_page)s."
msgid "search page"
msgstr "ang pahina ng paghahanap"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Magbigay"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Mga Kagustuhan"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Pinapatakbo ng"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "isang nagrerespeto sa privacy, at open na metasearch engine"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "sors kowd"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Tagasubaybay ng isyu"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Engine stats"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Pampublikong instances"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Polisiyang pampribado"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontakin ang iyong instance maintainer"
@ -1784,3 +1914,4 @@ msgstr "itago ang video"
#~ "wala kaming nakita na resulta. Pakiusap"
#~ " na ibahin ang tanong o maghanap "
#~ "sa maraming uri."

View File

@ -21,20 +21,19 @@
# GeoffreyGx <GeoffreyGx@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-12 17:28+0000\n"
"Last-Translator: GeoffreyGx <GeoffreyGx@users.noreply.translate.codeberg.org>"
"\n"
"Language-Team: French <https://translate.codeberg.org/projects/searxng/"
"searxng/fr/>\n"
"Last-Translator: GeoffreyGx "
"<GeoffreyGx@users.noreply.translate.codeberg.org>\n"
"Language: fr\n"
"Language-Team: French "
"<https://translate.codeberg.org/projects/searxng/searxng/fr/>\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -77,6 +76,16 @@ msgstr "images"
msgid "videos"
msgstr "vidéos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -168,116 +177,256 @@ msgid "Uptime"
msgstr "Temps de fonctionnement"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "À propos"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Soir"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Matin"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nuit"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Midi"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Pas d'élément trouvé"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Source"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Erreur lors du chargement de la page suivante"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Paramètres non valides, veuillez éditer vos préférences"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Paramètres non valides"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "erreur de recherche"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "délai dépassé"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "erreur d'analyse"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "erreur de protocole HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "Erreur de réseau"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Erreur SSL : La vérification du certificat a échoué"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "erreur inattendue"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "erreur HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "erreur de connexion HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "Erreur proxy"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "trop de requêtes"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "accès refusé"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "erreur API du serveur"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspendu"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "il y a {minutes} minute(s)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "il y a {hours} heure(s), {minutes} minute(s)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Générateur de valeur aléatoire"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Crée des valeurs aléatoires différentes"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Fonctions statistiques"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Calcule les {functions} des arguments"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Obtenir l'itinéraire"
@ -289,31 +438,28 @@ msgstr "{title} (OBSOLÈTE)"
msgid "This entry has been superseded by"
msgstr "Cet item a été remplacé par"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Chaîne"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "débit"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "voix"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clics"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Langue"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -321,7 +467,7 @@ msgstr ""
"{numCitations} citations de l'année {firstCitationVelocityYear} à "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -331,7 +477,7 @@ msgstr ""
"fichier non pris en charge. TinEye ne prend en charge que les images au "
"format JPEG, PNG, GIF, BMP, TIFF ou WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -340,55 +486,39 @@ msgstr ""
" d'un niveau de détail visuel minimum pour réussir à identifier les "
"correspondances."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "L'image n'a pas pu être téléchargée."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Matin"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Midi"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Soir"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nuit"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Évaluation du livre"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Qualité du fichier"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Convertit les chaînes de caractères en différents condensés de hachage."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Remplacer les noms de domaine"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Réécrit ou supprime les résultats en se basant sur les noms de domaine"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Utiliser Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -396,11 +526,11 @@ msgstr ""
"Contourne les verrous payants de certaines publications scientifiques en "
"redirigeant vers la version ouverte de ces papiers si elle est disponible"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informations sur le navigateur"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -408,11 +538,11 @@ msgstr ""
"Affiche votre adresse IP si la requête est \"ip\", et affiche votre user-"
"agent si la requête contient \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Plugin de vérification de Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -421,7 +551,7 @@ msgstr ""
"et informe lutilisateur si cen est un; par exemple "
"check.torproject.org, mais depuis SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -429,21 +559,21 @@ msgstr ""
"Erreur lors du téléchargement des noeuds de sortie Tor depuis : "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Vous utilisez Tor et votre adresse IP externe semble être : {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Vous n'utilisez pas Tor et votre adresse IP externe est : {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Nettoyeur d'URL de suivis"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Retire les arguments utilisés pour vous pister des URL retournées"
@ -460,45 +590,45 @@ msgstr "Aller à %(search_page)s."
msgid "search page"
msgstr "la page d'accueil"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Faire un don"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Préférences"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Propulsé par"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "un métamoteur ouvert et respectueux de la vie privée"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Code source"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Suivi des problèmes"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistiques des moteurs"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Instances publiques"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Politique de confidentialité"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Contacter le responsable de l'instance"
@ -1804,3 +1934,4 @@ msgstr "cacher la vidéo"
#~ "nous n'avons trouvé aucun résultat. "
#~ "Effectuez une autre recherche ou changez"
#~ " de catégorie."

View File

@ -9,19 +9,18 @@
# return42 <markus.heiser@darmarit.de>, 2023, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-02-26 16:56+0000\n"
"Last-Translator: ghose <correo@xmgz.eu>\n"
"Language-Team: Galician <https://translate.codeberg.org/projects/searxng/"
"searxng/gl/>\n"
"Language: gl\n"
"Language-Team: Galician "
"<https://translate.codeberg.org/projects/searxng/searxng/gl/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -64,6 +63,16 @@ msgstr "imaxes"
msgid "videos"
msgstr "vídeos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -155,116 +164,256 @@ msgid "Uptime"
msgstr "Activo fai"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Acerca de"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Tarde"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Mañán"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Noite"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Mediodía"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Non se atoparon elementos"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Fonte"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Erro ao cargar a páxina seguinte"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Axustes non válidos, por favor edita a configuración"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Axustes non válidos"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "fallo na busca"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "tempo máximo"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "erro sintáctico"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "erro de protocolo HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "erro de conexión"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Erro SSL: fallou a validación do certificado"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "erro non agardado"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "Erro HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "Erro da conexión HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "erro do proxy"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "demasiadas solicitudes"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "acceso denegado"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "erro na API do servidor"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspendido"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "fai {minutes} minuto(s)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "fai {hours} hora(s), {minutes} minuto(s)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Xerador de valor aleatorio"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Xerar diferentes valores aleatorios"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Funcións de estatística"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Calcula {functions} dos argumentos"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Obter direccións"
@ -276,31 +425,28 @@ msgstr "{title} (OBSOLETO)"
msgid "This entry has been superseded by"
msgstr "Esta entrada foi proporcionada por"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Canle"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "taxa de bits"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "votos"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clicks"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Idioma"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -308,7 +454,7 @@ msgstr ""
"{numCitations} citas desde o ano {firstCitationVelocityYear} ao "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -318,7 +464,7 @@ msgstr ""
"ficheiro non soportado. TinEye só soporta imaxes tipo JPEG, PNG, GIF, "
"BMP, TIFF ou WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -326,57 +472,41 @@ msgstr ""
"A imaxe é demasiado simple para atopar coincidencias. TinEyes require un "
"nivel de detalle básico para poder atopar coincidencias."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Non se puido descargar a imaxe."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Mañán"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Mediodía"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Tarde"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Noite"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Valoración do libro"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Calidade do ficheiro"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Converte o escrito usando diferentes funcións hash."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "función hash"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Substituír servidor"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Reescribir o nome do servidor ou eliminar resultado en función do nome do"
" servidor"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Reescritura Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -384,11 +514,11 @@ msgstr ""
"Evitar valados de pago redireccionando a versións públicas das "
"publicacións cando estén dispoñibles"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Información propia"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -396,11 +526,11 @@ msgstr ""
"Mostra o teu IP se a consulta é \"ip\" e o teu Use Agent se a consulta "
"contén \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Complemento para comprobar Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -409,7 +539,7 @@ msgstr ""
"Tor, e informate de se o é; como check.torproject.org, pero desde "
"SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -417,21 +547,21 @@ msgstr ""
"Non se puido descargar a lista de nodos de saída a Tor desde: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Estás usando Tor e semella que tes este enderezo IP externo: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Non estás usando Tor e tes este endero IP externo: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Eliminador de rastrexadores na URL"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Elimina os elementos de rastrexo da URL devolta"
@ -448,45 +578,45 @@ msgstr "Ir a %(search_page)s."
msgid "search page"
msgstr "páxina de busca"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Doar"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Axustes"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Proporcionado por"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "metabuscador aberto que respecta a privacidade"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Código fonte"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Seguimento de problemas"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Estatísticas do buscador"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Instancias públicas"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Política de privacidade"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Contactar coa administración"
@ -1779,3 +1909,4 @@ msgstr "agochar vídeo"
#~ "non atopamos ningún resultado. Por "
#~ "favor, realiza outra consulta ou busca"
#~ " en máis categorías."

View File

@ -16,20 +16,20 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-18 13:18+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Hebrew <https://translate.codeberg.org/projects/searxng/"
"searxng/he/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: he\n"
"Language-Team: Hebrew "
"<https://translate.codeberg.org/projects/searxng/searxng/he/>\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 "
"&& n % 10 == 0) ? 2 : 3));\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -72,6 +72,16 @@ msgstr "תמונות"
msgid "videos"
msgstr "וידאו"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "רדיו"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -163,116 +173,256 @@ msgid "Uptime"
msgstr "זמינות"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "אודות"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "ערב"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "בוקר"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "לילה"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "צהריים"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "לא נמצא פריט"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "מקור"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "שגיאה בטעינת העמוד הבא"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "הגדרות לא תקינות, עליך לתקן את ההעדפות שלך"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "הגדרות לא תקינות"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "שגיאת חיפוש"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "פקיעת זמן"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "שגיאת ניתוח"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "שגיאת פרוטוקול HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "שגיאת רשת תקשורת"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "שגיאת SSL: אימות התעודה נכשל"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "קריסה לא צפויה"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "שגיאת HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "שגיאת חיבור HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "שגיאת פרוקסי"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "יותר מדי בקשות"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "הגישה נדחתה"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "שגיאת API שרת"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "מושהה"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "לפני {minutes} דקות"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "לפני {hours} שעות, {minutes} דקות"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "מפיק ערך אקראי"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "מייצרת ערכים אקראיים שונים"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "פונקציות סטטיסטיקה"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "מחשבת {functions} של הארגומנטים"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "קבל כיוונים"
@ -284,31 +434,28 @@ msgstr "{title} (OBSOLETE)"
msgid "This entry has been superseded by"
msgstr "רשומה זו הוחלפה על ידי"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "ערוץ"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "רדיו"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "קצב נתונים"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "הצבעות"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "לחיצות"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "שפה"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -316,7 +463,7 @@ msgstr ""
"{numCitations} אזכורים מ {firstCitationVelocityYear} עד "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -326,7 +473,7 @@ msgstr ""
"קובץ שאינו נתמך. TinEye תומך רק בתמונות שהן JPEG, PNG, GIF, BMP, TIFF או "
"WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -334,55 +481,39 @@ msgstr ""
"התמונה הזו הינה יותר מידי פשוטה מכדי למצוא התאמות. TinEye צריך רמה בסיסית"
" של פרטים חזותיים כדי להצליח למצוא התאמות."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "אי אפשר להוריד את תמונה זו."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "בוקר"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "צהריים"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "ערב"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "לילה"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "דירוג ספרים"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "איכות קובץ"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "ממיר מחרוזות לתוך hash digests (לקט גיבוב) שונים."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "החלפת Hostname"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "שכתב hostname של תוצאות או הסר תוצאות בהתבסס על hostname"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "שכתוב Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -390,11 +521,11 @@ msgstr ""
"הימנע מגרסאות paywall על ידי הכוונה מחודשת לגרסאות כניסה-חופשית של "
"כתבי-עת כאשר ישנן"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "מידע עצמי"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -402,11 +533,11 @@ msgstr ""
"מציגה כתובת IP המשוייכת לך אם השאילתא היא \"ip\" וגם סוכן משתמש אם "
"השאילתא מכילה \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "טור בודק תוסף"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -414,7 +545,7 @@ msgstr ""
"תוסף זה בודק אם הכתובת של הבקשה היא צומת יציאה של TOR, ומודיע למשתמש אם "
"כן, כמו check.torproject.org אבל מ-SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -422,21 +553,21 @@ msgstr ""
"לא ניתן להוריד את רשימת צמתי היציאה של טור מ: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "אתה משתמש בטור וזה נראה שיש לך את הIP הזה: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "אינך משתמש/ת ב Tor וזוהי כתובתך: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "הסרת Tracker URL"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "הסר ארגומנטי איתור מתוך URL מוחזר"
@ -453,45 +584,45 @@ msgstr "המשך לעמוד %(search_page)s."
msgid "search page"
msgstr "עמוד חיפוש"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "תרומות"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "העדפות"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "מופעל באמצעות"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "מנוע מטא-חיפוש בקוד חופשי המכבד את פרטיותך"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "קוד מקור"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "דווח על בעיה"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "סטטיסטיקת מנוע חיפוש"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "שרתים מקבילים"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "פוליסת פרטיות"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "צור קשר עם מפעיל השירת"
@ -1744,3 +1875,4 @@ msgstr "הסתר וידאו"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr "לא מצאנו תוצאות. אנא נסו שאילתא אחרת או חפשו בתוך יותר קטגוריות."

View File

@ -15,20 +15,19 @@
# Uzakmo <Uzakmo@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-07 07:18+0000\n"
"Last-Translator: Uzakmo <Uzakmo@users.noreply.translate.codeberg.org>\n"
"Language-Team: Croatian <https://translate.codeberg.org/projects/searxng/"
"searxng/hr/>\n"
"Language: hr\n"
"Language-Team: Croatian "
"<https://translate.codeberg.org/projects/searxng/searxng/hr/>\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -71,6 +70,16 @@ msgstr "slike"
msgid "videos"
msgstr "video zapisi"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -162,116 +171,256 @@ msgid "Uptime"
msgstr "Vrijeme rada"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "O nama"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Večer"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Jutro"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Noć"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Podne"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nije pronađena nijedna stavka"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Izvor"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Greška u učitavnju sljedeće stranice"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Nevažeće postavke, molimo uredite svoje postavke"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Nevažeće postavke"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "greška u pretraživanju"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "pauza"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "pogreška pri raščlanjivanju"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "greška HTTP protokola"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "greška u mreži"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL pogreška: provjera valjanosti certifikata nije uspjela"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "neočekivani prekid"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP greška"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "greška HTTP veze"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxy greška"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "previše upita"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "pristup odbijen"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "server API greška"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Suspendirano"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "prije {minutes} minut(u,e,a)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "prije {hours} sat(i,a) i {minutes} minut(u,e,a)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Nasumični generator vrijednosti"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generirajte različite nasumične vrijednosti"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistične funkcije"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Izračunajte {functions} argumenata"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Dobij upute"
@ -283,31 +432,28 @@ msgstr "{title} (ZASTARJELO)"
msgid "This entry has been superseded by"
msgstr "Ovaj je unos zamijenio"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitrata"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "glasovi"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikovi"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Jezik"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -315,7 +461,7 @@ msgstr ""
"{numCitations} citati iz godine {firstCitationVelocityYear} do "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -325,7 +471,7 @@ msgstr ""
"format dokumenta. TinEye samo podržava slike JPEG, PNG, GIF, BMP, TIFF i "
"WebP formata."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -333,67 +479,51 @@ msgstr ""
"Slika je previše jednostavna da bi se pronašla sličnost. TinEye zahtjeva "
"osnovnu razinu detalja za pronalaženje sličnosti."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Sliku nije moguće preuzeti."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Jutro"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Podne"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Večer"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Noć"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Ocjena knjige"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Kvaliteta datoteke"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Pretvara niz u drukčije hash mješavine."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "Izlaz hash funkcije"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Zamjena lokalnog imena"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Ispravite (prepišite) rezultat hostnameova ili maknite rezultate bazirane na "
"hostname"
"Ispravite (prepišite) rezultat hostnameova ili maknite rezultate bazirane"
" na hostname"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Otvoreni pristup DOI prijepisa"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr "Izbjegnite plaćanje u slučaju dostupnosti besplatne objave"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informacije o sebi"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -401,11 +531,11 @@ msgstr ""
"Prikazuje vašu IP adresu ako je upit \"ip\" i vaš korisnički agent ako "
"upit sadrži \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor plugin za provjeru"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -414,7 +544,7 @@ msgstr ""
"šalje obavijest korisniku, kao check.torproject.org ali od strane "
"SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -422,21 +552,21 @@ msgstr ""
"Nije moguće preuzeti popis Tor izlaznih čvorova s: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Vi koristite Tor i izgleda da imate ovu vanjsku IP adresu: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Vi ne koristite Tor i imate ovu vanjsku IP adresu: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Ukloni praćenje URL-ova"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Ukloni elemente za označavanje rezultata vraćenih s URL-a"
@ -453,45 +583,45 @@ msgstr "Idi na %(search_page)s."
msgid "search page"
msgstr "pretraži stranicu"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Donirajte"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Postavke"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Pokreće"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "otvoreni metapretraživač koji poštuje privatnost"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Izvorni kod"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Tragač problema"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Podaci o tražilici"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Javne instance"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Politika privatnosti"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontaktirajte održavatelja instance"
@ -1771,3 +1901,4 @@ msgstr "sakrij video"
#~ msgstr ""
#~ "nema rezultata pretraživanja. Unesite novi "
#~ "upit ili pretražite u više kategorija."

View File

@ -16,20 +16,19 @@
# meskobalazs <meskobalazs@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-04 14:18+0000\n"
"Last-Translator: meskobalazs <meskobalazs@users.noreply.translate.codeberg."
"org>\n"
"Language-Team: Hungarian <https://translate.codeberg.org/projects/searxng/"
"searxng/hu/>\n"
"Last-Translator: meskobalazs "
"<meskobalazs@users.noreply.translate.codeberg.org>\n"
"Language: hu\n"
"Language-Team: Hungarian "
"<https://translate.codeberg.org/projects/searxng/searxng/hu/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -72,6 +71,16 @@ msgstr "képek"
msgid "videos"
msgstr "videók"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "rádió"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -163,116 +172,256 @@ msgid "Uptime"
msgstr "Üzemidő"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Névjegy"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Este"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Reggel"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Éjszaka"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Dél"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nincs találat"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Forrás"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Hiba a következő oldal betöltése során"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Érvénytelen beállítások, módosítsa őket"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Érvénytelen beállítások"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "keresési hiba"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "időtúllépés"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "feldolgozási hiba"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP protokollhiba"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "hálózati hiba"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL hiba: a tanúsítvány ellenőrzése nem sikerült"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "váratlan összeomlás"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP hiba"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP csatlakozási hiba"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxy hiba"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "túl sok kérés"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "hozzáférés megtagadva"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "kiszolgáló API hiba"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Felfüggesztve"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} perce"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} óra, {minutes} perce"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Véletlenérték-generátor"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Különböző véletlen értékek előállítása"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statisztikai függvények"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "{functions} alkalmazása az argumentumokon"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Útvonaltervezés"
@ -284,31 +433,28 @@ msgstr "{title} (elavult)"
msgid "This entry has been superseded by"
msgstr "Ezt a bejegyzést leváltotta:"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Csatorna"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "rádió"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitráta:"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "szavazatok:"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "kattintások:"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Nyelv"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -316,17 +462,17 @@ msgstr ""
"{numCitations} idézet ebben az évben: {firstCitationVelocityYear} és "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
"Ennek a képnek az webcíme nem olvasható. Ennek az oka a nem támogatott "
"fájlformátum lehet. A TinEye által támogatott formátumok: JPEG, PNG, GIF, "
"BMP, TIFF vagy WebP."
"fájlformátum lehet. A TinEye által támogatott formátumok: JPEG, PNG, GIF,"
" BMP, TIFF vagy WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -334,81 +480,65 @@ msgstr ""
"A kép túl egyszerű a kereséshez. A TinEye-nak szüksége van egy alapvető "
"vizuális részletességre a sikeres kereséshez."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "A kép nem tölthető le."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Reggel"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Dél"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Este"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Éjszaka"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Könyv értékelése"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Fájlminőség"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "A szöveget különböző hash értékekké alakítja."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash érték"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Kiszolgálónév cseréje"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Találatok kiszolgálónevének átírása, vagy a találatok eltávolítása gépnév "
"alapján"
"Találatok kiszolgálónevének átírása, vagy a találatok eltávolítása gépnév"
" alapján"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Szabad DOI használata"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
"Ha lehetséges, elkerüli a fizetőkapukat azáltal, hogy a kiadvány szabadon "
"elérhető változatára irányítja át"
"Ha lehetséges, elkerüli a fizetőkapukat azáltal, hogy a kiadvány szabadon"
" elérhető változatára irányítja át"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Személyes információk"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
"Megjeleníti a saját IP-címét és felhasználói ügynökét, ha a keresése ezeket "
"tartalmazza: „ip” és „user agent”."
"Megjeleníti a saját IP-címét és felhasználói ügynökét, ha a keresése "
"ezeket tartalmazza: „ip” és „user agent”."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor ellenőrző kiegészítő"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -417,7 +547,7 @@ msgstr ""
" és értesíti a felhasználót, ha igen; mint a check.torproject.org, de a "
"SearXNG-től."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -425,25 +555,25 @@ msgstr ""
"Nem sikerült letölteni a Tor kilépési csomópontok listáját innen: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Ön Tort használ, és úgy tűnik, ez a külső IP-címe: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Nem használ Tor kapcsolatot, és ez a külső IP-címe: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Követők eltávolítása a webcímekből"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
"Eltávolítja a felhasználók követéshez használt argumentumokat a találatok "
"webcíméből"
"Eltávolítja a felhasználók követéshez használt argumentumokat a találatok"
" webcíméből"
#: searx/templates/simple/404.html:4
msgid "Page not found"
@ -458,45 +588,45 @@ msgstr "Ugrás a %(search_page)s."
msgid "search page"
msgstr "keresőoldalra"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Támogatás"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Beállítások"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Az oldalt kiszolgálja:"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "egy adatvédelmet tiszteletben tartó, nyílt forráskódú metakereső"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Forráskód"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Hibajegykövető"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Keresőstatisztikák"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Publikus példányok"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Adatvédelmi irányelvek"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kapcsolatfelvétel a példány karbantartójával"
@ -1011,8 +1141,8 @@ msgid ""
"This tab does not exists in the user interface, but you can search in "
"these engines by its !bangs."
msgstr ""
"Ez a lap nem létezik a felhasználói felületen, de ezekben a keresőmotorokban "
"a !bang parancsok segítségével kereshet."
"Ez a lap nem létezik a felhasználói felületen, de ezekben a "
"keresőmotorokban a !bang parancsok segítségével kereshet."
#: searx/templates/simple/preferences/engines.html:19
msgid "!bang"
@ -1035,16 +1165,16 @@ msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
msgstr ""
"Ezek a beállítások böngészősütikben vannak tárolva, így nem kell adatokat "
"tárolnunk Önről."
"Ezek a beállítások böngészősütikben vannak tárolva, így nem kell adatokat"
" tárolnunk Önről."
#: searx/templates/simple/preferences/footer.html:3
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
"Ezek a sütik csak kényelmi funkciókat látnak el, nem használjuk arra, hogy "
"kövessük Önt."
"Ezek a sütik csak kényelmi funkciókat látnak el, nem használjuk arra, "
"hogy kövessük Önt."
#: searx/templates/simple/preferences/footer.html:6
msgid "Save"
@ -1072,7 +1202,8 @@ msgid ""
"key on main or result page to get help."
msgstr ""
"Gyorsbillentyűkkel navigálhat a keresési eredmények között (JavaScript "
"szükséges). Segítségét nyomja meg a „h” gombot a fő vagy a találati oldalon."
"szükséges). Segítségét nyomja meg a „h” gombot a fő vagy a találati "
"oldalon."
#: searx/templates/simple/preferences/image_proxy.html:2
msgid "Image proxy"
@ -1088,8 +1219,7 @@ msgstr "Végtelen görgetés"
#: searx/templates/simple/preferences/infinite_scroll.html:14
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr ""
"Görgetéskor automatikusan betölti a következő oldalt, ha a lap aljára ér"
msgstr "Görgetéskor automatikusan betölti a következő oldalt, ha a lap aljára ér"
#: searx/templates/simple/preferences/language.html:24
msgid "What language do you prefer for search?"
@ -1098,8 +1228,8 @@ msgstr "Milyen nyelven keres?"
#: searx/templates/simple/preferences/language.html:25
msgid "Choose Auto-detect to let SearXNG detect the language of your query."
msgstr ""
"Válassza az „Automatikus” lehetőséget, hogy a SearXNG ismerje fel a keresési "
"nyelvet."
"Válassza az „Automatikus” lehetőséget, hogy a SearXNG ismerje fel a "
"keresési nyelvet."
#: searx/templates/simple/preferences/method.html:2
msgid "HTTP Method"
@ -1118,8 +1248,8 @@ msgid ""
"When enabled, the result page's title contains your query. Your browser "
"can record this title"
msgstr ""
"Ha be van kapcsolva, akkor a találati oldal fejléce tartalmazza a keresést. "
"A böngésző így elmentheti a címét."
"Ha be van kapcsolva, akkor a találati oldal fejléce tartalmazza a "
"keresést. A böngésző így elmentheti a címét."
#: searx/templates/simple/preferences/results_on_new_tab.html:2
msgid "Results on new tabs"
@ -1159,8 +1289,7 @@ msgstr "Téma stílusa"
#: searx/templates/simple/preferences/theme.html:31
msgid "Choose auto to follow your browser settings"
msgstr ""
"A böngésző beállításainak követéséhez válassza az „automatikus” beállítást"
msgstr "A böngésző beállításainak követéséhez válassza az „automatikus” beállítást"
#: searx/templates/simple/preferences/tokens.html:2
msgid "Engine tokens"
@ -1779,3 +1908,4 @@ msgstr "videó elrejtése"
#~ "Nincs megjeleníthető találat. Kérlek, hogy "
#~ "használj másik kifejezést vagy keress "
#~ "több kategóriában."

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2023-06-22 09:02+0000\n"
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
"Language: ia\n"
@ -61,6 +61,16 @@ msgstr "imagines"
msgid "videos"
msgstr "videos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr ""
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -152,116 +162,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr ""
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr ""
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr ""
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr ""
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr ""
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nulle item trovate"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr ""
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Configurationes non valide, per favor, modifica tu preferentias"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Configurationes invalide"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "error in recerca"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr ""
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr ""
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr ""
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr ""
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr ""
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr ""
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr ""
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr ""
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr ""
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr ""
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr ""
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr ""
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr ""
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr ""
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minuta(s) retro"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} hora(s), {minutes} minuta(s) retro"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generator de valores aleatori"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generar differente valores aleatori"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Functiones statistic"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Computa {functions} del argumentos"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr ""
@ -273,98 +423,79 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr "Iste entrata esseva substituite per"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr ""
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr ""
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr ""
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
msgstr ""
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr ""
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Night"
msgstr ""
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr ""
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr ""
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr ""
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr ""
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr ""
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -372,11 +503,11 @@ msgstr ""
"Evita paywalls per redirectionar a versiones de publicationes in accesso "
"aperte, quando disponibile"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -384,37 +515,37 @@ msgstr ""
"Monstra tu IP si le consulta es \"ip\"; e monstra tu agente de usator si "
"le consulta contine \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr ""
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Remover tracker del URL"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Remover argumentos del tracker ab le URL retornate"
@ -431,45 +562,45 @@ msgstr "Ir al %(search_page)s."
msgid "search page"
msgstr "pagina de recerca"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr ""
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Preferentias"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Actionate per"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr ""
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statisticas de motores"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr ""
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""

View File

@ -9,17 +9,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-02-26 16:56+0000\n"
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
"Language-Team: Indonesian <https://translate.codeberg.org/projects/searxng/"
"searxng/id/>\n"
"Language: id\n"
"Language-Team: Indonesian "
"<https://translate.codeberg.org/projects/searxng/searxng/id/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -62,6 +61,16 @@ msgstr "gambar"
msgid "videos"
msgstr "video"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -153,116 +162,256 @@ msgid "Uptime"
msgstr "Waktu aktif"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Tentang"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Sore"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Pagi"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Malam"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Siang"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Item tidak ditemukan"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Sumber"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Gagal memuat halaman berikutnya"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Pengaturan tidak valid, mohon ubah preferensi Anda"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Pengaturan tidak valid"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "kesalahan pencarian"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "waktu habis"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "kesalahan penguraian"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "kesalahan protokol HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "kesalahan jaringan"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Kesalahan SSL: validasi sertifikat gagal"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "kegagalan yang tak terduga"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "kesalahan HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "kesalahan koneksi HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "kesalahan proksi"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "terlalu banyak permintaan"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "akses ditolak"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "kesalahan server API"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Ditangguhkan"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} menit yang lalu"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} jam, {minutes} menit yang lalu"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Penghasil nilai acak"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Menghasilkan nilai-nilai acak yang berbeda"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Fungsi statistik"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Menghitung {functions} dari argumen"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Mendapatkan arah"
@ -274,31 +423,28 @@ msgstr "{title} (USANG)"
msgid "This entry has been superseded by"
msgstr "Masukan ini telah digantikan oleh"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Saluran"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "kecepatan bit"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "suara"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klik"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Bahasa"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -306,7 +452,7 @@ msgstr ""
"{numCitations} kutipan dari tahun {firstCitationVelocityYear} sampai "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -316,7 +462,7 @@ msgstr ""
"yang tidak didukung. TinEye hanya mendukung gambar JPEG, PNG, GIF, BMP, "
"TIFF, atau WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -325,55 +471,39 @@ msgstr ""
"membutuhkan sebuah detail yang dasar untuk mengenal kecocokan dengan "
"berhasil."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Gambar ini tidak dapat diunduh."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Pagi"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Siang"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Sore"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Malam"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Peringkat buku"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Kualitas berkas"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Mengubah string menjadi hash digest yang berbeda."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "intisari hash"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Pengubah nama host"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Tulis ulang nama host hasil atau hapus hasil berdasarkan pada nama host"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Penulisan ulang Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -381,11 +511,11 @@ msgstr ""
"Hindari paywall dengan mengalihkan ke versi yang terbuka dari publikasi "
"saat tersedia"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informasi Diri"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -393,11 +523,11 @@ msgstr ""
"Menampilkan IP Anda jika pencariannya adalah \"ip\" dan agen pengguna "
"Anda jika pencariannya mengandung \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Plugin pemeriksaan Tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -406,7 +536,7 @@ msgstr ""
"memberi tahu pengguna jika benar; seperti check.torproject.org, tetapi "
"dari SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -414,7 +544,7 @@ msgstr ""
"Tidak dapat mengunduh daftar node keluar Tor dari: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -422,17 +552,17 @@ msgstr ""
"Anda sedang menggunakan Tor dan sepertinya Anda memiliki alamat IP "
"eksternal berikut: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
"Anda sedang tidak menggunakan Tor dan Anda memiliki alamat IP eksternal "
"berikut: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Penghapus URL pelacak"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Membuang argumen pelacak dari URL yang dikembalikan"
@ -449,45 +579,45 @@ msgstr "Pergi ke %(search_page)s."
msgid "search page"
msgstr "halaman pencarian"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Donasi"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Preferensi"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Diberdayakan oleh"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "sebuah mesin pencari meta terbuka yang menghormati privasi"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Kode sumber"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Pelacak masalah"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistik mesin"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Instansi umum"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Kebijakan privasi"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Hubungi pengelola instansi"
@ -1658,3 +1788,4 @@ msgstr "sembunyikan video"
#~ "kami tidak menemukan hasil apa pun. "
#~ "Mohon menggunakan pencarian lain atau "
#~ "cari dalam kategori lain."

View File

@ -27,19 +27,19 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-22 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Italian <https://translate.codeberg.org/projects/searxng/"
"searxng/it/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: it\n"
"Language-Team: Italian "
"<https://translate.codeberg.org/projects/searxng/searxng/it/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -82,6 +82,16 @@ msgstr "immagini"
msgid "videos"
msgstr "video"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -173,116 +183,256 @@ msgid "Uptime"
msgstr "Tempo di attività"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "A proposito"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Sera"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Mattina"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Notte"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Mezzogiorno"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nessun oggetto trovato"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Sorgente"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Errore di caricamento della pagina successiva"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Impostazioni non valide, modifica le tue preferenze"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Impostazioni non valide"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "errore di ricerca"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "tempo scaduto"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "errore di analisi"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "errore protocollo HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "errore di rete"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Errore SSL: La verifica del certificato è fallita"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "crash inaspettato"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "errore HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "errore di connessione HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "errore proxy"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "troppe richieste"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "accesso negato"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "errore server API"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Sospeso"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "di {minutes} minuto(i) fa"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "di {hours} ora(e) e {minutes} minuto(i) fa"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generatore di numeri casuali"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Genera più numeri casuali"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Funzioni statistiche"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Calcola {functions} degli argomenti"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Ricevi direzioni"
@ -294,31 +444,28 @@ msgstr "{title} (OBSOLETO)"
msgid "This entry has been superseded by"
msgstr "Questa voce è stata sostituita da"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Canale"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "velocità in bit"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "voti"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clic"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Lingua"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -326,7 +473,7 @@ msgstr ""
"{numCitations} citazioni dall anno {firstCitationVelocityYear} fino al "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -336,7 +483,7 @@ msgstr ""
"formato del file non supportato. TinEye supporta solo immagini JPEG, PNG,"
" GIF, BMP, TIFF o Web."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -345,57 +492,41 @@ msgstr ""
"un maggiore livello di dettagli visivi per identificare corrispondenze "
"con successo."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "L'immagine non può essere scaricata."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Mattina"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Mezzogiorno"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Sera"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Notte"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Valutazione del libro"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Qualità del file"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Converte le stringhe in diversi digest di hash."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "digest dell'hash"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Sostituzione del nome host"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Riscrivere gli hostname dei risultati o rimuovere i risultati in base "
"all'hostname"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Reindirizzamento Open Access DOI"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -403,11 +534,11 @@ msgstr ""
"Se possibile, evita il paywall di una pubblicazione reindirizzando ad una"
" versione ad accesso libero"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informazioni su di sé"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -415,11 +546,11 @@ msgstr ""
"Mostra il tuo IP se hai cercato \"ip\" ed il tuo user agent se hai "
"cercato \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Plugin di verifica tor"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -427,7 +558,7 @@ msgstr ""
"Questo plugin controlla se l'indirizzo richiesto è un nodo di uscita di "
"Tor e informa l'utente se lo è; come check.torproject.org, ma da SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -435,7 +566,7 @@ msgstr ""
"Non ho potuto scaricare la lista dei nodi di uscita di Tor da: "
"https://check.torproject.org?exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -443,15 +574,15 @@ msgstr ""
"Stai usando Tor e sembra che tu abbia il seguente indirizzo IP: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Non stai usando Tor e il tuo indirizzo IP esterno è: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Rimuovi URL traccianti"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Rimuovi gli elementi traccianti dall'indirizzo URL riportato"
@ -468,45 +599,45 @@ msgstr "Vai a %(search_page)s."
msgid "search page"
msgstr "cerca nella pagina"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Dona"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Preferenze"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Offerto da"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "un meta-motore di ricerca web, open source e rispettoso della privacy"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Codice sorgente"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Registratore dei problemi"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistiche dei motori"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Istanze pubbliche"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Politica sulla riservatezza"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Contatta il manutentore dell'istanza"
@ -1803,3 +1934,4 @@ msgstr "nascondi video"
#~ "non abbiamo trovato alcun risultato. "
#~ "Prova una nuova ricerca, o cerca "
#~ "in più categorie."

View File

@ -21,19 +21,18 @@
# syobon <syobon@syobon.net>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-05 21:13+0000\n"
"Last-Translator: tentsbet <remendne@pentrens.jp>\n"
"Language-Team: Japanese <https://translate.codeberg.org/projects/searxng/"
"searxng/ja/>\n"
"Language: ja\n"
"Language-Team: Japanese "
"<https://translate.codeberg.org/projects/searxng/searxng/ja/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -76,6 +75,16 @@ msgstr "画像"
msgid "videos"
msgstr "動画"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "ラジオ"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -167,116 +176,256 @@ msgid "Uptime"
msgstr "稼働時間"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "関連情報"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "夕方"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "朝"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "夜間"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "昼"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "アイテムが見つかりません"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "ソース"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "次のページの読み込み中にエラーが発生しました"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "設定が無効です、設定を変更してください"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "無効な設定です"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "検索エラー"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "タイムアウト"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "解析エラー"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP プロトコルエラー"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "ネットワークエラー"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL エラー: 証明書の検証に失敗しました"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "予期しないクラッシュ"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP エラー"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP 接続エラー"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "プロキシエラー"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "リクエストが多すぎます"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "アクセスが拒否されました"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "サーバー API エラー"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "一時停止"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} 分前"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} 時間と{minutes} 分前"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "ランダムな値を生成"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "異なるランダムな値を生成する"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "統計機能"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "変数の {functions} を計算する"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "経路を取得する"
@ -288,31 +437,28 @@ msgstr "{title} (廃止)"
msgid "This entry has been superseded by"
msgstr "このエントリは、置き換えられました:"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "チャンネル"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "ラジオ"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "ビットレート"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "票数"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "クリック"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "言語"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -320,115 +466,98 @@ msgstr ""
"{firstCitationVelocityYear} 年から "
"{lastCitationVelocityYear}年まで{numCitations} が引用文献として"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr "この画像URLは読み取ることができません。サポートされていないフォーマットだと考えられます。TinEyeはJPEG、PNG、GIF、BMP、TIFF、WebPの画像のみサポートしています。"
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr "画像が単純すぎます。TinEyeが正しく照合を行うにはある程度詳細な視覚情報が必要"
"です。"
msgstr "画像が単純すぎます。TinEyeが正しく照合を行うにはある程度詳細な視覚情報が必要です。"
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "この画像はダウンロードはできません。"
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "朝"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "昼"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "夕方"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "夜間"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "書籍評価点数"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "ファイル品質"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "文字列を異なるハッシュダイジェストに変換。"
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "ハッシュダイジェスト"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "ホストネーム入れ替え"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "結果のホスト名を書き換えるか、ホスト名に基づいて結果を削除します"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "オープンアクセス DOI の書き換え"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr "可能ならば オープンアクセス版の出版物へリダイレクトし、有料出版物を回避する"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "自分の情報"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr "クエリが \"ip\" の場合にあなたのIPを、クエリに \"user agent\" が含まれる場合にあなたのユーザーエージェントを表示します。"
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor 確認プラグイン"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr "このプラグインではcheck.torprogject.orgのようにTor 出口ードのIPアドレスをSearXNGからチェックする。"
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr "「https://check.torproject.org/exit-addresses」からTor 出口ノードの一覧をダウンロードできません"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "あなたの利用しているTorの外部IPアドレスは次のようになっている : {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "あなたはTorを利用しておらず外部IPアドレスは次のようになっている : {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "トラッカー URL リムーバー"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "返された URL からトラッカー引数を消去する"
@ -445,45 +574,45 @@ msgstr "%(search_page)s へ行く。"
msgid "search page"
msgstr "検索ページ"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "寄付"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "設定"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Powered by"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "プライバシーを尊重する、オープンメタ検索エンジン"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "ソースコード"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "課題報告"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "検索エンジンの状態"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "パブリック インスタンス"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "プライバシーポリシー"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "インスタンスメンテナと連絡を取る"
@ -1713,3 +1842,4 @@ msgstr "動画を隠す"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr "検索結果はありませんでした。別のカテゴリ、または他のクエリで検索してください。"

View File

@ -12,17 +12,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-22 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Korean <https://translate.codeberg.org/projects/searxng/"
"searxng/ko/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: ko\n"
"Language-Team: Korean "
"<https://translate.codeberg.org/projects/searxng/searxng/ko/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -65,6 +65,16 @@ msgstr "이미지"
msgid "videos"
msgstr "비디오"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "라디오"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -156,116 +166,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "정보"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "저녁"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "아침"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "밤"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "정오"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "검색 결과가 없습니다"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "소스"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "다음 페이지를 로드하는 동안 오류가 발생했습니다"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "잘못된 설정입니다, 설정을 수정하세요"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "잘못된 설정"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "검색 오류"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "대기 시간"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "구문 분석 오류"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP 프로토콜 오류"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "네트워크 오류"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL 에러: 인증서 무효"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "예상치 못한 충돌"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP 오류"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP 연결 오류"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "프록시 오류"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "너무 많은 요청"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "액세스 거부"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "서버 API 오류"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "중단됨"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes}분 전"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours}시간 {minutes}분 전"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "난수 생성기"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "다른 난수 생성"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "통계 기능"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "{functions} 매개변수 계산"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "길찾기"
@ -277,31 +427,28 @@ msgstr "{title} (사용되지 않음)"
msgid "This entry has been superseded by"
msgstr "이 항목은 다음으로 대체되었습니다"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "채널"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "라디오"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "비트 레이트"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "표"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clicks"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "언어"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -309,7 +456,7 @@ msgstr ""
"{firstCitationVelocityYear}년부터 {lastCitationVelocityYear}년까지의 "
"{numCitations}회 인용"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -318,7 +465,7 @@ msgstr ""
"이미지 주소를 읽을 수 없습니다. 파일 포맷을 지원하지 않아 발생하는 문제일 수도 있습니다. TinEye는 JPEG, PNG, "
"GIF, BMP, TIFF 그리고 WebP 이미지만 지원합니다."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -326,75 +473,59 @@ msgstr ""
"이미지가 너무 단순해 일치하는 항목을 찾을 수 없습니다. TinEye가 일치하는 이미지를 성공적으로 식별하기 위해선 최소 수준의 "
"시각적 정보가 필요합니다;."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "다운로드할 수 없는 이미지입니다."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "아침"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "정오"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "저녁"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "밤"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "책 평점"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "파일 품질"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "문자열을 다른 해시 다이제스트 값으로 변환합니다."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "해시 다이제스트"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "호스트 이름 변경"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "결과의 호스트 이름을 재작성하거나 호스트 이름에 따라 결과를 삭제합니다"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "오픈 액세스 DOI 재작성"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr "가능한 경우 공개 액세스 버전의 출판물로 리디렉션하여 페이월 방지"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "본인 정보"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr "쿼리가 \"ip\"인 경우 사용자의 IP를 표시하고 쿼리에 \"user agent\"가 포함된 경우 사용자 에이전트를 표시합니다."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor 검사 플러그인"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -402,27 +533,27 @@ msgstr ""
"이 플러그인은 요청의 주소가 토르 출구 노드 인지 확인하고 사용자에게 check.torproject.org와 같이 "
"SearchXNG의 주소인지 알려줍니다."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr "https://check.torproject.org/exit-addresses 에서 토르 출구 노드를 다운로드 받는데 실패하였습니다"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Tor를 사용하고 있고 외부 IP 주소는 {ip_address} 입니다"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Tor를 사용하고 있지 않고 외부 IP 주소가 {ip_address}인 것 같습니다"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "추적기 URL 제거기"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "반환된 URL에서 추적기 매개변수 제거"
@ -439,45 +570,45 @@ msgstr "%(search_page)s로 이동합니다."
msgid "search page"
msgstr "검색 페이지"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "기부"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "설정"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Powered by"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "개인정보를 존중하는 개방형 메타 검색 엔진"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "소스 코드"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "이슈 트래커"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "검색 엔진 상태"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "공개 인스턴스"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "개인 정보 정책"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "인스턴스 관리자에게 문의"
@ -1588,3 +1719,4 @@ msgstr "비디오 숨기기"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr "검색결과를 찾을 수 없습니다. 다른 검색어로 검색하거나 검색 범주를 추가해주세요."

View File

@ -11,21 +11,21 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-22 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Lithuanian <https://translate.codeberg.org/projects/searxng/"
"searxng/lt/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: lt\n"
"Language-Team: Lithuanian "
"<https://translate.codeberg.org/projects/searxng/searxng/lt/>\n"
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100"
" < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < "
"11) ? 1 : n % 1 != 0 ? 2: 3);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < "
"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 :"
" n % 1 != 0 ? 2: 3);\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -68,6 +68,16 @@ msgstr "nuotraukos"
msgid "videos"
msgstr "vaizdo įrašai"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radijas"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -159,116 +169,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Apie"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Vakaras"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Rytas"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Naktis"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Vidurdienis"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Elementų nerasta"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Šaltinis"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Klaida keliant kitą puslapį"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Neteisingi nustatymai, pakeiskite savo nuostatas"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Neteisingi nustatymai"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "paieškos klaida"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "laikas baigėsi"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "parsavymo klaida"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP protokolo klaida"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "tinklo klaida"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL klaida: liudijimo tikrinimas patyrė nesėkmę"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "netikėta klaida"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP klaida"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP ryšio klaida"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "persiuntimų serverio klaida"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "per daug užklausų"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "prieiga uždrausta"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "serverio API klaida"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Sustabdytas"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "prieš {minutes} min"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "prieš {hours} val., {minutes} min"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Atsitiktinių skaičiu generatorius"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generuoja įvairias atsitiktinius skaičius"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistikos funkcijos"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Skaičiuoti argumentų {functions} funkcijas"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Gauti nurodymus"
@ -280,31 +430,28 @@ msgstr "{title} (PASENĘS)"
msgid "This entry has been superseded by"
msgstr "Šį įrašą pakeitė"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanalas"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radijas"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "Bitrate"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "balsai"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "paspaudimai"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Kalba"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -312,7 +459,7 @@ msgstr ""
"{numCitations} citatos iš metų{firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -321,7 +468,7 @@ msgstr ""
"Nepavyko perskaityti šio vaizdo URL. Taip gali būti dėl nepalaikomo failo"
" formato. TinEye palaiko tik JPEG, PNG, GIF, BMP, TIFF arba WebP vaizdus."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -330,57 +477,41 @@ msgstr ""
" nustatyti atitikmenis, „TinEye“ reikalingas pagrindinis vizualinių "
"detalių lygis."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Nepavyko atsisiųsti vaizdo."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Rytas"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Vidurdienis"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Vakaras"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Naktis"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Knygos įvertinimas"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Failo kokybė"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Konvertuoja eilutes į skirtingas maišos santraukas."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "maišos santrauka"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Kompiuterio pavadinimo pakeitimas"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Perašyti kompiuterio pavadinimo rezultatus arba ištrinti rezultatus pagal"
" kompiuterio pavadinimą"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Atvirosios prieigos DOI perrašymas"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -388,11 +519,11 @@ msgstr ""
"Vengti apmokamas sienas, peradresuojant į atviros prieigos publikacijų "
"versijas"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Savęs informacija"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -400,11 +531,11 @@ msgstr ""
"Rodo jūsų IP adresą, jei užklausa yra \"ip\" ir jūsų naudotojo agentą, "
"jei užklausoje yra \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "„Tor check“ papildinys"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -413,7 +544,7 @@ msgstr ""
" informuoja vartotoją, jei taip yra; kaip check.torproject.org, bet iš "
"SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -421,21 +552,21 @@ msgstr ""
"Nepavyko atsisiųsti „Tor“ išėjimo mazgų sąrašo iš: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Naudojate Tor ir atrodo, kad turite šį išorinį IP adresą: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Jūs nenaudojate Tor ir turite šį išorinį IP adresą: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Seklių URL šalintojas"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Šalinti seklių argumentus iš grąžinamų URL"
@ -452,45 +583,45 @@ msgstr "Pereiti į %(search_page)s."
msgid "search page"
msgstr "paieškos puslapį"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Paaukoti"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Nuostatos"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Veikia su"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "privatumą gerbiantis atviras metapaieškos variklis"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Šaltinio kodas"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Klaidų sekiklis"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistika statistika"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Viešos instancijos"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Privatumo politika"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Susisiekite su instancijos prižiūrėtoju"
@ -1749,3 +1880,4 @@ msgstr "slėpti vaizdo įrašą"
#~ "mes neradome jokių rezultatų. Naudokite "
#~ "kitokią užklausą arba ieškokite kitose "
#~ "kategorijose."

View File

@ -11,18 +11,18 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-12 17:28+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Latvian <https://translate.codeberg.org/projects/searxng/"
"searxng/lv/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: lv\n"
"Language-Team: Latvian "
"<https://translate.codeberg.org/projects/searxng/searxng/lv/>\n"
"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100"
" <= 19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= "
"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -65,6 +65,16 @@ msgstr "attēli"
msgid "videos"
msgstr "video"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -156,116 +166,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Par"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Vakara"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Rīts"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Nakts"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Pusdiena"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Nav atrasts neviens vienums"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Avots"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Kļūda lādējot nākošo lapu"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Nepareizi iestatījumi, lūdzu rediģējiet savas preferences"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Nederīgi iestatījumi"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "meklēšanas kļūda"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "noildze"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "parsēšanas kļūda"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP protokola kļūda"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "tīkla kļūda"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL kļūda: certifikāta validācija neizdevās"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "negaidīta avārija"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP kļūda"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP savienojuma kļūda"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "starpniekservera kļūda"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "pārāk daudz pieprasījumu"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "piekļuve aizliegta"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "servera API kļūda"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Apturēts"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "pirms {minutes} minūtes(-ēm)"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "pirms {hours} stundas(-ām) un {minutes} minūtēm(-es)"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Nejaušu vērtību ģenerators"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Ģenerēt citas nejaušas vērtības"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistikas funkcijas"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Aprēķināt argumentu {functions}"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Saņemt norādījumus"
@ -277,31 +427,28 @@ msgstr "{title} (NOVECOJIS)"
msgid "This entry has been superseded by"
msgstr "Šis ieraksts ir ticis aizstāts ar"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanāls"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitu pārraide"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "balsis"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikšķi"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Valoda"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -309,7 +456,7 @@ msgstr ""
"{numCitations} citāti no {firstCitationVelocityYear} līdz "
"{lastCitationVelocityYear} gada"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -319,7 +466,7 @@ msgstr ""
"formātu. TinEye atbalsta tikai JPEG, PNG, GIF, BMP, TIFF vai WebP "
"attēlus."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -327,57 +474,41 @@ 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:51
msgid "The image could not be downloaded."
msgstr "Attēlu neizdevās lejupielādēt."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Rīts"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Pusdiena"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Vakara"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Nakts"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "grāmatu vērtējums"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Failu kvalitāte"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Pārvērš virknes (strings) par dažādiem jaucējkoda īssavilkumiem."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "jaucējkoda sašķelšana"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Resursdatora vārda nomaiņa"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
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:12
msgid "Open Access DOI rewrite"
msgstr "Atvērtās piekļuves DOI pārrakstīšana"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -385,11 +516,11 @@ 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:9
msgid "Self Information"
msgstr "Informācija par sevi"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -397,37 +528,37 @@ 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:24
msgid "Tor check plugin"
msgstr "Pārbaudiet Tor spraudni"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr "Jūs izmantojat TOR un izskatās ka jūsu ārējā IP adrese ir:{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Izsekošanas URL noņemšanas līdzeklis"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -444,45 +575,45 @@ msgstr "Doties uz %(search_page)s."
msgid "search page"
msgstr ""
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Ziedo"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Opcijas"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Pirmkods"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr ""
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Privātuma politika"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""
@ -1482,3 +1613,4 @@ msgstr "slēpt video"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -57,6 +57,16 @@ msgstr ""
msgid "videos"
msgstr ""
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr ""
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -148,116 +158,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr ""
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr ""
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr ""
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr ""
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr ""
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr ""
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr ""
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr ""
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr ""
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr ""
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr ""
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr ""
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr ""
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr ""
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr ""
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr ""
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr ""
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr ""
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr ""
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr ""
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr ""
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr ""
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr ""
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr ""
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr ""
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr ""
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr ""
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr ""
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr ""
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr ""
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr ""
@ -269,144 +419,125 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr ""
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr ""
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr ""
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr ""
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
msgstr ""
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
" WebP."
msgstr ""
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr ""
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr ""
#: searx/engines/wttr.py:101
msgid "Night"
msgstr ""
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr ""
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr ""
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr ""
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr ""
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr ""
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr ""
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr ""
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr ""
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
msgstr ""
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
msgstr ""
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr ""
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr ""
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -423,45 +554,45 @@ msgstr ""
msgid "search page"
msgstr ""
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr ""
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr ""
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr ""
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr ""
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr ""
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""

View File

@ -14,17 +14,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-12 17:28+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Malay <https://translate.codeberg.org/projects/searxng/"
"searxng/ms/>\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
"\n"
"Language: ms\n"
"Language-Team: Malay "
"<https://translate.codeberg.org/projects/searxng/searxng/ms/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.4.2\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -67,6 +67,16 @@ msgstr "gambar-gambar"
msgid "videos"
msgstr "video"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -158,116 +168,256 @@ msgid "Uptime"
msgstr ""
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Tentang"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Petang"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Pagi"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Malam"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Tengah hari"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "barang tidak dijumpai"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Punca"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Gagal memuat turun muka seterusnya"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Kesilapan tetapan, sila ubahsuai pilihan"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Tetapan tidak sah"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "ralat pencarian"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "masa tamat"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "ralat huraian"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "kesilapan protokol HTTP"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "ralat rangkaian"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "RALAT ssl: pengesahan sijil gagal"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "kemalangan tidak dijangka"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "kesilapan HTTP"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "kesilapan sambungan HTTP"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "kesilapan proksi"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "terlalu banyak permintaan"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "akses dinafikan"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "ralat API pelayan"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Digantung"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minit} minit yang lalu"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{jam} jam, {minit} minit yang lalu"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Penjana nombor rawak"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Jana jumlah rawak yang berbeza"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Fungsi statistik"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr ""
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Dapatkan tunjuk-arah"
@ -279,37 +429,34 @@ msgstr "{title} (USANG)"
msgid "This entry has been superseded by"
msgstr "Kemasukan ini telah diganti oleh"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Saluran"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "undi"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klik"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Bahasa"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
msgstr ""
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -319,61 +466,45 @@ msgstr ""
"yang tidak disokong. TinEye hanya menyokong imeg yang dalam format JPEG, "
"PNG, GIF, BMP, TIFF atau WebP."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Imej tidak dapat dimuat turun."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Pagi"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Tengah hari"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Petang"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Malam"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr ""
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Kualiti fail"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Ubah rentetan kepada \"hash digest\" yang berbeza."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr ""
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Gantikan nama hos"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Buat semula keputusan nama hos atau buang keputusan berdasarkan nama hos"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Akses Terbuka DOI tulis-semula"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -381,11 +512,11 @@ msgstr ""
"Elakkan paywall dengan mengubahalih kepada penerbitan versi akses-awam "
"jika ada"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Maklumat Diri"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -393,17 +524,17 @@ msgstr ""
"Memaparkan IP anda jika pertanyaan ialah \"ip\" dan ejen pengguna anda "
"jika pertanyaan mengandungi \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor semak plugin"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
msgstr ""
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -411,7 +542,7 @@ msgstr ""
"Tidak dapat memuat turun senarai nod keluar Tor dari: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -419,15 +550,15 @@ msgstr ""
"Anda sedang menggunakan Tor dan nampaknya anda mempunyai alamat IP luaran"
" ini: {ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Anda tidak mengguna Tor dan ini adalah alamat IP luaran anda: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr ""
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr ""
@ -444,45 +575,45 @@ msgstr "Pergi ke %(search_page)s."
msgid "search page"
msgstr "Laman carian"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Derma"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Pilihan"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Didukung oleh"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr ""
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Kod sumber"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr ""
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Statistik enjin"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr ""
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Polisi privasi"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr ""
@ -1467,3 +1598,4 @@ msgstr "sembunyikkan video"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr ""

View File

@ -13,17 +13,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-04-07 07:18+0000\n"
"Last-Translator: omfj <omfj@users.noreply.translate.codeberg.org>\n"
"Language-Team: Norwegian Bokmål <https://translate.codeberg.org/projects/"
"searxng/searxng/nb_NO/>\n"
"Language: nb_NO\n"
"Language-Team: Norwegian Bokmål "
"<https://translate.codeberg.org/projects/searxng/searxng/nb_NO/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.3\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -66,6 +65,16 @@ msgstr "bilder"
msgid "videos"
msgstr "videoer"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -157,116 +166,256 @@ msgid "Uptime"
msgstr "Oppetid"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Om"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "Kveld"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "Morgen"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "Natt"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "Formiddag"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Fant ingen elementer"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Kilde"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "Det var et problem med lasting av neste side"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "Ugyldige innstillinger, rediger dine preferanser"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ugyldige innstillinger"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "søkefeil"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "tidsavbrudd"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "tolkningsfeil"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "HTTP-protokollfeil"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "nettverksfeil"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "SSL-feil: sertifikat validering mislyktes"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "uventet krasj"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "HTTP-feil"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "HTTP-tilkoblingsfeil"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "mellomtjenerfeil"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "CAPTCHA"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "for mange forespørsler"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "tilgang nektet"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "Tjener-API-feil"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "I hvilemodus"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "for {minutes} minuter siden"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "for {hours} time(r), {minutes} minutt(er) siden"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Generator for tilfeldige tall"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Generer forskjellige tilfeldige verdier"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistikkfunksjoner"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Regn ut {functions} av parameterne"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Få veibeskrivelser"
@ -278,31 +427,28 @@ msgstr "{title} (FORELDET)"
msgid "This entry has been superseded by"
msgstr "Denne oppføringen har blitt erstattet av"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "overføringshastighet"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "stemmer"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "klikk"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Språk"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -310,7 +456,7 @@ msgstr ""
"{numCitations} sitater fra år {firstCitationVelocityYear} til "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -320,7 +466,7 @@ msgstr ""
"som ikke er støttet. TinEye støtter bare JPEG, PNG, GIF, BMP, TIFF eller "
"WebP formater."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -328,55 +474,39 @@ msgstr ""
"Bildet har for få særskilte detaljer for at TinEye kan finne like eller "
"lignende bilder."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "Bildet kunne ikke lastes ned."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "Morgen"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "Formiddag"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "Kveld"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "Natt"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "Bokvurdering"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "Filkvalitet"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Konverterer strenger til andre sjekksumsføljetonger."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "sjekksumsføljetong"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Vertsnavnserstatning"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr "Skriv om vertsnavn eller fjern resultater basert på vertsnavn"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Open Access DOI-omskriving"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -384,11 +514,11 @@ msgstr ""
"Tillat betalingsmurer ved å videresende til åpen-tilgang -versjoner av "
"publikasjoner når de forefinnes"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Selv informasjon"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -396,11 +526,11 @@ msgstr ""
"Viser din IP hvis spørringen er \"ip\" og din brukeragent hvis spørringen"
" inneholder \"user agent\"."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor sjekk pluggin"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -409,7 +539,7 @@ msgstr ""
" og informerer brukeren om den er det; som check.torproject.org, men fra "
"SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -417,7 +547,7 @@ msgstr ""
"Kunne ikke laste ned listen over Tor-utgangsnoder fra: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -425,15 +555,15 @@ msgstr ""
"Du bruker Tor og det ser ut som om du har denne eksterne IP adressen: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Du bruker ikke Tor og du har denne IP adressen: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Sporings-nettadressefjerner"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Fjern sporer-argumenter fra returnert nettadresse"
@ -450,45 +580,45 @@ msgstr "Gå til %(search_page)s."
msgid "search page"
msgstr "søkeside"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Doner"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Innstillinger"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Drevet av"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "en åpen metasøkemotor som respekterer personvernet"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Kildekode"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Problemsporer"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Søkemotorstatistikk"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Offentlige instanser"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Personvernerklæring"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Kontakt tilbyderen av instansen"
@ -1130,8 +1260,8 @@ msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories"
msgstr ""
"Utfør søk umiddelbart hvis en kategori er valgt. Deaktiver for å velge flere "
"kategorier"
"Utfør søk umiddelbart hvis en kategori er valgt. Deaktiver for å velge "
"flere kategorier"
#: searx/templates/simple/preferences/theme.html:2
msgid "Theme"
@ -1678,3 +1808,4 @@ msgstr "skjul video"
#~ "use another query or search in "
#~ "more categories."
#~ msgstr "fant ingen resultater. Søk etter noe annet, eller i flere kategorier."

View File

@ -20,19 +20,18 @@
# marcelStangenberger <codeberg@xo.nl>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-02-25 15:26+0000\n"
"POT-Creation-Date: 2024-04-26 05:37+0000\n"
"PO-Revision-Date: 2024-03-02 14:36+0000\n"
"Last-Translator: marcelStangenberger <codeberg@xo.nl>\n"
"Language-Team: Dutch <https://translate.codeberg.org/projects/searxng/"
"searxng/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"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.14.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@ -75,6 +74,16 @@ msgstr "afbeeldingen"
msgid "videos"
msgstr "videos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:103 searx/searxng.msg
msgid "radio"
msgstr "radio"
#. CATEGORY_NAMES['TV']
#: searx/searxng.msg
msgid "tv"
msgstr ""
#. CATEGORY_NAMES['IT']
#: searx/searxng.msg
msgid "it"
@ -166,116 +175,256 @@ msgid "Uptime"
msgstr "bedrijfstijd"
#. BRAND_CUSTOM_LINKS['ABOUT']
#: searx/searxng.msg searx/templates/simple/base.html:49
#: searx/searxng.msg searx/templates/simple/base.html:50
msgid "About"
msgstr "Over"
#: searx/webapp.py:332
#. WEATHER_TERMS['AVERAGE TEMP.']
#: searx/searxng.msg
msgid "Average temp."
msgstr ""
#. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg
msgid "Cloud cover"
msgstr ""
#. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg
msgid "Condition"
msgstr ""
#. WEATHER_TERMS['CURRENT CONDITION']
#: searx/searxng.msg
msgid "Current condition"
msgstr ""
#. WEATHER_TERMS['EVENING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Evening"
msgstr "avond"
#. WEATHER_TERMS['FEELS LIKE']
#: searx/searxng.msg
msgid "Feels like"
msgstr ""
#. WEATHER_TERMS['HUMIDITY']
#: searx/searxng.msg
msgid "Humidity"
msgstr ""
#. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg
msgid "Max temp."
msgstr ""
#. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg
msgid "Min temp."
msgstr ""
#. WEATHER_TERMS['MORNING']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Morning"
msgstr "ochtend"
#. WEATHER_TERMS['NIGHT']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Night"
msgstr "nacht"
#. WEATHER_TERMS['NOON']
#: searx/engines/wttr.py:100 searx/searxng.msg
msgid "Noon"
msgstr "'s middags"
#. WEATHER_TERMS['PRESSURE']
#: searx/searxng.msg
msgid "Pressure"
msgstr ""
#. WEATHER_TERMS['SUNRISE']
#: searx/searxng.msg
msgid "Sunrise"
msgstr ""
#. WEATHER_TERMS['SUNSET']
#: searx/searxng.msg
msgid "Sunset"
msgstr ""
#. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg
msgid "Temperature"
msgstr ""
#. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg
msgid "UV index"
msgstr ""
#. WEATHER_TERMS['VISIBILITY']
#: searx/searxng.msg
msgid "Visibility"
msgstr ""
#. WEATHER_TERMS['WIND']
#: searx/searxng.msg
msgid "Wind"
msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg
msgid "subscribers"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg
msgid "posts"
msgstr ""
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
#: searx/searxng.msg
msgid "active users"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg
msgid "comments"
msgstr ""
#. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg
msgid "user"
msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg
msgid "community"
msgstr ""
#. SOCIAL_MEDIA_TERMS['POINTS']
#: searx/searxng.msg
msgid "points"
msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg
msgid "title"
msgstr ""
#. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg
msgid "author"
msgstr ""
#: searx/webapp.py:330
msgid "No item found"
msgstr "Er is geen resultaat gevonden"
#: searx/engines/qwant.py:282
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:334
#: searx/engines/qwant.py:281
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:332
msgid "Source"
msgstr "Bron"
#: searx/webapp.py:336
#: searx/webapp.py:334
msgid "Error loading the next page"
msgstr "De volgende pagina kan niet worden geladen"
#: searx/webapp.py:483 searx/webapp.py:879
#: searx/webapp.py:491 searx/webapp.py:887
msgid "Invalid settings, please edit your preferences"
msgstr "De instellingen zijn ongeldig - werk ze bij"
#: searx/webapp.py:499
#: searx/webapp.py:507
msgid "Invalid settings"
msgstr "Ongeldige instellingen"
#: searx/webapp.py:576 searx/webapp.py:658
#: searx/webapp.py:584 searx/webapp.py:666
msgid "search error"
msgstr "zoekfout"
#: searx/webutils.py:34
#: searx/webutils.py:36
msgid "timeout"
msgstr "verlopen"
#: searx/webutils.py:35
#: searx/webutils.py:37
msgid "parsing error"
msgstr "verwerkingsfout"
#: searx/webutils.py:36
#: searx/webutils.py:38
msgid "HTTP protocol error"
msgstr "Http-protocolfout"
#: searx/webutils.py:37
#: searx/webutils.py:39
msgid "network error"
msgstr "netwerkfout"
#: searx/webutils.py:38
#: searx/webutils.py:40
msgid "SSL error: certificate validation has failed"
msgstr "Ssl-fout: de certificaatvalidatie is mislukt"
#: searx/webutils.py:40
#: searx/webutils.py:42
msgid "unexpected crash"
msgstr "onverwachte crash"
#: searx/webutils.py:47
#: searx/webutils.py:49
msgid "HTTP error"
msgstr "Http-fout"
#: searx/webutils.py:48
#: searx/webutils.py:50
msgid "HTTP connection error"
msgstr "Http-verbindingsfout"
#: searx/webutils.py:54
#: searx/webutils.py:56
msgid "proxy error"
msgstr "proxyfout"
#: searx/webutils.py:55
#: searx/webutils.py:57
msgid "CAPTCHA"
msgstr "Captcha"
#: searx/webutils.py:56
#: searx/webutils.py:58
msgid "too many requests"
msgstr "teveel verzoeken"
#: searx/webutils.py:57
#: searx/webutils.py:59
msgid "access denied"
msgstr "toegang geweigerd"
#: searx/webutils.py:58
#: searx/webutils.py:60
msgid "server API error"
msgstr "server-api-fout"
#: searx/webutils.py:77
#: searx/webutils.py:79
msgid "Suspended"
msgstr "Geschorst"
#: searx/webutils.py:315
#: searx/webutils.py:314
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minu(u)t(en) geleden"
#: searx/webutils.py:316
#: searx/webutils.py:315
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} uur, {minutes} minu(u)t(en) geleden"
#: searx/answerers/random/answerer.py:73
#: searx/answerers/random/answerer.py:75
msgid "Random value generator"
msgstr "Willekeurigewaardegenerator"
#: searx/answerers/random/answerer.py:74
#: searx/answerers/random/answerer.py:76
msgid "Generate different random values"
msgstr "Genereer verschillende willekeurige waarden"
#: searx/answerers/statistics/answerer.py:47
#: searx/answerers/statistics/answerer.py:48
msgid "Statistics functions"
msgstr "Statistische functies"
#: searx/answerers/statistics/answerer.py:48
#: searx/answerers/statistics/answerer.py:49
msgid "Compute {functions} of the arguments"
msgstr "Bereken {functions} van de opties"
#: searx/engines/openstreetmap.py:160
#: searx/engines/openstreetmap.py:159
msgid "Get directions"
msgstr "Routebeschrijving"
@ -287,31 +436,28 @@ msgstr "{title} (VEROUDERD)"
msgid "This entry has been superseded by"
msgstr "Dit object is overbodig gemaakt door"
#: searx/engines/qwant.py:284
#: searx/engines/qwant.py:283
msgid "Channel"
msgstr "Kanaal"
#: searx/engines/radio_browser.py:104
msgid "radio"
msgstr "radio"
#: searx/engines/radio_browser.py:106
#: searx/engines/radio_browser.py:105
msgid "bitrate"
msgstr "bitrate"
#: searx/engines/radio_browser.py:107
#: searx/engines/radio_browser.py:106
msgid "votes"
msgstr "stemmen"
#: searx/engines/radio_browser.py:108
#: searx/engines/radio_browser.py:107
msgid "clicks"
msgstr "clicks"
#: searx/engines/seekr.py:194 searx/engines/zlibrary.py:129
#: searx/engines/seekr.py:193 searx/engines/yummly.py:71
#: searx/engines/zlibrary.py:128
msgid "Language"
msgstr "Taal"
#: searx/engines/semantic_scholar.py:79
#: searx/engines/semantic_scholar.py:78
msgid ""
"{numCitations} citations from the year {firstCitationVelocityYear} to "
"{lastCitationVelocityYear}"
@ -319,7 +465,7 @@ msgstr ""
"{numCitations} citaties van {firstCitationVelocityYear} tot "
"{lastCitationVelocityYear}"
#: searx/engines/tineye.py:40
#: searx/engines/tineye.py:39
msgid ""
"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"
@ -329,7 +475,7 @@ msgstr ""
"ondersteunde bestandsindeling. TinEye ondersteunt alleen afbeeldingen die"
" JPEG, PNG, GIF, BMP, TIFF of WebP zijn."
#: searx/engines/tineye.py:46
#: searx/engines/tineye.py:45
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
@ -338,57 +484,41 @@ msgstr ""
" een basisniveau van visuele details om overeenkomsten met succes te "
"identificeren."
#: searx/engines/tineye.py:52
#: searx/engines/tineye.py:51
msgid "The image could not be downloaded."
msgstr "De afbeelding kon niet worden gedownload."
#: searx/engines/wttr.py:101
msgid "Morning"
msgstr "ochtend"
#: searx/engines/wttr.py:101
msgid "Noon"
msgstr "'s middags"
#: searx/engines/wttr.py:101
msgid "Evening"
msgstr "avond"
#: searx/engines/wttr.py:101
msgid "Night"
msgstr "nacht"
#: searx/engines/zlibrary.py:130
#: searx/engines/zlibrary.py:129
msgid "Book rating"
msgstr "boekbeoordeling"
#: searx/engines/zlibrary.py:131
#: searx/engines/zlibrary.py:130
msgid "File quality"
msgstr "bestandskwaliteit"
#: searx/plugins/hash_plugin.py:24
#: searx/plugins/hash_plugin.py:10
msgid "Converts strings to different hash digests."
msgstr "Zet tekstwaarden om naar verschillende hash digests."
#: searx/plugins/hash_plugin.py:52
#: searx/plugins/hash_plugin.py:38
msgid "hash digest"
msgstr "hash digest"
#: searx/plugins/hostname_replace.py:9
#: searx/plugins/hostname_replace.py:12
msgid "Hostname replace"
msgstr "Servernaam vervangen"
#: searx/plugins/hostname_replace.py:10
#: searx/plugins/hostname_replace.py:13
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
"Pas resulterende servernamen aan of verwijder resultaten op basis van de "
"servernaam"
#: searx/plugins/oa_doi_rewrite.py:9
#: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite"
msgstr "Open Access DOI herschrijven"
#: searx/plugins/oa_doi_rewrite.py:10
#: searx/plugins/oa_doi_rewrite.py:13
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
@ -396,11 +526,11 @@ msgstr ""
"Omzeil betaalmuren met een doorverwijzing naar vrij toegankelijke versies"
" van publicaties indien beschikbaar"
#: searx/plugins/self_info.py:10
#: searx/plugins/self_info.py:9
msgid "Self Information"
msgstr "Informatie Over Jezelf"
#: searx/plugins/self_info.py:11
#: searx/plugins/self_info.py:10
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
@ -408,11 +538,11 @@ msgstr ""
"Geeft je IP-adres weer als de zoekopdracht ip is en je gebruikersagent "
"als de zoekopdracht user agent bevat."
#: searx/plugins/tor_check.py:25
#: searx/plugins/tor_check.py:24
msgid "Tor check plugin"
msgstr "Tor controle plug-in"
#: searx/plugins/tor_check.py:28
#: searx/plugins/tor_check.py:27
msgid ""
"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."
@ -421,7 +551,7 @@ msgstr ""
"is en informeert de gebruiker als dit zo is; net als bij "
"check.torproject.org, maar dan van SearXNG."
#: searx/plugins/tor_check.py:62
#: searx/plugins/tor_check.py:61
msgid ""
"Could not download the list of Tor exit-nodes from: "
"https://check.torproject.org/exit-addresses"
@ -429,7 +559,7 @@ msgstr ""
"Kan de lijst met Tor exit-nodes niet downloaden van: "
"https://check.torproject.org/exit-addresses"
#: searx/plugins/tor_check.py:78
#: searx/plugins/tor_check.py:77
msgid ""
"You are using Tor and it looks like you have this external IP address: "
"{ip_address}"
@ -437,15 +567,15 @@ msgstr ""
"Je gebruikt Tor en het lijkt er op dat dit je externe IP adres is: "
"{ip_address}"
#: searx/plugins/tor_check.py:86
#: searx/plugins/tor_check.py:85
msgid "You are not using Tor and you have this external IP address: {ip_address}"
msgstr "Je maakt geen gebruik van Tor en dit is je externe IP adres: {ip_address}"
#: searx/plugins/tracker_url_remover.py:29
#: searx/plugins/tracker_url_remover.py:16
msgid "Tracker URL remover"
msgstr "Tracker-URL-verwijderaar"
#: searx/plugins/tracker_url_remover.py:30
#: searx/plugins/tracker_url_remover.py:17
msgid "Remove trackers arguments from the returned URL"
msgstr "Verwijdert trackerargumenten van de gekregen URL"
@ -462,45 +592,45 @@ msgstr "Ga naar %(search_page)s."
msgid "search page"
msgstr "zoekpagina"
#: searx/templates/simple/base.html:53
#: searx/templates/simple/base.html:54
msgid "Donate"
msgstr "Doneren"
#: searx/templates/simple/base.html:57
#: searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:156
msgid "Preferences"
msgstr "Voorkeuren"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Zoekmachine"
#: searx/templates/simple/base.html:67
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
msgstr "een privacy respecterende meta zoek machine"
#: searx/templates/simple/base.html:68
#: searx/templates/simple/base.html:69
#: searx/templates/simple/result_templates/packages.html:59
msgid "Source code"
msgstr "Broncode"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/base.html:70
msgid "Issue tracker"
msgstr "Probleem-tracker"
#: searx/templates/simple/base.html:70 searx/templates/simple/stats.html:18
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Zoekmachinestatistieken"
#: searx/templates/simple/base.html:72
#: searx/templates/simple/base.html:73
msgid "Public instances"
msgstr "Openbare instanties"
#: searx/templates/simple/base.html:75
#: searx/templates/simple/base.html:76
msgid "Privacy policy"
msgstr "Privacybeleid"
#: searx/templates/simple/base.html:78
#: searx/templates/simple/base.html:79
msgid "Contact instance maintainer"
msgstr "Neem contact op met beheerder instantie"
@ -998,8 +1128,7 @@ msgstr "Kopie instellingen sleutel"
#: searx/templates/simple/preferences/cookies.html:57
msgid "Insert copied preferences hash (without URL) to restore"
msgstr ""
"Voeg kopie instellingen sleutel (zonder de verwijzing) in om te herstellen"
msgstr "Voeg kopie instellingen sleutel (zonder de verwijzing) in om te herstellen"
#: searx/templates/simple/preferences/cookies.html:59
msgid "Preferences hash"
@ -1795,3 +1924,4 @@ msgstr "verberg video"
#~ "We konden geen resultaten vinden. "
#~ "Probeer een andere zoekopdracht, of zoek"
#~ " in meer categorieën."

Some files were not shown because too many files have changed in this diff Show More