forked from Ponysearch/Ponysearch
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
3e9e39febb
38 changed files with 523 additions and 321 deletions
|
@ -1,4 +1,4 @@
|
||||||
FROM alpine:3.19
|
FROM alpine:3.20
|
||||||
ENTRYPOINT ["/sbin/tini","--","/usr/local/searxng/dockerfiles/docker-entrypoint.sh"]
|
ENTRYPOINT ["/sbin/tini","--","/usr/local/searxng/dockerfiles/docker-entrypoint.sh"]
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
VOLUME /etc/searxng
|
VOLUME /etc/searxng
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
.. _searxng settings.yml:
|
||||||
|
|
||||||
========
|
========
|
||||||
Settings
|
Settings
|
||||||
========
|
========
|
||||||
|
|
13
docs/dev/engines/online/alpinelinux.rst
Normal file
13
docs/dev/engines/online/alpinelinux.rst
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.. _alpinelinux engine:
|
||||||
|
|
||||||
|
=====================
|
||||||
|
Alpine Linux Packages
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:depth: 2
|
||||||
|
:local:
|
||||||
|
:backlinks: entry
|
||||||
|
|
||||||
|
.. automodule:: searx.engines.alpinelinux
|
||||||
|
:members:
|
8
docs/src/searx.settings.rst
Normal file
8
docs/src/searx.settings.rst
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
.. _searx.settings_loader:
|
||||||
|
|
||||||
|
===============
|
||||||
|
Settings Loader
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. automodule:: searx.settings_loader
|
||||||
|
:members:
|
4
manage
4
manage
|
@ -54,7 +54,9 @@ fi
|
||||||
|
|
||||||
YAMLLINT_FILES=()
|
YAMLLINT_FILES=()
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
YAMLLINT_FILES+=("$line")
|
if [ "$line" != "tests/unit/settings/syntaxerror_settings.yml" ]; then
|
||||||
|
YAMLLINT_FILES+=("$line")
|
||||||
|
fi
|
||||||
done <<< "$(git ls-files './tests/*.yml' './searx/*.yml' './utils/templates/etc/searxng/*.yml')"
|
done <<< "$(git ls-files './tests/*.yml' './searx/*.yml' './utils/templates/etc/searxng/*.yml')"
|
||||||
|
|
||||||
RST_FILES=(
|
RST_FILES=(
|
||||||
|
|
83
searx/engines/alpinelinux.py
Normal file
83
searx/engines/alpinelinux.py
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
"""`Alpine Linux binary packages`_. `Alpine Linux`_ is a Linux-based operation
|
||||||
|
system designed to be small, simple and secure. Contrary to many other Linux
|
||||||
|
distributions, it uses musl, BusyBox and OpenRC. Alpine is mostly used on
|
||||||
|
servers and for Docker images.
|
||||||
|
|
||||||
|
.. _Alpine Linux binary packages: https://pkgs.alpinelinux.org
|
||||||
|
.. _Alpine Linux: https://www.alpinelinux.org
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
from lxml import html
|
||||||
|
from dateutil import parser
|
||||||
|
|
||||||
|
from searx.utils import eval_xpath, eval_xpath_list, extract_text
|
||||||
|
|
||||||
|
about = {
|
||||||
|
'website': 'https://www.alpinelinux.org',
|
||||||
|
'wikidata_id': 'Q4033826',
|
||||||
|
'use_official_api': False,
|
||||||
|
'official_api_documentation': None,
|
||||||
|
'require_api_key': False,
|
||||||
|
'results': 'HTML',
|
||||||
|
}
|
||||||
|
paging = True
|
||||||
|
categories = ['packages', 'it']
|
||||||
|
|
||||||
|
base_url = "https://pkgs.alpinelinux.org"
|
||||||
|
alpine_arch = 'x86_64'
|
||||||
|
"""Kernel architecture: ``x86_64``, ``x86``, ``aarch64``, ``armhf``,
|
||||||
|
``ppc64le``, ``s390x``, ``armv7`` or ``riscv64``"""
|
||||||
|
|
||||||
|
ARCH_RE = re.compile("x86_64|x86|aarch64|armhf|ppc64le|s390x|armv7|riscv64")
|
||||||
|
"""Regular expression to match supported architectures in the query string."""
|
||||||
|
|
||||||
|
|
||||||
|
def request(query, params):
|
||||||
|
query_arch = ARCH_RE.search(query)
|
||||||
|
if query_arch:
|
||||||
|
query_arch = query_arch.group(0)
|
||||||
|
query = query.replace(query_arch, '').strip()
|
||||||
|
|
||||||
|
args = {
|
||||||
|
# use wildcards to match more than just packages with the exact same
|
||||||
|
# name as the query
|
||||||
|
'name': f"*{query}*",
|
||||||
|
'page': params['pageno'],
|
||||||
|
'arch': query_arch or alpine_arch,
|
||||||
|
}
|
||||||
|
params['url'] = f"{base_url}/packages?{urlencode(args)}"
|
||||||
|
return params
|
||||||
|
|
||||||
|
|
||||||
|
def response(resp):
|
||||||
|
results = []
|
||||||
|
|
||||||
|
doc = html.fromstring(resp.text)
|
||||||
|
for result in eval_xpath_list(doc, "//table/tbody/tr"):
|
||||||
|
|
||||||
|
if len(result.xpath("./td")) < 9:
|
||||||
|
# skip non valid entries in the result table
|
||||||
|
# e.g the "No item found..." message
|
||||||
|
continue
|
||||||
|
|
||||||
|
results.append(
|
||||||
|
{
|
||||||
|
'template': 'packages.html',
|
||||||
|
'url': base_url + extract_text(eval_xpath(result, './td[contains(@class, "package")]/a/@href')),
|
||||||
|
'title': extract_text(eval_xpath(result, './td[contains(@class, "package")]')),
|
||||||
|
'package_name': extract_text(eval_xpath(result, './td[contains(@class, "package")]')),
|
||||||
|
'publishedDate': parser.parse(extract_text(eval_xpath(result, './td[contains(@class, "bdate")]'))),
|
||||||
|
'version': extract_text(eval_xpath(result, './td[contains(@class, "version")]')),
|
||||||
|
'homepage': extract_text(eval_xpath(result, './td[contains(@class, "url")]/a/@href')),
|
||||||
|
'maintainer': extract_text(eval_xpath(result, './td[contains(@class, "maintainer")]')),
|
||||||
|
'license_name': extract_text(eval_xpath(result, './td[contains(@class, "license")]')),
|
||||||
|
'tags': [extract_text(eval_xpath(result, './td[contains(@class, "repo")]'))],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return results
|
|
@ -128,7 +128,14 @@ def request(query: str, params: dict):
|
||||||
|
|
||||||
|
|
||||||
def extract_result(dom_result: list[html.HtmlElement]):
|
def extract_result(dom_result: list[html.HtmlElement]):
|
||||||
[a_elem, h3_elem, p_elem] = dom_result
|
# Infoboxes sometimes appear in the beginning and will have a length of 0
|
||||||
|
if len(dom_result) == 3:
|
||||||
|
[a_elem, h3_elem, p_elem] = dom_result
|
||||||
|
elif len(dom_result) == 4:
|
||||||
|
[_, a_elem, h3_elem, p_elem] = dom_result
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'url': extract_text(a_elem.text),
|
'url': extract_text(a_elem.text),
|
||||||
'title': extract_text(h3_elem),
|
'title': extract_text(h3_elem),
|
||||||
|
@ -139,9 +146,9 @@ def extract_result(dom_result: list[html.HtmlElement]):
|
||||||
def extract_results(search_results: html.HtmlElement):
|
def extract_results(search_results: html.HtmlElement):
|
||||||
for search_result in search_results:
|
for search_result in search_results:
|
||||||
dom_result = eval_xpath_list(search_result, 'div/div/*')
|
dom_result = eval_xpath_list(search_result, 'div/div/*')
|
||||||
# sometimes an info box pops up, will need to filter that out
|
result = extract_result(dom_result)
|
||||||
if len(dom_result) == 3:
|
if result is not None:
|
||||||
yield extract_result(dom_result)
|
yield result
|
||||||
|
|
||||||
|
|
||||||
def response(resp: Response):
|
def response(resp: Response):
|
||||||
|
|
|
@ -11,16 +11,12 @@ from typing import Any, Dict
|
||||||
import httpx
|
import httpx
|
||||||
from httpx_socks import AsyncProxyTransport
|
from httpx_socks import AsyncProxyTransport
|
||||||
from python_socks import parse_proxy_url, ProxyConnectionError, ProxyTimeoutError, ProxyError
|
from python_socks import parse_proxy_url, ProxyConnectionError, ProxyTimeoutError, ProxyError
|
||||||
|
import uvloop
|
||||||
|
|
||||||
from searx import logger
|
from searx import logger
|
||||||
|
|
||||||
# Optional uvloop (support Python 3.6)
|
|
||||||
try:
|
uvloop.install()
|
||||||
import uvloop
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
uvloop.install()
|
|
||||||
|
|
||||||
|
|
||||||
logger = logger.getChild('searx.network.client')
|
logger = logger.getChild('searx.network.client')
|
||||||
|
|
|
@ -96,7 +96,7 @@ from flask_babel import gettext
|
||||||
|
|
||||||
from searx import settings
|
from searx import settings
|
||||||
from searx.plugins import logger
|
from searx.plugins import logger
|
||||||
from searx.settings_loader import get_yaml_file
|
from searx.settings_loader import get_yaml_cfg
|
||||||
|
|
||||||
name = gettext('Hostnames plugin')
|
name = gettext('Hostnames plugin')
|
||||||
description = gettext('Rewrite hostnames, remove results or prioritize them based on the hostname')
|
description = gettext('Rewrite hostnames, remove results or prioritize them based on the hostname')
|
||||||
|
@ -118,7 +118,7 @@ def _load_regular_expressions(settings_key):
|
||||||
|
|
||||||
# load external file with configuration
|
# load external file with configuration
|
||||||
if isinstance(setting_value, str):
|
if isinstance(setting_value, str):
|
||||||
setting_value = get_yaml_file(setting_value)
|
setting_value = get_yaml_cfg(setting_value)
|
||||||
|
|
||||||
if isinstance(setting_value, list):
|
if isinstance(setting_value, list):
|
||||||
return {re.compile(r) for r in setting_value}
|
return {re.compile(r) for r in setting_value}
|
||||||
|
@ -163,10 +163,10 @@ def _matches_parsed_url(result, pattern):
|
||||||
def on_result(_request, _search, result):
|
def on_result(_request, _search, result):
|
||||||
for pattern, replacement in replacements.items():
|
for pattern, replacement in replacements.items():
|
||||||
if _matches_parsed_url(result, pattern):
|
if _matches_parsed_url(result, pattern):
|
||||||
logger.debug(result['url'])
|
# logger.debug(result['url'])
|
||||||
result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc))
|
result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc))
|
||||||
result['url'] = urlunparse(result[parsed])
|
result['url'] = urlunparse(result[parsed])
|
||||||
logger.debug(result['url'])
|
# logger.debug(result['url'])
|
||||||
|
|
||||||
for url_field in _url_fields:
|
for url_field in _url_fields:
|
||||||
if not result.get(url_field):
|
if not result.get(url_field):
|
||||||
|
|
|
@ -325,6 +325,11 @@ engines:
|
||||||
shortcut: 9g
|
shortcut: 9g
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|
||||||
|
- name: alpine linux packages
|
||||||
|
engine: alpinelinux
|
||||||
|
disabled: true
|
||||||
|
shortcut: alp
|
||||||
|
|
||||||
- name: annas archive
|
- name: annas archive
|
||||||
engine: annas_archive
|
engine: annas_archive
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|
|
@ -1,68 +1,116 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
# pylint: disable=missing-module-docstring, too-many-branches
|
"""Implementations for loading configurations from YAML files. This essentially
|
||||||
|
includes the configuration of the (:ref:`SearXNG appl <searxng settings.yml>`)
|
||||||
|
server. The default configuration for the application server is loaded from the
|
||||||
|
:origin:`DEFAULT_SETTINGS_FILE <searx/settings.yml>`. This default
|
||||||
|
configuration can be completely replaced or :ref:`customized individually
|
||||||
|
<use_default_settings.yml>` and the ``SEARXNG_SETTINGS_PATH`` environment
|
||||||
|
variable can be used to set the location from which the local customizations are
|
||||||
|
to be loaded. The rules used for this can be found in the
|
||||||
|
:py:obj:`get_user_cfg_folder` function.
|
||||||
|
|
||||||
from typing import Optional
|
- By default, local configurations are expected in folder ``/etc/searxng`` from
|
||||||
from os import environ
|
where applications can load them with the :py:obj:`get_yaml_cfg` function.
|
||||||
from os.path import dirname, join, abspath, isfile
|
|
||||||
|
- By default, customized :ref:`SearXNG appl <searxng settings.yml>` settings are
|
||||||
|
expected in a file named ``settings.yml``.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os.path
|
||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from itertools import filterfalse
|
from itertools import filterfalse
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from searx.exceptions import SearxSettingsException
|
from searx.exceptions import SearxSettingsException
|
||||||
|
|
||||||
|
searx_dir = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
searx_dir = abspath(dirname(__file__))
|
SETTINGS_YAML = Path("settings.yml")
|
||||||
|
DEFAULT_SETTINGS_FILE = Path(searx_dir) / SETTINGS_YAML
|
||||||
|
"""The :origin:`searx/settings.yml` file with all the default settings."""
|
||||||
|
|
||||||
|
|
||||||
def existing_filename_or_none(file_name: str) -> Optional[str]:
|
def load_yaml(file_name: str | Path):
|
||||||
if isfile(file_name):
|
"""Load YAML config from a file."""
|
||||||
return file_name
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def load_yaml(file_name):
|
|
||||||
try:
|
try:
|
||||||
with open(file_name, 'r', encoding='utf-8') as settings_yaml:
|
with open(file_name, 'r', encoding='utf-8') as settings_yaml:
|
||||||
return yaml.safe_load(settings_yaml)
|
return yaml.safe_load(settings_yaml) or {}
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
raise SearxSettingsException(e, file_name) from e
|
raise SearxSettingsException(e, str(file_name)) from e
|
||||||
except yaml.YAMLError as e:
|
except yaml.YAMLError as e:
|
||||||
raise SearxSettingsException(e, file_name) from e
|
raise SearxSettingsException(e, str(file_name)) from e
|
||||||
|
|
||||||
|
|
||||||
def get_yaml_file(file_name):
|
def get_yaml_cfg(file_name: str | Path) -> dict:
|
||||||
path = existing_filename_or_none(join(searx_dir, file_name))
|
"""Shortcut to load a YAML config from a file, located in the
|
||||||
if path is None:
|
|
||||||
raise FileNotFoundError(f"File {file_name} does not exist!")
|
|
||||||
|
|
||||||
return load_yaml(path)
|
- :py:obj:`get_user_cfg_folder` or
|
||||||
|
- in the ``searx`` folder of the SearXNG installation
|
||||||
|
|
||||||
def get_default_settings_path():
|
|
||||||
return existing_filename_or_none(join(searx_dir, 'settings.yml'))
|
|
||||||
|
|
||||||
|
|
||||||
def get_user_settings_path() -> Optional[str]:
|
|
||||||
"""Get an user settings file.
|
|
||||||
By descending priority:
|
|
||||||
1. ``environ['SEARXNG_SETTINGS_PATH']``
|
|
||||||
2. ``/etc/searxng/settings.yml`` except if ``SEARXNG_DISABLE_ETC_SETTINGS`` is ``true`` or ``1``
|
|
||||||
3. ``None``
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# check the environment variable SEARXNG_SETTINGS_PATH
|
folder = get_user_cfg_folder() or Path(searx_dir)
|
||||||
# if the environment variable is defined, this is the last check
|
fname = folder / file_name
|
||||||
if 'SEARXNG_SETTINGS_PATH' in environ:
|
if not fname.is_file():
|
||||||
return existing_filename_or_none(environ['SEARXNG_SETTINGS_PATH'])
|
raise FileNotFoundError(f"File {fname} does not exist!")
|
||||||
|
|
||||||
# if SEARXNG_DISABLE_ETC_SETTINGS don't look any further
|
return load_yaml(fname)
|
||||||
if environ.get('SEARXNG_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true'):
|
|
||||||
return None
|
|
||||||
|
|
||||||
# check /etc/searxng/settings.yml
|
|
||||||
# (continue with other locations if the file is not found)
|
def get_user_cfg_folder() -> Path | None:
|
||||||
return existing_filename_or_none('/etc/searxng/settings.yml')
|
"""Returns folder where the local configurations are located.
|
||||||
|
|
||||||
|
1. If the ``SEARXNG_SETTINGS_PATH`` environment is set and points to a
|
||||||
|
folder (e.g. ``/etc/mysxng/``), all local configurations are expected in
|
||||||
|
this folder. The settings of the :ref:`SearXNG appl <searxng
|
||||||
|
settings.yml>` then expected in ``settings.yml``
|
||||||
|
(e.g. ``/etc/mysxng/settings.yml``).
|
||||||
|
|
||||||
|
2. If the ``SEARXNG_SETTINGS_PATH`` environment is set and points to a file
|
||||||
|
(e.g. ``/etc/mysxng/myinstance.yml``), this file contains the settings of
|
||||||
|
the :ref:`SearXNG appl <searxng settings.yml>` and the folder
|
||||||
|
(e.g. ``/etc/mysxng/``) is used for all other configurations.
|
||||||
|
|
||||||
|
This type (``SEARXNG_SETTINGS_PATH`` points to a file) is suitable for
|
||||||
|
use cases in which different profiles of the :ref:`SearXNG appl <searxng
|
||||||
|
settings.yml>` are to be managed, such as in test scenarios.
|
||||||
|
|
||||||
|
3. If folder ``/etc/searxng`` exists, it is used.
|
||||||
|
|
||||||
|
In case none of the above path exists, ``None`` is returned. In case of
|
||||||
|
environment ``SEARXNG_SETTINGS_PATH`` is set, but the (folder or file) does
|
||||||
|
not exists, a :py:obj:`EnvironmentError` is raised.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
folder = None
|
||||||
|
settings_path = os.environ.get("SEARXNG_SETTINGS_PATH")
|
||||||
|
|
||||||
|
# Disable default /etc/searxng is intended exclusively for internal testing purposes
|
||||||
|
# and is therefore not documented!
|
||||||
|
disable_etc = os.environ.get('SEARXNG_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true')
|
||||||
|
|
||||||
|
if settings_path:
|
||||||
|
# rule 1. and 2.
|
||||||
|
settings_path = Path(settings_path)
|
||||||
|
if settings_path.is_dir():
|
||||||
|
folder = settings_path
|
||||||
|
elif settings_path.is_file():
|
||||||
|
folder = settings_path.parent
|
||||||
|
else:
|
||||||
|
raise EnvironmentError(1, f"{settings_path} not exists!", settings_path)
|
||||||
|
|
||||||
|
if not folder and not disable_etc:
|
||||||
|
# default: rule 3.
|
||||||
|
folder = Path("/etc/searxng")
|
||||||
|
if not folder.is_dir():
|
||||||
|
folder = None
|
||||||
|
|
||||||
|
return folder
|
||||||
|
|
||||||
|
|
||||||
def update_dict(default_dict, user_dict):
|
def update_dict(default_dict, user_dict):
|
||||||
|
@ -74,7 +122,9 @@ def update_dict(default_dict, user_dict):
|
||||||
return default_dict
|
return default_dict
|
||||||
|
|
||||||
|
|
||||||
def update_settings(default_settings, user_settings):
|
def update_settings(default_settings: dict, user_settings: dict):
|
||||||
|
# pylint: disable=too-many-branches
|
||||||
|
|
||||||
# merge everything except the engines
|
# merge everything except the engines
|
||||||
for k, v in user_settings.items():
|
for k, v in user_settings.items():
|
||||||
if k not in ('use_default_settings', 'engines'):
|
if k not in ('use_default_settings', 'engines'):
|
||||||
|
@ -124,6 +174,7 @@ def update_settings(default_settings, user_settings):
|
||||||
|
|
||||||
|
|
||||||
def is_use_default_settings(user_settings):
|
def is_use_default_settings(user_settings):
|
||||||
|
|
||||||
use_default_settings = user_settings.get('use_default_settings')
|
use_default_settings = user_settings.get('use_default_settings')
|
||||||
if use_default_settings is True:
|
if use_default_settings is True:
|
||||||
return True
|
return True
|
||||||
|
@ -134,25 +185,37 @@ def is_use_default_settings(user_settings):
|
||||||
raise ValueError('Invalid value for use_default_settings')
|
raise ValueError('Invalid value for use_default_settings')
|
||||||
|
|
||||||
|
|
||||||
def load_settings(load_user_settings=True):
|
def load_settings(load_user_settings=True) -> tuple[dict, str]:
|
||||||
default_settings_path = get_default_settings_path()
|
"""Function for loading the settings of the SearXNG application
|
||||||
user_settings_path = get_user_settings_path()
|
(:ref:`settings.yml <searxng settings.yml>`)."""
|
||||||
if user_settings_path is None or not load_user_settings:
|
|
||||||
# no user settings
|
|
||||||
return (load_yaml(default_settings_path), 'load the default settings from {}'.format(default_settings_path))
|
|
||||||
|
|
||||||
# user settings
|
msg = f"load the default settings from {DEFAULT_SETTINGS_FILE}"
|
||||||
user_settings = load_yaml(user_settings_path)
|
cfg = load_yaml(DEFAULT_SETTINGS_FILE)
|
||||||
if is_use_default_settings(user_settings):
|
cfg_folder = get_user_cfg_folder()
|
||||||
|
|
||||||
|
if not load_user_settings or not cfg_folder:
|
||||||
|
return cfg, msg
|
||||||
|
|
||||||
|
settings_yml = os.environ.get("SEARXNG_SETTINGS_PATH")
|
||||||
|
if settings_yml and Path(settings_yml).is_file():
|
||||||
|
# see get_user_cfg_folder() --> SEARXNG_SETTINGS_PATH points to a file
|
||||||
|
settings_yml = Path(settings_yml).name
|
||||||
|
else:
|
||||||
|
# see get_user_cfg_folder() --> SEARXNG_SETTINGS_PATH points to a folder
|
||||||
|
settings_yml = SETTINGS_YAML
|
||||||
|
|
||||||
|
cfg_file = cfg_folder / settings_yml
|
||||||
|
if not cfg_file.exists():
|
||||||
|
return cfg, msg
|
||||||
|
|
||||||
|
msg = f"load the user settings from {cfg_file}"
|
||||||
|
user_cfg = load_yaml(cfg_file)
|
||||||
|
|
||||||
|
if is_use_default_settings(user_cfg):
|
||||||
# the user settings are merged with the default configuration
|
# the user settings are merged with the default configuration
|
||||||
default_settings = load_yaml(default_settings_path)
|
msg = f"merge the default settings ( {DEFAULT_SETTINGS_FILE} ) and the user settings ( {cfg_file} )"
|
||||||
update_settings(default_settings, user_settings)
|
update_settings(cfg, user_cfg)
|
||||||
return (
|
else:
|
||||||
default_settings,
|
cfg = user_cfg
|
||||||
'merge the default settings ( {} ) and the user settings ( {} )'.format(
|
|
||||||
default_settings_path, user_settings_path
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
# the user settings, fully replace the default configuration
|
return cfg, msg
|
||||||
return (user_settings, 'load the user settings from {}'.format(user_settings_path))
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -245,6 +245,7 @@ article[data-vim-selected].category-social {
|
||||||
.url_o1 {
|
.url_o1 {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
|
padding-bottom: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.url_o1::after {
|
.url_o1::after {
|
||||||
|
@ -260,6 +261,7 @@ article[data-vim-selected].category-social {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
|
||||||
.url_i2 {
|
.url_i2 {
|
||||||
float: right;
|
float: right;
|
||||||
|
|
|
@ -1,12 +1,19 @@
|
||||||
<select class="language" id="language" name="language" aria-label="{{ _('Search language') }}">{{- '' -}}
|
<select class="language" id="language" name="language" aria-label="{{ _('Search language') }}">{{- '' -}}
|
||||||
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }} [all]</option>
|
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }} [all]</option>{{- '' -}}
|
||||||
<option value="auto" {% if current_language == 'auto' %}selected="selected"{% endif %}>
|
<option value="all"
|
||||||
{{- _('Auto-detect') -}}
|
{%- if current_language == 'all' %} selected="selected" {%- endif -%}>
|
||||||
{%- if current_language == 'auto' %} ({{ search_language }}){%- endif -%}
|
{{- _('Default language') }} [all] {{- '' -}}
|
||||||
</option>
|
</option>{{- '' -}}
|
||||||
{%- for sxng_tag,lang_name,country_name,english_name,flag in sxng_locales | sort(attribute=1) -%}
|
<option value="auto"
|
||||||
<option value="{{ sxng_tag }}" {% if sxng_tag == current_language %}selected="selected"{% endif %}>
|
{%- if current_language == 'auto' %} selected="selected" {%- endif -%}>
|
||||||
{% if flag %}{{ flag }} {% endif%} {{- lang_name }} {% if country_name %} - {{ country_name }} {% endif %} [{{sxng_tag}}]
|
{{- _('Auto-detect') }} [auto] {{- '' -}}
|
||||||
</option>
|
</option>{{- '' -}}
|
||||||
{%- endfor -%}
|
{% for sxng_tag,lang_name,country_name,english_name,flag in sxng_locales | sort(attribute=1) -%}
|
||||||
|
<option value="{{ sxng_tag }}"
|
||||||
|
{%- if sxng_tag == current_language %} selected="selected" {%- endif -%}>
|
||||||
|
{{ lang_name }}{%- if country_name -%}-{{ country_name }}{%- endif -%}
|
||||||
|
{{- ' ' -}}[{{sxng_tag}}]{{- ' ' -}}
|
||||||
|
{%- if flag -%}{{ flag }}{%- endif -%}
|
||||||
|
</option>
|
||||||
|
{%- endfor -%}
|
||||||
</select>
|
</select>
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
{% for sxng_tag,lang_name,country_name,english_name,flag in sxng_locales | sort(attribute=1) -%}
|
{% for sxng_tag,lang_name,country_name,english_name,flag in sxng_locales | sort(attribute=1) -%}
|
||||||
<option value="{{ sxng_tag }}"
|
<option value="{{ sxng_tag }}"
|
||||||
{%- if sxng_tag == current_language %} selected="selected" {%- endif -%}>
|
{%- if sxng_tag == current_language %} selected="selected" {%- endif -%}>
|
||||||
{%- if flag -%}{{ flag }} {% endif -%}
|
|
||||||
{{ lang_name }}{%- if country_name -%}-{{ country_name }}{%- endif -%}
|
{{ lang_name }}{%- if country_name -%}-{{ country_name }}{%- endif -%}
|
||||||
{{- ' ' -}}[{{sxng_tag}}]{{- '' -}}
|
{{- ' ' -}}[{{sxng_tag}}]{{- ' ' -}}
|
||||||
|
{%- if flag -%}{{ flag }}{%- endif -%}
|
||||||
</option>
|
</option>
|
||||||
{%- endfor -%}
|
{%- endfor -%}
|
||||||
</select>{{- '' -}}
|
</select>{{- '' -}}
|
||||||
|
|
Binary file not shown.
|
@ -9,21 +9,24 @@
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023, 2024.
|
# return42 <markus.heiser@darmarit.de>, 2023, 2024.
|
||||||
# APoniatowski <adam@poniatowski.dev>, 2023.
|
# APoniatowski <adam@poniatowski.dev>, 2023.
|
||||||
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# louispires <louispires@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# notlmutsaers <notlmutsaers@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-06-08 13:18+0000\n"
|
"PO-Revision-Date: 2024-07-09 15:18+0000\n"
|
||||||
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
|
"Last-Translator: notlmutsaers <notlmutsaers@users.noreply.translate.codeberg."
|
||||||
"\n"
|
"org>\n"
|
||||||
|
"Language-Team: Afrikaans <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/af/>\n"
|
||||||
"Language: af\n"
|
"Language: af\n"
|
||||||
"Language-Team: Afrikaans "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/af/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -189,7 +192,7 @@ msgstr "geval"
|
||||||
#. WEATHER_TERMS['CURRENT CONDITION']
|
#. WEATHER_TERMS['CURRENT CONDITION']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Current condition"
|
msgid "Current condition"
|
||||||
msgstr ""
|
msgstr "Huidige toestand"
|
||||||
|
|
||||||
#. WEATHER_TERMS['EVENING']
|
#. WEATHER_TERMS['EVENING']
|
||||||
#: searx/engines/wttr.py:100 searx/searxng.msg
|
#: searx/engines/wttr.py:100 searx/searxng.msg
|
||||||
|
@ -199,22 +202,22 @@ msgstr "aand"
|
||||||
#. WEATHER_TERMS['FEELS LIKE']
|
#. WEATHER_TERMS['FEELS LIKE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Feels like"
|
msgid "Feels like"
|
||||||
msgstr ""
|
msgstr "Voel soos"
|
||||||
|
|
||||||
#. WEATHER_TERMS['HUMIDITY']
|
#. WEATHER_TERMS['HUMIDITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Humidity"
|
msgid "Humidity"
|
||||||
msgstr ""
|
msgstr "Humiditeit"
|
||||||
|
|
||||||
#. WEATHER_TERMS['MAX TEMP.']
|
#. WEATHER_TERMS['MAX TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Max temp."
|
msgid "Max temp."
|
||||||
msgstr ""
|
msgstr "Maksimum temp."
|
||||||
|
|
||||||
#. WEATHER_TERMS['MIN TEMP.']
|
#. WEATHER_TERMS['MIN TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Min temp."
|
msgid "Min temp."
|
||||||
msgstr ""
|
msgstr "Minimum temp."
|
||||||
|
|
||||||
#. WEATHER_TERMS['MORNING']
|
#. WEATHER_TERMS['MORNING']
|
||||||
#: searx/engines/wttr.py:100 searx/searxng.msg
|
#: searx/engines/wttr.py:100 searx/searxng.msg
|
||||||
|
@ -234,97 +237,97 @@ msgstr "Middag"
|
||||||
#. WEATHER_TERMS['PRESSURE']
|
#. WEATHER_TERMS['PRESSURE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Pressure"
|
msgid "Pressure"
|
||||||
msgstr ""
|
msgstr "Druk"
|
||||||
|
|
||||||
#. WEATHER_TERMS['SUNRISE']
|
#. WEATHER_TERMS['SUNRISE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Sunrise"
|
msgid "Sunrise"
|
||||||
msgstr ""
|
msgstr "Sonopkoms"
|
||||||
|
|
||||||
#. WEATHER_TERMS['SUNSET']
|
#. WEATHER_TERMS['SUNSET']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Sunset"
|
msgid "Sunset"
|
||||||
msgstr ""
|
msgstr "Sonsondergang"
|
||||||
|
|
||||||
#. WEATHER_TERMS['TEMPERATURE']
|
#. WEATHER_TERMS['TEMPERATURE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Temperature"
|
msgid "Temperature"
|
||||||
msgstr ""
|
msgstr "Temperatuur"
|
||||||
|
|
||||||
#. WEATHER_TERMS['UV INDEX']
|
#. WEATHER_TERMS['UV INDEX']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "UV index"
|
msgid "UV index"
|
||||||
msgstr ""
|
msgstr "UV indeks"
|
||||||
|
|
||||||
#. WEATHER_TERMS['VISIBILITY']
|
#. WEATHER_TERMS['VISIBILITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Visibility"
|
msgid "Visibility"
|
||||||
msgstr ""
|
msgstr "Sigbaarheid"
|
||||||
|
|
||||||
#. WEATHER_TERMS['WIND']
|
#. WEATHER_TERMS['WIND']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Wind"
|
msgid "Wind"
|
||||||
msgstr ""
|
msgstr "Wind"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
|
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "subscribers"
|
msgid "subscribers"
|
||||||
msgstr ""
|
msgstr "intekenare"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['POSTS']
|
#. SOCIAL_MEDIA_TERMS['POSTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "posts"
|
msgid "posts"
|
||||||
msgstr ""
|
msgstr "plasings"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
|
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "active users"
|
msgid "active users"
|
||||||
msgstr ""
|
msgstr "aktiewe gebruikers"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['COMMENTS']
|
#. SOCIAL_MEDIA_TERMS['COMMENTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "comments"
|
msgid "comments"
|
||||||
msgstr ""
|
msgstr "kommentaar"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['USER']
|
#. SOCIAL_MEDIA_TERMS['USER']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "user"
|
msgid "user"
|
||||||
msgstr ""
|
msgstr "gebruiker"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
|
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "community"
|
msgid "community"
|
||||||
msgstr ""
|
msgstr "gemeenskap"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['POINTS']
|
#. SOCIAL_MEDIA_TERMS['POINTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr ""
|
msgstr "punte"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['TITLE']
|
#. SOCIAL_MEDIA_TERMS['TITLE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "title"
|
msgid "title"
|
||||||
msgstr ""
|
msgstr "titel"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['AUTHOR']
|
#. SOCIAL_MEDIA_TERMS['AUTHOR']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "author"
|
msgid "author"
|
||||||
msgstr ""
|
msgstr "outeur"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "open"
|
msgid "open"
|
||||||
msgstr ""
|
msgstr "oop"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "closed"
|
msgid "closed"
|
||||||
msgstr ""
|
msgstr "toe"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
||||||
#: searx/engines/discourse.py:132 searx/searxng.msg
|
#: searx/engines/discourse.py:132 searx/searxng.msg
|
||||||
msgid "answered"
|
msgid "answered"
|
||||||
msgstr ""
|
msgstr "geantwoord"
|
||||||
|
|
||||||
#: searx/webapp.py:330
|
#: searx/webapp.py:330
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
|
@ -505,7 +508,7 @@ msgstr "Lêer kwaliteit"
|
||||||
|
|
||||||
#: searx/plugins/calculator.py:12
|
#: searx/plugins/calculator.py:12
|
||||||
msgid "Calculate mathematical expressions via the search bar"
|
msgid "Calculate mathematical expressions via the search bar"
|
||||||
msgstr ""
|
msgstr "Bereken wiskundige uitdrukkings via die soekbalk"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:10
|
#: searx/plugins/hash_plugin.py:10
|
||||||
msgid "Converts strings to different hash digests."
|
msgid "Converts strings to different hash digests."
|
||||||
|
@ -521,11 +524,13 @@ msgstr "vervang Gasheernaam"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:68
|
#: searx/plugins/hostnames.py:68
|
||||||
msgid "Hostnames plugin"
|
msgid "Hostnames plugin"
|
||||||
msgstr ""
|
msgstr "Gasheername-inprop"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:69
|
#: searx/plugins/hostnames.py:69
|
||||||
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Herskryf gasheername, verwyder resultate of prioritiseer dit op grond van "
|
||||||
|
"die gasheernaam"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:12
|
#: searx/plugins/oa_doi_rewrite.py:12
|
||||||
msgid "Open Access DOI rewrite"
|
msgid "Open Access DOI rewrite"
|
||||||
|
@ -553,11 +558,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:28
|
#: searx/plugins/self_info.py:28
|
||||||
msgid "Your IP is: "
|
msgid "Your IP is: "
|
||||||
msgstr ""
|
msgstr "Jou IP is: "
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:31
|
#: searx/plugins/self_info.py:31
|
||||||
msgid "Your user-agent is: "
|
msgid "Your user-agent is: "
|
||||||
msgstr ""
|
msgstr "Jou gebruiker-agent is: "
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:24
|
#: searx/plugins/tor_check.py:24
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
|
@ -604,7 +609,7 @@ msgstr "Verwyder spoorsnyersargumente van die teruggestuurde URL"
|
||||||
|
|
||||||
#: searx/plugins/unit_converter.py:29
|
#: searx/plugins/unit_converter.py:29
|
||||||
msgid "Convert between units"
|
msgid "Convert between units"
|
||||||
msgstr ""
|
msgstr "Skakel tussen eenhede om"
|
||||||
|
|
||||||
#: searx/templates/simple/404.html:4
|
#: searx/templates/simple/404.html:4
|
||||||
msgid "Page not found"
|
msgid "Page not found"
|
||||||
|
@ -1148,15 +1153,15 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/cookies.html:46
|
#: searx/templates/simple/preferences/cookies.html:46
|
||||||
msgid "Copy preferences hash"
|
msgid "Copy preferences hash"
|
||||||
msgstr ""
|
msgstr "Kopieer voorkeur-hash"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/cookies.html:57
|
#: searx/templates/simple/preferences/cookies.html:57
|
||||||
msgid "Insert copied preferences hash (without URL) to restore"
|
msgid "Insert copied preferences hash (without URL) to restore"
|
||||||
msgstr ""
|
msgstr "Voeg gekopieerde voorkeur-hash (sonder URL) in om te herstel"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/cookies.html:59
|
#: searx/templates/simple/preferences/cookies.html:59
|
||||||
msgid "Preferences hash"
|
msgid "Preferences hash"
|
||||||
msgstr ""
|
msgstr "Voorkeure hash"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/doi_resolver.html:2
|
#: searx/templates/simple/preferences/doi_resolver.html:2
|
||||||
msgid "Open Access DOI resolver"
|
msgid "Open Access DOI resolver"
|
||||||
|
@ -1176,11 +1181,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:15
|
#: searx/templates/simple/preferences/engines.html:15
|
||||||
msgid "Enable all"
|
msgid "Enable all"
|
||||||
msgstr ""
|
msgstr "Aktiveer alles"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:16
|
#: searx/templates/simple/preferences/engines.html:16
|
||||||
msgid "Disable all"
|
msgid "Disable all"
|
||||||
msgstr ""
|
msgstr "Deaktiveer alles"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:25
|
#: searx/templates/simple/preferences/engines.html:25
|
||||||
msgid "!bang"
|
msgid "!bang"
|
||||||
|
@ -1372,7 +1377,7 @@ msgstr "Lêergrootte"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/files.html:40
|
#: searx/templates/simple/result_templates/files.html:40
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr "Datum"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/files.html:42
|
#: searx/templates/simple/result_templates/files.html:42
|
||||||
#: searx/templates/simple/result_templates/paper.html:24
|
#: searx/templates/simple/result_templates/paper.html:24
|
||||||
|
@ -1381,7 +1386,7 @@ msgstr "Tik"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:20
|
#: searx/templates/simple/result_templates/images.html:20
|
||||||
msgid "Resolution"
|
msgid "Resolution"
|
||||||
msgstr ""
|
msgstr "Resolusie"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:21
|
#: searx/templates/simple/result_templates/images.html:21
|
||||||
msgid "Format"
|
msgid "Format"
|
||||||
|
@ -1409,15 +1414,15 @@ msgstr "versteek kaart"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:12
|
#: searx/templates/simple/result_templates/packages.html:12
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr ""
|
msgstr "Weergawe"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:18
|
#: searx/templates/simple/result_templates/packages.html:18
|
||||||
msgid "Maintainer"
|
msgid "Maintainer"
|
||||||
msgstr ""
|
msgstr "Onderhouer"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:24
|
#: searx/templates/simple/result_templates/packages.html:24
|
||||||
msgid "Updated at"
|
msgid "Updated at"
|
||||||
msgstr ""
|
msgstr "Opgedateer by"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:30
|
#: searx/templates/simple/result_templates/packages.html:30
|
||||||
#: searx/templates/simple/result_templates/paper.html:25
|
#: searx/templates/simple/result_templates/paper.html:25
|
||||||
|
@ -1426,7 +1431,7 @@ msgstr "Merkers"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:36
|
#: searx/templates/simple/result_templates/packages.html:36
|
||||||
msgid "Popularity"
|
msgid "Popularity"
|
||||||
msgstr ""
|
msgstr "Gewildheid"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:42
|
#: searx/templates/simple/result_templates/packages.html:42
|
||||||
msgid "License"
|
msgid "License"
|
||||||
|
@ -1434,11 +1439,11 @@ msgstr "Lisensie"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:52
|
#: searx/templates/simple/result_templates/packages.html:52
|
||||||
msgid "Project"
|
msgid "Project"
|
||||||
msgstr ""
|
msgstr "Projek"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:55
|
#: searx/templates/simple/result_templates/packages.html:55
|
||||||
msgid "Project homepage"
|
msgid "Project homepage"
|
||||||
msgstr ""
|
msgstr "Projek tuisblad"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:5
|
#: searx/templates/simple/result_templates/paper.html:5
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
|
@ -1679,4 +1684,3 @@ msgstr "versteek video"
|
||||||
|
|
||||||
#~ msgid "TiB"
|
#~ msgid "TiB"
|
||||||
#~ msgstr "TiB"
|
#~ msgstr "TiB"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -12,21 +12,23 @@
|
||||||
# KDesp73 <kdesp2003@gmail.com>, 2023.
|
# KDesp73 <kdesp2003@gmail.com>, 2023.
|
||||||
# RaptaG <george-raptis@tutamail.com>, 2023.
|
# RaptaG <george-raptis@tutamail.com>, 2023.
|
||||||
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# notlmutsaers <notlmutsaers@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-06-14 07:08+0000\n"
|
"PO-Revision-Date: 2024-07-09 15:18+0000\n"
|
||||||
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
|
"Last-Translator: notlmutsaers <notlmutsaers@users.noreply.translate.codeberg."
|
||||||
"\n"
|
"org>\n"
|
||||||
|
"Language-Team: Greek <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/el/>\n"
|
||||||
"Language: el_GR\n"
|
"Language: el_GR\n"
|
||||||
"Language-Team: Greek "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/el/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -167,7 +169,7 @@ msgstr "σκοτεινό"
|
||||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr ""
|
msgstr "χρόνο λειτουργίας"
|
||||||
|
|
||||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||||
#: searx/searxng.msg searx/templates/simple/base.html:50
|
#: searx/searxng.msg searx/templates/simple/base.html:50
|
||||||
|
@ -177,7 +179,7 @@ msgstr "Σχετικά με το SearXNG"
|
||||||
#. WEATHER_TERMS['AVERAGE TEMP.']
|
#. WEATHER_TERMS['AVERAGE TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Average temp."
|
msgid "Average temp."
|
||||||
msgstr "Μέση Θερμοκρασία"
|
msgstr "Μέση θερμοκρασία."
|
||||||
|
|
||||||
#. WEATHER_TERMS['CLOUD COVER']
|
#. WEATHER_TERMS['CLOUD COVER']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -187,12 +189,12 @@ msgstr "Νεφοκάλυψη"
|
||||||
#. WEATHER_TERMS['CONDITION']
|
#. WEATHER_TERMS['CONDITION']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Condition"
|
msgid "Condition"
|
||||||
msgstr ""
|
msgstr "Κατάσταση"
|
||||||
|
|
||||||
#. WEATHER_TERMS['CURRENT CONDITION']
|
#. WEATHER_TERMS['CURRENT CONDITION']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Current condition"
|
msgid "Current condition"
|
||||||
msgstr ""
|
msgstr "Τωρινή κατάσταση"
|
||||||
|
|
||||||
#. WEATHER_TERMS['EVENING']
|
#. WEATHER_TERMS['EVENING']
|
||||||
#: searx/engines/wttr.py:100 searx/searxng.msg
|
#: searx/engines/wttr.py:100 searx/searxng.msg
|
||||||
|
@ -212,7 +214,7 @@ msgstr "Υγρασία"
|
||||||
#. WEATHER_TERMS['MAX TEMP.']
|
#. WEATHER_TERMS['MAX TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Max temp."
|
msgid "Max temp."
|
||||||
msgstr "Μέγιστη Θερμοκρασία"
|
msgstr "Μέγιστη θερμοκρασία."
|
||||||
|
|
||||||
#. WEATHER_TERMS['MIN TEMP.']
|
#. WEATHER_TERMS['MIN TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -242,92 +244,92 @@ msgstr "Πίεση"
|
||||||
#. WEATHER_TERMS['SUNRISE']
|
#. WEATHER_TERMS['SUNRISE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Sunrise"
|
msgid "Sunrise"
|
||||||
msgstr ""
|
msgstr "Ανατολή ηλίου"
|
||||||
|
|
||||||
#. WEATHER_TERMS['SUNSET']
|
#. WEATHER_TERMS['SUNSET']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Sunset"
|
msgid "Sunset"
|
||||||
msgstr ""
|
msgstr "Η δυση του ηλιου"
|
||||||
|
|
||||||
#. WEATHER_TERMS['TEMPERATURE']
|
#. WEATHER_TERMS['TEMPERATURE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Temperature"
|
msgid "Temperature"
|
||||||
msgstr ""
|
msgstr "Θερμοκρασία"
|
||||||
|
|
||||||
#. WEATHER_TERMS['UV INDEX']
|
#. WEATHER_TERMS['UV INDEX']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "UV index"
|
msgid "UV index"
|
||||||
msgstr ""
|
msgstr "Δείκτης UV"
|
||||||
|
|
||||||
#. WEATHER_TERMS['VISIBILITY']
|
#. WEATHER_TERMS['VISIBILITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Visibility"
|
msgid "Visibility"
|
||||||
msgstr ""
|
msgstr "Ορατότητα"
|
||||||
|
|
||||||
#. WEATHER_TERMS['WIND']
|
#. WEATHER_TERMS['WIND']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Wind"
|
msgid "Wind"
|
||||||
msgstr ""
|
msgstr "Ανεμος"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
|
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "subscribers"
|
msgid "subscribers"
|
||||||
msgstr ""
|
msgstr "συνδρομητές"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['POSTS']
|
#. SOCIAL_MEDIA_TERMS['POSTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "posts"
|
msgid "posts"
|
||||||
msgstr ""
|
msgstr "αναρτήσεις"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
|
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "active users"
|
msgid "active users"
|
||||||
msgstr ""
|
msgstr "ενεργούς χρήστες"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['COMMENTS']
|
#. SOCIAL_MEDIA_TERMS['COMMENTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "comments"
|
msgid "comments"
|
||||||
msgstr ""
|
msgstr "σχόλια"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['USER']
|
#. SOCIAL_MEDIA_TERMS['USER']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "user"
|
msgid "user"
|
||||||
msgstr ""
|
msgstr "χρήστης"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
|
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "community"
|
msgid "community"
|
||||||
msgstr ""
|
msgstr "κοινότητα"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['POINTS']
|
#. SOCIAL_MEDIA_TERMS['POINTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr ""
|
msgstr "σημεία"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['TITLE']
|
#. SOCIAL_MEDIA_TERMS['TITLE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "title"
|
msgid "title"
|
||||||
msgstr ""
|
msgstr "τίτλος"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['AUTHOR']
|
#. SOCIAL_MEDIA_TERMS['AUTHOR']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "author"
|
msgid "author"
|
||||||
msgstr ""
|
msgstr "συγγραφέας"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "open"
|
msgid "open"
|
||||||
msgstr ""
|
msgstr "Άνοιξε"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "closed"
|
msgid "closed"
|
||||||
msgstr ""
|
msgstr "κλειστό"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
||||||
#: searx/engines/discourse.py:132 searx/searxng.msg
|
#: searx/engines/discourse.py:132 searx/searxng.msg
|
||||||
msgid "answered"
|
msgid "answered"
|
||||||
msgstr ""
|
msgstr "απάντησε"
|
||||||
|
|
||||||
#: searx/webapp.py:330
|
#: searx/webapp.py:330
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
|
@ -508,7 +510,7 @@ msgstr "Ποιότητα αρχείου"
|
||||||
|
|
||||||
#: searx/plugins/calculator.py:12
|
#: searx/plugins/calculator.py:12
|
||||||
msgid "Calculate mathematical expressions via the search bar"
|
msgid "Calculate mathematical expressions via the search bar"
|
||||||
msgstr ""
|
msgstr "Υπολογίστε μαθηματικές εκφράσεις μέσω της γραμμής αναζήτησης"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:10
|
#: searx/plugins/hash_plugin.py:10
|
||||||
msgid "Converts strings to different hash digests."
|
msgid "Converts strings to different hash digests."
|
||||||
|
@ -524,15 +526,17 @@ msgstr "Αντικατάσταση hostname"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:68
|
#: searx/plugins/hostnames.py:68
|
||||||
msgid "Hostnames plugin"
|
msgid "Hostnames plugin"
|
||||||
msgstr ""
|
msgstr "Προσθήκη ονομάτων κεντρικού υπολογιστή"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:69
|
#: searx/plugins/hostnames.py:69
|
||||||
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ξαναγράψτε ονόματα κεντρικών υπολογιστών, αφαιρέστε τα αποτελέσματα ή δώστε "
|
||||||
|
"προτεραιότητα σε αυτά με βάση το όνομα κεντρικού υπολογιστή"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:12
|
#: searx/plugins/oa_doi_rewrite.py:12
|
||||||
msgid "Open Access DOI rewrite"
|
msgid "Open Access DOI rewrite"
|
||||||
msgstr "Αντικατάσταση με DOI ανοιχτής πρόσβασης"
|
msgstr "Ανοίξτε την επανεγγραφή DOI της Access"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:13
|
#: searx/plugins/oa_doi_rewrite.py:13
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -556,11 +560,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:28
|
#: searx/plugins/self_info.py:28
|
||||||
msgid "Your IP is: "
|
msgid "Your IP is: "
|
||||||
msgstr ""
|
msgstr "Η IP σας είναι: "
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:31
|
#: searx/plugins/self_info.py:31
|
||||||
msgid "Your user-agent is: "
|
msgid "Your user-agent is: "
|
||||||
msgstr ""
|
msgstr "Ο χρήστης-πράκτοράς σας είναι: "
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:24
|
#: searx/plugins/tor_check.py:24
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
|
@ -607,7 +611,7 @@ msgstr "Αφαίρεση ιχνηλατών από τους επιστρεφόμ
|
||||||
|
|
||||||
#: searx/plugins/unit_converter.py:29
|
#: searx/plugins/unit_converter.py:29
|
||||||
msgid "Convert between units"
|
msgid "Convert between units"
|
||||||
msgstr ""
|
msgstr "Μετατροπή μεταξύ μονάδων"
|
||||||
|
|
||||||
#: searx/templates/simple/404.html:4
|
#: searx/templates/simple/404.html:4
|
||||||
msgid "Page not found"
|
msgid "Page not found"
|
||||||
|
@ -1037,7 +1041,7 @@ msgstr "Δεν βρέθηκαν αποτελέσματα. Μπορείτε να
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:14
|
#: searx/templates/simple/messages/no_results.html:14
|
||||||
msgid "There are no more results. You can try to:"
|
msgid "There are no more results. You can try to:"
|
||||||
msgstr ""
|
msgstr "Δεν υπάρχουν άλλα αποτελέσματα. Μπορείτε να προσπαθήσετε να:"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:19
|
#: searx/templates/simple/messages/no_results.html:19
|
||||||
msgid "Refresh the page."
|
msgid "Refresh the page."
|
||||||
|
@ -1057,11 +1061,13 @@ msgstr "Αλλαγή σε άλλη έκδοση:"
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:24
|
#: searx/templates/simple/messages/no_results.html:24
|
||||||
msgid "Search for another query or select another category."
|
msgid "Search for another query or select another category."
|
||||||
msgstr ""
|
msgstr "Αναζητήστε άλλο ερώτημα ή επιλέξτε άλλη κατηγορία."
|
||||||
|
|
||||||
#: searx/templates/simple/messages/no_results.html:25
|
#: searx/templates/simple/messages/no_results.html:25
|
||||||
msgid "Go back to the previous page using the previous page button."
|
msgid "Go back to the previous page using the previous page button."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Επιστρέψτε στην προηγούμενη σελίδα χρησιμοποιώντας το κουμπί της "
|
||||||
|
"προηγούμενης σελίδας."
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/answerers.html:4
|
#: searx/templates/simple/preferences/answerers.html:4
|
||||||
#: searx/templates/simple/preferences/engines.html:23
|
#: searx/templates/simple/preferences/engines.html:23
|
||||||
|
@ -1157,15 +1163,16 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/cookies.html:46
|
#: searx/templates/simple/preferences/cookies.html:46
|
||||||
msgid "Copy preferences hash"
|
msgid "Copy preferences hash"
|
||||||
msgstr ""
|
msgstr "Αντιγραφή κατακερματισμού προτιμήσεων"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/cookies.html:57
|
#: searx/templates/simple/preferences/cookies.html:57
|
||||||
msgid "Insert copied preferences hash (without URL) to restore"
|
msgid "Insert copied preferences hash (without URL) to restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Εισαγάγετε αντιγραμμένο κατακερματισμό προτιμήσεων (χωρίς URL) για επαναφορά"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/cookies.html:59
|
#: searx/templates/simple/preferences/cookies.html:59
|
||||||
msgid "Preferences hash"
|
msgid "Preferences hash"
|
||||||
msgstr ""
|
msgstr "Κατακερματισμός προτιμήσεων"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/doi_resolver.html:2
|
#: searx/templates/simple/preferences/doi_resolver.html:2
|
||||||
msgid "Open Access DOI resolver"
|
msgid "Open Access DOI resolver"
|
||||||
|
@ -1185,11 +1192,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:15
|
#: searx/templates/simple/preferences/engines.html:15
|
||||||
msgid "Enable all"
|
msgid "Enable all"
|
||||||
msgstr ""
|
msgstr "Ενεργοποίηση όλων"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:16
|
#: searx/templates/simple/preferences/engines.html:16
|
||||||
msgid "Disable all"
|
msgid "Disable all"
|
||||||
msgstr ""
|
msgstr "Απενεργοποίηση όλων"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/engines.html:25
|
#: searx/templates/simple/preferences/engines.html:25
|
||||||
msgid "!bang"
|
msgid "!bang"
|
||||||
|
@ -1427,11 +1434,11 @@ msgstr "Έκδοση"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:18
|
#: searx/templates/simple/result_templates/packages.html:18
|
||||||
msgid "Maintainer"
|
msgid "Maintainer"
|
||||||
msgstr ""
|
msgstr "Συντηρητής"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:24
|
#: searx/templates/simple/result_templates/packages.html:24
|
||||||
msgid "Updated at"
|
msgid "Updated at"
|
||||||
msgstr ""
|
msgstr "Ενημερώθηκε στις"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:30
|
#: searx/templates/simple/result_templates/packages.html:30
|
||||||
#: searx/templates/simple/result_templates/paper.html:25
|
#: searx/templates/simple/result_templates/paper.html:25
|
||||||
|
@ -1440,7 +1447,7 @@ msgstr "Σημάνσεις"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:36
|
#: searx/templates/simple/result_templates/packages.html:36
|
||||||
msgid "Popularity"
|
msgid "Popularity"
|
||||||
msgstr ""
|
msgstr "Δημοτικότητα"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:42
|
#: searx/templates/simple/result_templates/packages.html:42
|
||||||
msgid "License"
|
msgid "License"
|
||||||
|
@ -1452,7 +1459,7 @@ msgstr "Έργο"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/packages.html:55
|
#: searx/templates/simple/result_templates/packages.html:55
|
||||||
msgid "Project homepage"
|
msgid "Project homepage"
|
||||||
msgstr ""
|
msgstr "Αρχική σελίδα του έργου"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:5
|
#: searx/templates/simple/result_templates/paper.html:5
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
|
@ -1951,4 +1958,3 @@ msgstr "απόκρυψη βίντεο"
|
||||||
|
|
||||||
#~ msgid "TiB"
|
#~ msgid "TiB"
|
||||||
#~ msgstr "TiB"
|
#~ msgstr "TiB"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -14,19 +14,19 @@
|
||||||
# alexgabi <alexgabi@users.noreply.translate.codeberg.org>, 2024.
|
# alexgabi <alexgabi@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-05-02 12:18+0000\n"
|
"PO-Revision-Date: 2024-07-09 15:18+0000\n"
|
||||||
"Last-Translator: alexgabi <alexgabi@users.noreply.translate.codeberg.org>"
|
"Last-Translator: alexgabi <alexgabi@users.noreply.translate.codeberg.org>\n"
|
||||||
"\n"
|
"Language-Team: Basque <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/eu/>\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
"Language-Team: Basque "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/eu/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -317,17 +317,17 @@ msgstr "egilea"
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "open"
|
msgid "open"
|
||||||
msgstr ""
|
msgstr "ireki"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "closed"
|
msgid "closed"
|
||||||
msgstr ""
|
msgstr "itxita"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
||||||
#: searx/engines/discourse.py:132 searx/searxng.msg
|
#: searx/engines/discourse.py:132 searx/searxng.msg
|
||||||
msgid "answered"
|
msgid "answered"
|
||||||
msgstr ""
|
msgstr "erantzunda"
|
||||||
|
|
||||||
#: searx/webapp.py:330
|
#: searx/webapp.py:330
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
|
@ -507,7 +507,7 @@ msgstr "Fitxategiaren kalitatea"
|
||||||
|
|
||||||
#: searx/plugins/calculator.py:12
|
#: searx/plugins/calculator.py:12
|
||||||
msgid "Calculate mathematical expressions via the search bar"
|
msgid "Calculate mathematical expressions via the search bar"
|
||||||
msgstr ""
|
msgstr "Kalkulatu adierazpen matematikoak bilaketa-barraren bidez"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:10
|
#: searx/plugins/hash_plugin.py:10
|
||||||
msgid "Converts strings to different hash digests."
|
msgid "Converts strings to different hash digests."
|
||||||
|
@ -523,11 +523,13 @@ msgstr "Ostalariaren izena ordezkatu"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:68
|
#: searx/plugins/hostnames.py:68
|
||||||
msgid "Hostnames plugin"
|
msgid "Hostnames plugin"
|
||||||
msgstr ""
|
msgstr "Hostnames plugina"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:69
|
#: searx/plugins/hostnames.py:69
|
||||||
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Berridatzi ostalari-izenak, kendu emaitzak edo eman lehentasuna ostalari-"
|
||||||
|
"izenaren arabera"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:12
|
#: searx/plugins/oa_doi_rewrite.py:12
|
||||||
msgid "Open Access DOI rewrite"
|
msgid "Open Access DOI rewrite"
|
||||||
|
@ -555,11 +557,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:28
|
#: searx/plugins/self_info.py:28
|
||||||
msgid "Your IP is: "
|
msgid "Your IP is: "
|
||||||
msgstr ""
|
msgstr "zure IPa hau da: "
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:31
|
#: searx/plugins/self_info.py:31
|
||||||
msgid "Your user-agent is: "
|
msgid "Your user-agent is: "
|
||||||
msgstr ""
|
msgstr "Zure erabiltzaile-agentea hau da: "
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:24
|
#: searx/plugins/tor_check.py:24
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
|
@ -1926,4 +1928,3 @@ msgstr "ezkutatu bideoa"
|
||||||
|
|
||||||
#~ msgid "TiB"
|
#~ msgid "TiB"
|
||||||
#~ msgstr "TiB"
|
#~ msgstr "TiB"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -11,13 +11,14 @@
|
||||||
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# Implosion <Implosion@users.noreply.translate.codeberg.org>, 2024.
|
# Implosion <Implosion@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# artnay <artnay@users.noreply.translate.codeberg.org>, 2024.
|
# artnay <artnay@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# jonkke9 <jonkke9@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-06-27 19:18+0000\n"
|
"PO-Revision-Date: 2024-07-06 16:18+0000\n"
|
||||||
"Last-Translator: artnay <artnay@users.noreply.translate.codeberg.org>\n"
|
"Last-Translator: jonkke9 <jonkke9@users.noreply.translate.codeberg.org>\n"
|
||||||
"Language-Team: Finnish <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: Finnish <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/fi/>\n"
|
"searxng/fi/>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
|
@ -25,7 +26,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.5.5\n"
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -321,7 +322,7 @@ msgstr ""
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "closed"
|
msgid "closed"
|
||||||
msgstr ""
|
msgstr "suljettu"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
||||||
#: searx/engines/discourse.py:132 searx/searxng.msg
|
#: searx/engines/discourse.py:132 searx/searxng.msg
|
||||||
|
|
Binary file not shown.
|
@ -22,13 +22,14 @@
|
||||||
# Heyian <Heyian@users.noreply.translate.codeberg.org>, 2024.
|
# Heyian <Heyian@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# Vulcain <Vulcain@users.noreply.translate.codeberg.org>, 2024.
|
# Vulcain <Vulcain@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# wags07 <wags07@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-06-21 07:09+0000\n"
|
"PO-Revision-Date: 2024-07-06 16:18+0000\n"
|
||||||
"Last-Translator: Vulcain <Vulcain@users.noreply.translate.codeberg.org>\n"
|
"Last-Translator: wags07 <wags07@users.noreply.translate.codeberg.org>\n"
|
||||||
"Language-Team: French <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: French <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/fr/>\n"
|
"searxng/fr/>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
|
@ -36,7 +37,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 5.5.5\n"
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -534,7 +535,7 @@ msgstr "Remplacer les noms de domaine"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:68
|
#: searx/plugins/hostnames.py:68
|
||||||
msgid "Hostnames plugin"
|
msgid "Hostnames plugin"
|
||||||
msgstr ""
|
msgstr "Plugin de noms d’hôtes"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:69
|
#: searx/plugins/hostnames.py:69
|
||||||
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
||||||
|
|
Binary file not shown.
|
@ -10,27 +10,29 @@
|
||||||
# alma <alma@users.noreply.translate.codeberg.org>, 2023.
|
# alma <alma@users.noreply.translate.codeberg.org>, 2023.
|
||||||
# staram <gritty.year0043@fastmail.com>, 2023.
|
# staram <gritty.year0043@fastmail.com>, 2023.
|
||||||
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
# return42 <return42@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# wazhanudin <wazhanudin@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-03-12 17:28+0000\n"
|
"PO-Revision-Date: 2024-07-11 16:18+0000\n"
|
||||||
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>"
|
"Last-Translator: wazhanudin <wazhanudin@users.noreply.translate.codeberg.org>"
|
||||||
"\n"
|
"\n"
|
||||||
|
"Language-Team: Malay <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/ms/>\n"
|
||||||
"Language: ms\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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "tanpa pengelompokan lanjut"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -75,7 +77,7 @@ msgstr "radio"
|
||||||
#. CATEGORY_NAMES['TV']
|
#. CATEGORY_NAMES['TV']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "tv"
|
msgid "tv"
|
||||||
msgstr ""
|
msgstr "tv"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['IT']
|
#. CATEGORY_NAMES['IT']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -165,7 +167,7 @@ msgstr "gelap"
|
||||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr ""
|
msgstr "Masa aktif"
|
||||||
|
|
||||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||||
#: searx/searxng.msg searx/templates/simple/base.html:50
|
#: searx/searxng.msg searx/templates/simple/base.html:50
|
||||||
|
@ -175,22 +177,22 @@ msgstr "Tentang"
|
||||||
#. WEATHER_TERMS['AVERAGE TEMP.']
|
#. WEATHER_TERMS['AVERAGE TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Average temp."
|
msgid "Average temp."
|
||||||
msgstr ""
|
msgstr "Suhu purata."
|
||||||
|
|
||||||
#. WEATHER_TERMS['CLOUD COVER']
|
#. WEATHER_TERMS['CLOUD COVER']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Cloud cover"
|
msgid "Cloud cover"
|
||||||
msgstr ""
|
msgstr "Litupan awan"
|
||||||
|
|
||||||
#. WEATHER_TERMS['CONDITION']
|
#. WEATHER_TERMS['CONDITION']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Condition"
|
msgid "Condition"
|
||||||
msgstr ""
|
msgstr "Keadaan"
|
||||||
|
|
||||||
#. WEATHER_TERMS['CURRENT CONDITION']
|
#. WEATHER_TERMS['CURRENT CONDITION']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Current condition"
|
msgid "Current condition"
|
||||||
msgstr ""
|
msgstr "Keadaan semasa"
|
||||||
|
|
||||||
#. WEATHER_TERMS['EVENING']
|
#. WEATHER_TERMS['EVENING']
|
||||||
#: searx/engines/wttr.py:100 searx/searxng.msg
|
#: searx/engines/wttr.py:100 searx/searxng.msg
|
||||||
|
@ -200,22 +202,22 @@ msgstr "Petang"
|
||||||
#. WEATHER_TERMS['FEELS LIKE']
|
#. WEATHER_TERMS['FEELS LIKE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Feels like"
|
msgid "Feels like"
|
||||||
msgstr ""
|
msgstr "Rasa seperti"
|
||||||
|
|
||||||
#. WEATHER_TERMS['HUMIDITY']
|
#. WEATHER_TERMS['HUMIDITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Humidity"
|
msgid "Humidity"
|
||||||
msgstr ""
|
msgstr "Kelembapan"
|
||||||
|
|
||||||
#. WEATHER_TERMS['MAX TEMP.']
|
#. WEATHER_TERMS['MAX TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Max temp."
|
msgid "Max temp."
|
||||||
msgstr ""
|
msgstr "Suhu max."
|
||||||
|
|
||||||
#. WEATHER_TERMS['MIN TEMP.']
|
#. WEATHER_TERMS['MIN TEMP.']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Min temp."
|
msgid "Min temp."
|
||||||
msgstr ""
|
msgstr "Suhu min."
|
||||||
|
|
||||||
#. WEATHER_TERMS['MORNING']
|
#. WEATHER_TERMS['MORNING']
|
||||||
#: searx/engines/wttr.py:100 searx/searxng.msg
|
#: searx/engines/wttr.py:100 searx/searxng.msg
|
||||||
|
@ -235,97 +237,97 @@ msgstr "Tengah hari"
|
||||||
#. WEATHER_TERMS['PRESSURE']
|
#. WEATHER_TERMS['PRESSURE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Pressure"
|
msgid "Pressure"
|
||||||
msgstr ""
|
msgstr "Tekanan"
|
||||||
|
|
||||||
#. WEATHER_TERMS['SUNRISE']
|
#. WEATHER_TERMS['SUNRISE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Sunrise"
|
msgid "Sunrise"
|
||||||
msgstr ""
|
msgstr "Matahari terbit"
|
||||||
|
|
||||||
#. WEATHER_TERMS['SUNSET']
|
#. WEATHER_TERMS['SUNSET']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Sunset"
|
msgid "Sunset"
|
||||||
msgstr ""
|
msgstr "Matahari terbenam"
|
||||||
|
|
||||||
#. WEATHER_TERMS['TEMPERATURE']
|
#. WEATHER_TERMS['TEMPERATURE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Temperature"
|
msgid "Temperature"
|
||||||
msgstr ""
|
msgstr "Suhu"
|
||||||
|
|
||||||
#. WEATHER_TERMS['UV INDEX']
|
#. WEATHER_TERMS['UV INDEX']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "UV index"
|
msgid "UV index"
|
||||||
msgstr ""
|
msgstr "Indeks UV"
|
||||||
|
|
||||||
#. WEATHER_TERMS['VISIBILITY']
|
#. WEATHER_TERMS['VISIBILITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Visibility"
|
msgid "Visibility"
|
||||||
msgstr ""
|
msgstr "Penglihatan"
|
||||||
|
|
||||||
#. WEATHER_TERMS['WIND']
|
#. WEATHER_TERMS['WIND']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "Wind"
|
msgid "Wind"
|
||||||
msgstr ""
|
msgstr "Angin"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
|
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "subscribers"
|
msgid "subscribers"
|
||||||
msgstr ""
|
msgstr "Langganan"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['POSTS']
|
#. SOCIAL_MEDIA_TERMS['POSTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "posts"
|
msgid "posts"
|
||||||
msgstr ""
|
msgstr "kiriman"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
|
#. SOCIAL_MEDIA_TERMS['ACTIVE USERS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "active users"
|
msgid "active users"
|
||||||
msgstr ""
|
msgstr "pengguna aktif"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['COMMENTS']
|
#. SOCIAL_MEDIA_TERMS['COMMENTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "comments"
|
msgid "comments"
|
||||||
msgstr ""
|
msgstr "komen"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['USER']
|
#. SOCIAL_MEDIA_TERMS['USER']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "user"
|
msgid "user"
|
||||||
msgstr ""
|
msgstr "pengguna"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
|
#. SOCIAL_MEDIA_TERMS['COMMUNITY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "community"
|
msgid "community"
|
||||||
msgstr ""
|
msgstr "komuniti"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['POINTS']
|
#. SOCIAL_MEDIA_TERMS['POINTS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr ""
|
msgstr "mata"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['TITLE']
|
#. SOCIAL_MEDIA_TERMS['TITLE']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "title"
|
msgid "title"
|
||||||
msgstr ""
|
msgstr "tajuk"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['AUTHOR']
|
#. SOCIAL_MEDIA_TERMS['AUTHOR']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "author"
|
msgid "author"
|
||||||
msgstr ""
|
msgstr "penulis"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
#. SOCIAL_MEDIA_TERMS['THREAD OPEN']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "open"
|
msgid "open"
|
||||||
msgstr ""
|
msgstr "buka"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
|
||||||
#: searx/engines/discourse.py:121 searx/searxng.msg
|
#: searx/engines/discourse.py:121 searx/searxng.msg
|
||||||
msgid "closed"
|
msgid "closed"
|
||||||
msgstr ""
|
msgstr "tutup"
|
||||||
|
|
||||||
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
|
||||||
#: searx/engines/discourse.py:132 searx/searxng.msg
|
#: searx/engines/discourse.py:132 searx/searxng.msg
|
||||||
msgid "answered"
|
msgid "answered"
|
||||||
msgstr ""
|
msgstr "dijawab"
|
||||||
|
|
||||||
#: searx/webapp.py:330
|
#: searx/webapp.py:330
|
||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
|
@ -430,7 +432,7 @@ msgstr "Fungsi statistik"
|
||||||
|
|
||||||
#: searx/answerers/statistics/answerer.py:49
|
#: searx/answerers/statistics/answerer.py:49
|
||||||
msgid "Compute {functions} of the arguments"
|
msgid "Compute {functions} of the arguments"
|
||||||
msgstr ""
|
msgstr "Mengira {functions} dari hujah-hujah"
|
||||||
|
|
||||||
#: searx/engines/openstreetmap.py:159
|
#: searx/engines/openstreetmap.py:159
|
||||||
msgid "Get directions"
|
msgid "Get directions"
|
||||||
|
@ -450,7 +452,7 @@ msgstr "Saluran"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:105
|
#: searx/engines/radio_browser.py:105
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr "kadar bit"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:106
|
#: searx/engines/radio_browser.py:106
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
|
@ -470,6 +472,8 @@ msgid ""
|
||||||
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
||||||
"{lastCitationVelocityYear}"
|
"{lastCitationVelocityYear}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"{numCitations} cetusan daripada tahun {firstCitationVelocityYear} to "
|
||||||
|
"{lastCitationVelocityYear}"
|
||||||
|
|
||||||
#: searx/engines/tineye.py:39
|
#: searx/engines/tineye.py:39
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -486,6 +490,8 @@ msgid ""
|
||||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||||
" visual detail to successfully identify matches."
|
" visual detail to successfully identify matches."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Gambar ini terlalu mudah untuk mencari padanan. TinEye memerlukan tahap "
|
||||||
|
"butiran visual asas untuk mengenal pasti padanan dengan berjaya."
|
||||||
|
|
||||||
#: searx/engines/tineye.py:51
|
#: searx/engines/tineye.py:51
|
||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
|
@ -493,7 +499,7 @@ msgstr "Imej tidak dapat dimuat turun."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:129
|
#: searx/engines/zlibrary.py:129
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr "Penarafan buku"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:130
|
#: searx/engines/zlibrary.py:130
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
|
@ -501,7 +507,7 @@ msgstr "Kualiti fail"
|
||||||
|
|
||||||
#: searx/plugins/calculator.py:12
|
#: searx/plugins/calculator.py:12
|
||||||
msgid "Calculate mathematical expressions via the search bar"
|
msgid "Calculate mathematical expressions via the search bar"
|
||||||
msgstr ""
|
msgstr "Kira ungkapan matematik melalui bar carian"
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:10
|
#: searx/plugins/hash_plugin.py:10
|
||||||
msgid "Converts strings to different hash digests."
|
msgid "Converts strings to different hash digests."
|
||||||
|
@ -509,7 +515,7 @@ msgstr "Ubah rentetan kepada \"hash digest\" yang berbeza."
|
||||||
|
|
||||||
#: searx/plugins/hash_plugin.py:38
|
#: searx/plugins/hash_plugin.py:38
|
||||||
msgid "hash digest"
|
msgid "hash digest"
|
||||||
msgstr ""
|
msgstr "huraian hash"
|
||||||
|
|
||||||
#: searx/plugins/hostname_replace.py:7
|
#: searx/plugins/hostname_replace.py:7
|
||||||
msgid "Hostname replace"
|
msgid "Hostname replace"
|
||||||
|
@ -517,11 +523,13 @@ msgstr "Gantikan nama hos"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:68
|
#: searx/plugins/hostnames.py:68
|
||||||
msgid "Hostnames plugin"
|
msgid "Hostnames plugin"
|
||||||
msgstr ""
|
msgstr "Plugin nama hos"
|
||||||
|
|
||||||
#: searx/plugins/hostnames.py:69
|
#: searx/plugins/hostnames.py:69
|
||||||
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Menulis semula nama hos, buang keputusan atau memberi keutamaan kepada "
|
||||||
|
"mereka berdasarkan nama hos"
|
||||||
|
|
||||||
#: searx/plugins/oa_doi_rewrite.py:12
|
#: searx/plugins/oa_doi_rewrite.py:12
|
||||||
msgid "Open Access DOI rewrite"
|
msgid "Open Access DOI rewrite"
|
||||||
|
@ -549,11 +557,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:28
|
#: searx/plugins/self_info.py:28
|
||||||
msgid "Your IP is: "
|
msgid "Your IP is: "
|
||||||
msgstr ""
|
msgstr "IP anda adalah: "
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:31
|
#: searx/plugins/self_info.py:31
|
||||||
msgid "Your user-agent is: "
|
msgid "Your user-agent is: "
|
||||||
msgstr ""
|
msgstr "Agen pengguna anda adalah: "
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:24
|
#: searx/plugins/tor_check.py:24
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
|
@ -564,6 +572,9 @@ msgid ""
|
||||||
"This plugin checks if the address of the request is a Tor exit-node, and "
|
"This plugin checks if the address of the request is a Tor exit-node, and "
|
||||||
"informs the user if it is; like check.torproject.org, but from SearXNG."
|
"informs the user if it is; like check.torproject.org, but from SearXNG."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Plugin ini memeriksa jika alamat permintaan adalah nod-keluaran Tor, dan "
|
||||||
|
"memberitahu pengguna jika ya; seperti check.torproject.org, tetapi dari "
|
||||||
|
"SearXNG."
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:61
|
#: searx/plugins/tor_check.py:61
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -587,15 +598,15 @@ msgstr "Anda tidak mengguna Tor dan ini adalah alamat IP luaran anda: {ip_addres
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:16
|
#: searx/plugins/tracker_url_remover.py:16
|
||||||
msgid "Tracker URL remover"
|
msgid "Tracker URL remover"
|
||||||
msgstr ""
|
msgstr "Pemadam penjejak URL"
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:17
|
#: searx/plugins/tracker_url_remover.py:17
|
||||||
msgid "Remove trackers arguments from the returned URL"
|
msgid "Remove trackers arguments from the returned URL"
|
||||||
msgstr ""
|
msgstr "Buang hujah penjejak dari URL yang dikembalikan"
|
||||||
|
|
||||||
#: searx/plugins/unit_converter.py:29
|
#: searx/plugins/unit_converter.py:29
|
||||||
msgid "Convert between units"
|
msgid "Convert between units"
|
||||||
msgstr ""
|
msgstr "Tukar antara unit"
|
||||||
|
|
||||||
#: searx/templates/simple/404.html:4
|
#: searx/templates/simple/404.html:4
|
||||||
msgid "Page not found"
|
msgid "Page not found"
|
||||||
|
@ -625,7 +636,7 @@ msgstr "Didukung oleh"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:68
|
#: searx/templates/simple/base.html:68
|
||||||
msgid "a privacy-respecting, open metasearch engine"
|
msgid "a privacy-respecting, open metasearch engine"
|
||||||
msgstr ""
|
msgstr "enjin carian meta terbuka yang menghormati privasi"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:69
|
#: searx/templates/simple/base.html:69
|
||||||
#: searx/templates/simple/result_templates/packages.html:59
|
#: searx/templates/simple/result_templates/packages.html:59
|
||||||
|
@ -634,7 +645,7 @@ msgstr "Kod sumber"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:70
|
#: searx/templates/simple/base.html:70
|
||||||
msgid "Issue tracker"
|
msgid "Issue tracker"
|
||||||
msgstr ""
|
msgstr "Isu penjejak"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
|
#: searx/templates/simple/base.html:71 searx/templates/simple/stats.html:18
|
||||||
msgid "Engine stats"
|
msgid "Engine stats"
|
||||||
|
@ -642,7 +653,7 @@ msgstr "Statistik enjin"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:73
|
#: searx/templates/simple/base.html:73
|
||||||
msgid "Public instances"
|
msgid "Public instances"
|
||||||
msgstr ""
|
msgstr "Kejadian awam"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:76
|
#: searx/templates/simple/base.html:76
|
||||||
msgid "Privacy policy"
|
msgid "Privacy policy"
|
||||||
|
@ -650,11 +661,11 @@ msgstr "Polisi privasi"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:79
|
#: searx/templates/simple/base.html:79
|
||||||
msgid "Contact instance maintainer"
|
msgid "Contact instance maintainer"
|
||||||
msgstr ""
|
msgstr "Hubungi penyelenggara kejadian"
|
||||||
|
|
||||||
#: searx/templates/simple/categories.html:26
|
#: searx/templates/simple/categories.html:26
|
||||||
msgid "Click on the magnifier to perform search"
|
msgid "Click on the magnifier to perform search"
|
||||||
msgstr ""
|
msgstr "Klik pada kanta pembesar untuk melakukan carian"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:35
|
#: searx/templates/simple/macros.html:35
|
||||||
msgid "Length"
|
msgid "Length"
|
||||||
|
@ -673,15 +684,15 @@ msgstr "dicache"
|
||||||
|
|
||||||
#: searx/templates/simple/macros.html:44
|
#: searx/templates/simple/macros.html:44
|
||||||
msgid "proxied"
|
msgid "proxied"
|
||||||
msgstr ""
|
msgstr "diproksi"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:64
|
#: searx/templates/simple/new_issue.html:64
|
||||||
msgid "Start submiting a new issue on GitHub"
|
msgid "Start submiting a new issue on GitHub"
|
||||||
msgstr ""
|
msgstr "Mula menghantar isu baru di Github"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:66
|
#: searx/templates/simple/new_issue.html:66
|
||||||
msgid "Please check for existing bugs about this engine on GitHub"
|
msgid "Please check for existing bugs about this engine on GitHub"
|
||||||
msgstr ""
|
msgstr "Sila semak untuk bug yang sedia ada tentang enjin ini di Github"
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:69
|
#: searx/templates/simple/new_issue.html:69
|
||||||
msgid "I confirm there is no existing bug about the issue I encounter"
|
msgid "I confirm there is no existing bug about the issue I encounter"
|
||||||
|
@ -1636,4 +1647,3 @@ msgstr "sembunyikkan video"
|
||||||
|
|
||||||
#~ msgid "TiB"
|
#~ msgid "TiB"
|
||||||
#~ msgstr "TiB"
|
#~ msgstr "TiB"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -20,21 +20,23 @@
|
||||||
# marcelStangenberger <codeberg@xo.nl>, 2024.
|
# marcelStangenberger <codeberg@xo.nl>, 2024.
|
||||||
# yannickmaes <yannickmaes@users.noreply.translate.codeberg.org>, 2024.
|
# yannickmaes <yannickmaes@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# MVDW-Java <MVDW-Java@users.noreply.translate.codeberg.org>, 2024.
|
# MVDW-Java <MVDW-Java@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# notlmutsaers <notlmutsaers@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-06-12 12:24+0000\n"
|
"PO-Revision-Date: 2024-07-09 15:18+0000\n"
|
||||||
"Last-Translator: MVDW-Java <MVDW-"
|
"Last-Translator: notlmutsaers <notlmutsaers@users.noreply.translate.codeberg."
|
||||||
"Java@users.noreply.translate.codeberg.org>\n"
|
"org>\n"
|
||||||
|
"Language-Team: Dutch <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/nl/>\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"Language-Team: Dutch "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/nl/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -566,11 +568,11 @@ msgstr ""
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:28
|
#: searx/plugins/self_info.py:28
|
||||||
msgid "Your IP is: "
|
msgid "Your IP is: "
|
||||||
msgstr ""
|
msgstr "Jouw IP is: "
|
||||||
|
|
||||||
#: searx/plugins/self_info.py:31
|
#: searx/plugins/self_info.py:31
|
||||||
msgid "Your user-agent is: "
|
msgid "Your user-agent is: "
|
||||||
msgstr ""
|
msgstr "Jouw gebruiker-agent is: "
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:24
|
#: searx/plugins/tor_check.py:24
|
||||||
msgid "Tor check plugin"
|
msgid "Tor check plugin"
|
||||||
|
@ -1966,4 +1968,3 @@ msgstr "verberg video"
|
||||||
|
|
||||||
#~ msgid "TiB"
|
#~ msgid "TiB"
|
||||||
#~ msgstr "TiB"
|
#~ msgstr "TiB"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -17,13 +17,14 @@
|
||||||
# lspepinho <lspepinho@users.noreply.translate.codeberg.org>, 2024.
|
# lspepinho <lspepinho@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# diodio <diodio@users.noreply.translate.codeberg.org>, 2024.
|
# diodio <diodio@users.noreply.translate.codeberg.org>, 2024.
|
||||||
# gvlx <gvlx@users.noreply.translate.codeberg.org>, 2024.
|
# gvlx <gvlx@users.noreply.translate.codeberg.org>, 2024.
|
||||||
|
# ds451 <ds451@users.noreply.translate.codeberg.org>, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
"POT-Creation-Date: 2024-06-17 12:15+0000\n"
|
||||||
"PO-Revision-Date: 2024-06-25 11:18+0000\n"
|
"PO-Revision-Date: 2024-07-11 16:18+0000\n"
|
||||||
"Last-Translator: gvlx <gvlx@users.noreply.translate.codeberg.org>\n"
|
"Last-Translator: ds451 <ds451@users.noreply.translate.codeberg.org>\n"
|
||||||
"Language-Team: Portuguese <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: Portuguese <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/pt/>\n"
|
"searxng/pt/>\n"
|
||||||
"Language: pt\n"
|
"Language: pt\n"
|
||||||
|
@ -31,7 +32,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Weblate 5.5.5\n"
|
"X-Generator: Weblate 5.6.2\n"
|
||||||
"Generated-By: Babel 2.15.0\n"
|
"Generated-By: Babel 2.15.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -640,7 +641,7 @@ msgstr "Produzido por"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:68
|
#: searx/templates/simple/base.html:68
|
||||||
msgid "a privacy-respecting, open metasearch engine"
|
msgid "a privacy-respecting, open metasearch engine"
|
||||||
msgstr "Um motor de multi-pesquisa, que repeita a privacidade"
|
msgstr "Um motor de multi-pesquisa, que respeita a privacidade"
|
||||||
|
|
||||||
#: searx/templates/simple/base.html:69
|
#: searx/templates/simple/base.html:69
|
||||||
#: searx/templates/simple/result_templates/packages.html:59
|
#: searx/templates/simple/result_templates/packages.html:59
|
||||||
|
|
|
@ -61,7 +61,7 @@ from searx.botdetection import link_token
|
||||||
from searx.data import ENGINE_DESCRIPTIONS
|
from searx.data import ENGINE_DESCRIPTIONS
|
||||||
from searx.results import Timing
|
from searx.results import Timing
|
||||||
from searx.settings_defaults import OUTPUT_FORMATS
|
from searx.settings_defaults import OUTPUT_FORMATS
|
||||||
from searx.settings_loader import get_default_settings_path
|
from searx.settings_loader import DEFAULT_SETTINGS_FILE
|
||||||
from searx.exceptions import SearxParameterException
|
from searx.exceptions import SearxParameterException
|
||||||
from searx.engines import (
|
from searx.engines import (
|
||||||
DEFAULT_CATEGORY,
|
DEFAULT_CATEGORY,
|
||||||
|
@ -1347,7 +1347,7 @@ def run():
|
||||||
port=settings['server']['port'],
|
port=settings['server']['port'],
|
||||||
host=settings['server']['bind_address'],
|
host=settings['server']['bind_address'],
|
||||||
threaded=True,
|
threaded=True,
|
||||||
extra_files=[get_default_settings_path()],
|
extra_files=[DEFAULT_SETTINGS_FILE],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
Test:
|
Test:
|
||||||
"**********"
|
"**********"
|
||||||
|
xxx
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
# pylint: disable=missing-module-docstring
|
# pylint: disable=missing-module-docstring
|
||||||
|
|
||||||
from searx import settings
|
|
||||||
from searx.engines import load_engines
|
from searx.engines import load_engines
|
||||||
from searx.query import RawTextQuery
|
from searx.query import RawTextQuery
|
||||||
from tests import SearxTestCase
|
from tests import SearxTestCase
|
||||||
|
@ -234,9 +233,14 @@ class TestBang(SearxTestCase): # pylint:disable=missing-class-docstring
|
||||||
SPECIFIC_BANGS = ['!dummy_engine', '!du', '!general']
|
SPECIFIC_BANGS = ['!dummy_engine', '!du', '!general']
|
||||||
THE_QUERY = 'the query'
|
THE_QUERY = 'the query'
|
||||||
|
|
||||||
def test_bang(self):
|
def setUp(self):
|
||||||
load_engines(TEST_ENGINES)
|
load_engines(TEST_ENGINES)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
load_engines([])
|
||||||
|
|
||||||
|
def test_bang(self):
|
||||||
|
|
||||||
for bang in TestBang.SPECIFIC_BANGS:
|
for bang in TestBang.SPECIFIC_BANGS:
|
||||||
with self.subTest(msg="Check bang", bang=bang):
|
with self.subTest(msg="Check bang", bang=bang):
|
||||||
query_text = TestBang.THE_QUERY + ' ' + bang
|
query_text = TestBang.THE_QUERY + ' ' + bang
|
||||||
|
@ -247,7 +251,6 @@ class TestBang(SearxTestCase): # pylint:disable=missing-class-docstring
|
||||||
self.assertEqual(query.user_query_parts, TestBang.THE_QUERY.split(' '))
|
self.assertEqual(query.user_query_parts, TestBang.THE_QUERY.split(' '))
|
||||||
|
|
||||||
def test_specific(self):
|
def test_specific(self):
|
||||||
load_engines(TEST_ENGINES)
|
|
||||||
for bang in TestBang.SPECIFIC_BANGS:
|
for bang in TestBang.SPECIFIC_BANGS:
|
||||||
with self.subTest(msg="Check bang is specific", bang=bang):
|
with self.subTest(msg="Check bang is specific", bang=bang):
|
||||||
query_text = TestBang.THE_QUERY + ' ' + bang
|
query_text = TestBang.THE_QUERY + ' ' + bang
|
||||||
|
@ -255,12 +258,10 @@ class TestBang(SearxTestCase): # pylint:disable=missing-class-docstring
|
||||||
self.assertTrue(query.specific)
|
self.assertTrue(query.specific)
|
||||||
|
|
||||||
def test_bang_not_found(self):
|
def test_bang_not_found(self):
|
||||||
load_engines(TEST_ENGINES)
|
|
||||||
query = RawTextQuery('the query !bang_not_found', [])
|
query = RawTextQuery('the query !bang_not_found', [])
|
||||||
self.assertEqual(query.getFullQuery(), 'the query !bang_not_found')
|
self.assertEqual(query.getFullQuery(), 'the query !bang_not_found')
|
||||||
|
|
||||||
def test_bang_autocomplete(self):
|
def test_bang_autocomplete(self):
|
||||||
load_engines(TEST_ENGINES)
|
|
||||||
query = RawTextQuery('the query !dum', [])
|
query = RawTextQuery('the query !dum', [])
|
||||||
self.assertEqual(query.autocomplete_list, ['!dummy_engine'])
|
self.assertEqual(query.autocomplete_list, ['!dummy_engine'])
|
||||||
|
|
||||||
|
@ -269,7 +270,6 @@ class TestBang(SearxTestCase): # pylint:disable=missing-class-docstring
|
||||||
self.assertEqual(query.getQuery(), '!dum the query')
|
self.assertEqual(query.getQuery(), '!dum the query')
|
||||||
|
|
||||||
def test_bang_autocomplete_empty(self):
|
def test_bang_autocomplete_empty(self):
|
||||||
load_engines(settings['engines'])
|
|
||||||
query = RawTextQuery('the query !', [])
|
query = RawTextQuery('the query !', [])
|
||||||
self.assertEqual(query.autocomplete_list, ['!images', '!wikipedia', '!osm'])
|
self.assertEqual(query.autocomplete_list, ['!images', '!wikipedia', '!osm'])
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
# pylint: disable=missing-module-docstring
|
# pylint: disable=missing-module-docstring
|
||||||
|
|
||||||
from os.path import dirname, join, abspath
|
from pathlib import Path
|
||||||
|
|
||||||
|
import os
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
from searx.exceptions import SearxSettingsException
|
from searx.exceptions import SearxSettingsException
|
||||||
|
@ -9,7 +11,8 @@ from searx import settings_loader
|
||||||
from tests import SearxTestCase
|
from tests import SearxTestCase
|
||||||
|
|
||||||
|
|
||||||
test_dir = abspath(dirname(__file__))
|
def _settings(f_name):
|
||||||
|
return str(Path(__file__).parent.absolute() / "settings" / f_name)
|
||||||
|
|
||||||
|
|
||||||
class TestLoad(SearxTestCase): # pylint: disable=missing-class-docstring
|
class TestLoad(SearxTestCase): # pylint: disable=missing-class-docstring
|
||||||
|
@ -18,16 +21,9 @@ class TestLoad(SearxTestCase): # pylint: disable=missing-class-docstring
|
||||||
settings_loader.load_yaml('/dev/zero')
|
settings_loader.load_yaml('/dev/zero')
|
||||||
|
|
||||||
with self.assertRaises(SearxSettingsException):
|
with self.assertRaises(SearxSettingsException):
|
||||||
settings_loader.load_yaml(join(test_dir, '/settings/syntaxerror_settings.yml'))
|
settings_loader.load_yaml(_settings("syntaxerror_settings.yml"))
|
||||||
|
|
||||||
with self.assertRaises(SearxSettingsException):
|
self.assertEqual(settings_loader.load_yaml(_settings("empty_settings.yml")), {})
|
||||||
settings_loader.load_yaml(join(test_dir, '/settings/empty_settings.yml'))
|
|
||||||
|
|
||||||
def test_existing_filename_or_none(self):
|
|
||||||
self.assertIsNone(settings_loader.existing_filename_or_none('/dev/zero'))
|
|
||||||
|
|
||||||
bad_settings_path = join(test_dir, 'settings/syntaxerror_settings.yml')
|
|
||||||
self.assertEqual(settings_loader.existing_filename_or_none(bad_settings_path), bad_settings_path)
|
|
||||||
|
|
||||||
|
|
||||||
class TestDefaultSettings(SearxTestCase): # pylint: disable=missing-class-docstring
|
class TestDefaultSettings(SearxTestCase): # pylint: disable=missing-class-docstring
|
||||||
|
@ -55,24 +51,22 @@ class TestUserSettings(SearxTestCase): # pylint: disable=missing-class-docstrin
|
||||||
self.assertFalse(settings_loader.is_use_default_settings({'use_default_settings': 0}))
|
self.assertFalse(settings_loader.is_use_default_settings({'use_default_settings': 0}))
|
||||||
|
|
||||||
def test_user_settings_not_found(self):
|
def test_user_settings_not_found(self):
|
||||||
with patch.dict(settings_loader.environ, {'SEARXNG_SETTINGS_PATH': '/dev/null'}):
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': _settings("not_exists.yml")}):
|
||||||
settings, msg = settings_loader.load_settings()
|
with self.assertRaises(EnvironmentError):
|
||||||
self.assertTrue(msg.startswith('load the default settings from'))
|
_s, _m = settings_loader.load_settings()
|
||||||
self.assertEqual(settings['server']['secret_key'], "ultrasecretkey")
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': "/folder/not/exists"}):
|
||||||
|
with self.assertRaises(EnvironmentError):
|
||||||
|
_s, _m = settings_loader.load_settings()
|
||||||
|
|
||||||
def test_user_settings(self):
|
def test_user_settings(self):
|
||||||
with patch.dict(
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': _settings("user_settings_simple.yml")}):
|
||||||
settings_loader.environ, {'SEARXNG_SETTINGS_PATH': join(test_dir, 'settings/user_settings_simple.yml')}
|
|
||||||
):
|
|
||||||
settings, msg = settings_loader.load_settings()
|
settings, msg = settings_loader.load_settings()
|
||||||
self.assertTrue(msg.startswith('merge the default settings'))
|
self.assertTrue(msg.startswith('merge the default settings'))
|
||||||
self.assertEqual(settings['server']['secret_key'], "user_secret_key")
|
self.assertEqual(settings['server']['secret_key'], "user_secret_key")
|
||||||
self.assertEqual(settings['server']['default_http_headers']['Custom-Header'], "Custom-Value")
|
self.assertEqual(settings['server']['default_http_headers']['Custom-Header'], "Custom-Value")
|
||||||
|
|
||||||
def test_user_settings_remove(self):
|
def test_user_settings_remove(self):
|
||||||
with patch.dict(
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': _settings("user_settings_remove.yml")}):
|
||||||
settings_loader.environ, {'SEARXNG_SETTINGS_PATH': join(test_dir, 'settings/user_settings_remove.yml')}
|
|
||||||
):
|
|
||||||
settings, msg = settings_loader.load_settings()
|
settings, msg = settings_loader.load_settings()
|
||||||
self.assertTrue(msg.startswith('merge the default settings'))
|
self.assertTrue(msg.startswith('merge the default settings'))
|
||||||
self.assertEqual(settings['server']['secret_key'], "user_secret_key")
|
self.assertEqual(settings['server']['secret_key'], "user_secret_key")
|
||||||
|
@ -83,9 +77,7 @@ class TestUserSettings(SearxTestCase): # pylint: disable=missing-class-docstrin
|
||||||
self.assertIn('wikipedia', engine_names)
|
self.assertIn('wikipedia', engine_names)
|
||||||
|
|
||||||
def test_user_settings_remove2(self):
|
def test_user_settings_remove2(self):
|
||||||
with patch.dict(
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': _settings("user_settings_remove2.yml")}):
|
||||||
settings_loader.environ, {'SEARXNG_SETTINGS_PATH': join(test_dir, 'settings/user_settings_remove2.yml')}
|
|
||||||
):
|
|
||||||
settings, msg = settings_loader.load_settings()
|
settings, msg = settings_loader.load_settings()
|
||||||
self.assertTrue(msg.startswith('merge the default settings'))
|
self.assertTrue(msg.startswith('merge the default settings'))
|
||||||
self.assertEqual(settings['server']['secret_key'], "user_secret_key")
|
self.assertEqual(settings['server']['secret_key'], "user_secret_key")
|
||||||
|
@ -101,9 +93,7 @@ class TestUserSettings(SearxTestCase): # pylint: disable=missing-class-docstrin
|
||||||
self.assertEqual(newengine[0]['engine'], 'dummy')
|
self.assertEqual(newengine[0]['engine'], 'dummy')
|
||||||
|
|
||||||
def test_user_settings_keep_only(self):
|
def test_user_settings_keep_only(self):
|
||||||
with patch.dict(
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': _settings("user_settings_keep_only.yml")}):
|
||||||
settings_loader.environ, {'SEARXNG_SETTINGS_PATH': join(test_dir, 'settings/user_settings_keep_only.yml')}
|
|
||||||
):
|
|
||||||
settings, msg = settings_loader.load_settings()
|
settings, msg = settings_loader.load_settings()
|
||||||
self.assertTrue(msg.startswith('merge the default settings'))
|
self.assertTrue(msg.startswith('merge the default settings'))
|
||||||
engine_names = [engine['name'] for engine in settings['engines']]
|
engine_names = [engine['name'] for engine in settings['engines']]
|
||||||
|
@ -112,9 +102,7 @@ class TestUserSettings(SearxTestCase): # pylint: disable=missing-class-docstrin
|
||||||
self.assertEqual(len(settings['engines'][2]), 1)
|
self.assertEqual(len(settings['engines'][2]), 1)
|
||||||
|
|
||||||
def test_custom_settings(self):
|
def test_custom_settings(self):
|
||||||
with patch.dict(
|
with patch.dict(os.environ, {'SEARXNG_SETTINGS_PATH': _settings("user_settings.yml")}):
|
||||||
settings_loader.environ, {'SEARXNG_SETTINGS_PATH': join(test_dir, 'settings/user_settings.yml')}
|
|
||||||
):
|
|
||||||
settings, msg = settings_loader.load_settings()
|
settings, msg = settings_loader.load_settings()
|
||||||
self.assertTrue(msg.startswith('load the user settings from'))
|
self.assertTrue(msg.startswith('load the user settings from'))
|
||||||
self.assertEqual(settings['server']['port'], 9000)
|
self.assertEqual(settings['server']['port'], 9000)
|
||||||
|
|
Loading…
Reference in a new issue