Merge upstream update

master
nexryai 1 month ago
commit f4732e2c82
  1. 28
      .github/workflows/security.yml
  2. 10
      docs/admin/engines/settings.rst
  3. 4
      requirements-dev.txt
  4. 1303
      searx/data/ahmia_blacklist.txt
  5. 335
      searx/data/currencies.json
  6. 526
      searx/data/engine_descriptions.json
  7. 16
      searx/data/engines_languages.json
  8. 7
      searx/data/useragents.json
  9. 1
      searx/data/wikidata_units.json
  10. 62
      searx/engines/deepl.py
  11. 18
      searx/engines/xpath.py
  12. 13
      searx/settings.yml
  13. 32
      searx/settings_defaults.py
  14. 35
      searx/settings_loader.py
  15. 2
      searx/templates/simple/macros.html
  16. 8
      searx/templates/simple/preferences.html
  17. 5
      searx/templates/simple/stats.html
  18. BIN
      searx/translations/ar/LC_MESSAGES/messages.mo
  19. 84
      searx/translations/ar/LC_MESSAGES/messages.po
  20. BIN
      searx/translations/gl/LC_MESSAGES/messages.mo
  21. 30
      searx/translations/gl/LC_MESSAGES/messages.po
  22. BIN
      searx/translations/hr/LC_MESSAGES/messages.mo
  23. 135
      searx/translations/hr/LC_MESSAGES/messages.po
  24. BIN
      searx/translations/nl/LC_MESSAGES/messages.mo
  25. 7
      searx/translations/nl/LC_MESSAGES/messages.po
  26. BIN
      searx/translations/sk/LC_MESSAGES/messages.mo
  27. 16
      searx/translations/sk/LC_MESSAGES/messages.po
  28. BIN
      searx/translations/sr/LC_MESSAGES/messages.mo
  29. 156
      searx/translations/sr/LC_MESSAGES/messages.po
  30. BIN
      searx/translations/sv/LC_MESSAGES/messages.mo
  31. 4
      searx/translations/sv/LC_MESSAGES/messages.po
  32. BIN
      searx/translations/uk/LC_MESSAGES/messages.mo
  33. 63
      searx/translations/uk/LC_MESSAGES/messages.po
  34. 18
      searx/webapp.py
  35. 6
      tests/unit/test_settings_loader.py

@ -0,0 +1,28 @@
name: "Security checks"
on:
schedule:
- cron: "42 05 * * *"
workflow_dispatch:
jobs:
dockers:
name: Trivy ${{ matrix.image }}
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: 'searxng/searxng:latest'
ignore-unfixed: false
vuln-type: 'os,library'
severity: 'UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL'
format: 'sarif'
output: 'trivy-results.sarif'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results.sarif'

@ -240,6 +240,7 @@ Global Settings
query_in_title: false
infinite_scroll: false
center_alignment: false
cache_url: https://web.archive.org/web/
default_theme: simple
theme_args:
simple_style: auto
@ -267,6 +268,15 @@ Global Settings
side of the screen. This setting only affects the *desktop layout*
(:origin:`min-width: @tablet <searx/static/themes/simple/src/less/definitions.less>`)
.. cache_url:
``cache_url`` : ``https://web.archive.org/web/``
URL prefix of the internet archive or cache, don't forgett trailing slash (if
needed). The default is https://web.archive.org/web/ alternatives are:
- https://webcache.googleusercontent.com/search?q=cache:
- https://archive.today/
``default_theme`` :
Name of the theme you want to use by default on your SearXNG instance.

@ -1,8 +1,8 @@
mock==4.0.3
nose2[coverage_plugin]==0.12.0
cov-core==1.15.0
black==22.6.0
pylint==2.14.5
black==22.8.0
pylint==2.15.0
splinter==0.18.1
selenium==4.4.3
twine==4.0.1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -1938,8 +1938,8 @@
"name": "Bahasa Banjar"
},
"blk": {
"english_name": "\u1015\u1021\u102d\u102f\u101d\u103a\u108f\u1018\u102c\u108f\u101e\u102c\u108f",
"name": "Pa'O"
"english_name": "Pa'O",
"name": "\u1015\u1021\u102d\u102f\u101d\u103a\u108f\u1018\u102c\u108f\u101e\u102c\u108f"
},
"bm": {
"english_name": "Bambara",
@ -2661,6 +2661,10 @@
"english_name": "Picard",
"name": "Picard"
},
"pcm": {
"english_name": "Nigerian Pidgin",
"name": "Naij\u00e1"
},
"pdc": {
"english_name": "Pennsylvania German",
"name": "Deitsch"
@ -3208,8 +3212,8 @@
"name": "Bahasa Banjar"
},
"blk": {
"english_name": "\u1015\u1021\u102d\u102f\u101d\u103a\u108f\u1018\u102c\u108f\u101e\u102c\u108f",
"name": "Pa'O"
"english_name": "Pa'O",
"name": "\u1015\u1021\u102d\u102f\u101d\u103a\u108f\u1018\u102c\u108f\u101e\u102c\u108f"
},
"bm": {
"english_name": "Bambara",
@ -3931,6 +3935,10 @@
"english_name": "Picard",
"name": "Picard"
},
"pcm": {
"english_name": "Nigerian Pidgin",
"name": "Naij\u00e1"
},
"pdc": {
"english_name": "Pennsylvania German",
"name": "Deitsch"

@ -1,8 +1,9 @@
{
"versions": [
"103.0",
"102.0.1",
"102.0"
"104.0",
"103.0.2",
"103.0.1",
"103.0"
],
"os": [
"Windows NT 10.0; Win64; x64",

@ -255,6 +255,7 @@
"Q1322380": "Ts",
"Q1323615": "oz t",
"Q132643": "kr",
"Q133011": "Ls",
"Q13400897": "g",
"Q13479685": "mm H2O",
"Q1351253": "Eib",

@ -0,0 +1,62 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# lint: pylint
"""Deepl translation engine"""
from json import loads
about = {
"website": 'https://deepl.com',
"wikidata_id": 'Q43968444',
"official_api_documentation": 'https://www.deepl.com/docs-api',
"use_official_api": True,
"require_api_key": True,
"results": 'JSON',
}
engine_type = 'online_dictionary'
categories = ['general']
url = 'https://api-free.deepl.com/v2/translate'
api_key = None
def request(_query, params):
'''pre-request callback
params<dict>:
- ``method`` : POST/GET
- ``headers``: {}
- ``data``: {} # if method == POST
- ``url``: ''
- ``category``: 'search category'
- ``pageno``: 1 # number of the requested page
'''
params['url'] = url
params['method'] = 'POST'
params['data'] = {'auth_key': api_key, 'text': params['query'], 'target_lang': params['to_lang'][1]}
return params
def response(resp):
results = []
result = loads(resp.text)
translations = result['translations']
infobox = "<dl>"
for translation in translations:
infobox += f"<dd>{translation['text']}</dd>"
infobox += "</dl>"
results.append(
{
'infobox': 'Deepl',
'content': infobox,
}
)
return results

@ -22,6 +22,7 @@ from urllib.parse import urlencode
from lxml import html
from searx.utils import extract_text, extract_url, eval_xpath, eval_xpath_list
from searx.network import raise_for_httperror
search_url = None
"""
@ -61,6 +62,14 @@ lang_all = 'en'
selected.
'''
no_result_for_http_status = []
'''Return empty result for these HTTP status codes instead of throwing an error.
.. code:: yaml
no_result_for_http_status: []
'''
soft_max_redirects = 0
'''Maximum redirects, soft limit. Record an error but don't stop the engine'''
@ -177,11 +186,18 @@ def request(query, params):
params['url'] = search_url.format(**fargs)
params['soft_max_redirects'] = soft_max_redirects
params['raise_for_httperror'] = False
return params
def response(resp):
def response(resp): # pylint: disable=too-many-branches
'''Scrap *results* from the response (see :ref:`engine results`).'''
if no_result_for_http_status and resp.status_code in no_result_for_http_status:
return []
raise_for_httperror(resp)
results = []
dom = html.fromstring(resp.text)
is_onion = 'onions' in categories

@ -90,6 +90,8 @@ ui:
default_theme: simple
# center the results ?
center_alignment: false
# URL prefix of the internet archive, don't forgett trailing slash (if needed).
# cache_url: "https://webcache.googleusercontent.com/search?q=cache:"
# Default interface locale - leave blank to detect from browser information or
# use codes from the 'locales' config section
default_locale: ""
@ -116,6 +118,7 @@ ui:
#
# result_proxy:
# url: http://127.0.0.1:3000/
# # the key is a base64 encoded string, the YAML !!binary prefix is optional
# key: !!binary "your_morty_proxy_key"
# # [true|false] enable the "proxy" button next to each result
# proxify_results: true
@ -3740,6 +3743,15 @@ engines:
engine: seznam
disabled: true
# - name: deepl
# engine: deepl
# shortcut: dpl
# # You can use the engine using the official stable API, but you need an API key
# # See: https://www.deepl.com/pro-api?cta=header-pro-api
# api_key: '' # required!
# timeout: 5.0
# disabled: true
- name: mojeek
shortcut: mjk
engine: xpath
@ -3855,6 +3867,7 @@ engines:
url_xpath: //div[@class="upper-synonyms"]/a/@href
content_xpath: //div[@class="synonyms-list-group"]
title_xpath: //div[@class="upper-synonyms"]/a
no_result_for_http_status: [404]
about:
website: https://www.woxikon.de/
wikidata_id: # No Wikidata ID

@ -9,6 +9,7 @@ import numbers
import errno
import os
import logging
from base64 import b64decode
from os.path import dirname, abspath
from searx.languages import language_codes as languages
@ -41,16 +42,6 @@ STR_TO_BOOL = {
}
_UNDEFINED = object()
# compatibility
SEARX_ENVIRON_VARIABLES = {
'SEARX_DISABLE_ETC_SETTINGS': 'SEARXNG_DISABLE_ETC_SETTINGS',
'SEARX_SETTINGS_PATH': 'SEARXNG_SETTINGS_PATH',
'SEARX_DEBUG': 'SEARXNG_DEBUG',
'SEARX_PORT': 'SEARXNG_PORT',
'SEARX_BIND_ADDRESS': 'SEARXNG_BIND_ADDRESS',
'SEARX_SECRET': 'SEARXNG_SECRET',
}
class SettingsValue:
"""Check and update a setting value"""
@ -117,6 +108,15 @@ class SettingsDirectoryValue(SettingsValue):
return super().__call__(value)
class SettingsBytesValue(SettingsValue):
"""str are base64 decoded"""
def __call__(self, value: typing.Any) -> typing.Any:
if isinstance(value, str):
value = b64decode(value)
return super().__call__(value)
def apply_schema(settings, schema, path_list):
error = False
for key, value in schema.items():
@ -190,6 +190,7 @@ SCHEMA = {
'advanced_search': SettingsValue(bool, False),
'query_in_title': SettingsValue(bool, False),
'infinite_scroll': SettingsValue(bool, False),
'cache_url': SettingsValue(str, 'https://web.archive.org/web/'),
},
'preferences': {
'lock': SettingsValue(list, []),
@ -215,6 +216,11 @@ SCHEMA = {
'extra_proxy_timeout': SettingsValue(int, 0),
'networks': {},
},
'result_proxy': {
'url': SettingsValue((None, str), None),
'key': SettingsBytesValue((None, bytes), None),
'proxify_results': SettingsValue(bool, False),
},
'plugins': SettingsValue(list, []),
'enabled_plugins': SettingsValue((None, list), None),
'checker': {
@ -227,11 +233,5 @@ SCHEMA = {
def settings_set_defaults(settings):
# compatibility with searx variables
for searx, searxng in SEARX_ENVIRON_VARIABLES.items():
if searx in os.environ and searxng not in os.environ:
os.environ[searxng] = os.environ[searx]
logger.warning('%s uses value from %s', searxng, searx)
apply_schema(settings, SCHEMA, [])
return settings

@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
from typing import Optional
from os import environ
from os.path import dirname, join, abspath, isfile
from collections.abc import Mapping
@ -13,7 +14,7 @@ from searx.exceptions import SearxSettingsException
searx_dir = abspath(dirname(__file__))
def check_settings_yml(file_name):
def existing_filename_or_none(file_name: str) -> Optional[str]:
if isfile(file_name):
return file_name
return None
@ -30,29 +31,29 @@ def load_yaml(file_name):
def get_default_settings_path():
return check_settings_yml(join(searx_dir, 'settings.yml'))
return existing_filename_or_none(join(searx_dir, 'settings.yml'))
def get_user_settings_path():
# find location of 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
# if the environment variable is defined, this is the last check
if 'SEARXNG_SETTINGS_PATH' in environ:
# if possible set path to settings using the
# enviroment variable SEARXNG_SETTINGS_PATH
return check_settings_yml(environ['SEARXNG_SETTINGS_PATH'])
return existing_filename_or_none(environ['SEARXNG_SETTINGS_PATH'])
# if SEARXNG_DISABLE_ETC_SETTINGS don't look any futher
if environ.get('SEARXNG_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true'):
return None
# if not, get it from searx code base or last solution from /etc/searxng
try:
return check_settings_yml('/etc/searxng/settings.yml')
except SearxSettingsException as e:
# fall back to searx settings
try:
return check_settings_yml('/etc/searx/settings.yml')
except SearxSettingsException:
# if none are found, raise the exception about SearXNG
raise e # pylint: disable=raise-missing-from
# check /etc/searxng/settings.yml
# (continue with other locations if the file is not found)
return existing_filename_or_none('/etc/searxng/settings.yml')
def update_dict(default_dict, user_dict):

@ -42,7 +42,7 @@
{%- macro result_sub_footer(result, proxify) -%}
<div class="engines">
{% for engine in result.engines %}<span>{{ engine }}</span>{% endfor %}
{{ result_link("https://web.archive.org/web/" + result.url, icon_small('ellipsis-vertical-outline') + _('cached'), "cache_link") }}&lrm; {% if proxify and proxify_results %} {{ result_link(proxify(result.url), icon('link') + _('proxied'), "proxyfied_link") }} {% endif %}
{{ result_link(cache_url + result.url, icon_small('ellipsis-vertical-outline') + _('cached'), "cache_link") }}&lrm; {% if proxify and proxify_results %} {{ result_link(proxify(result.url), icon('link') + _('proxied'), "proxyfied_link") }} {% endif %}
</div>{{- '' -}}
<div class="break"></div>{{- '' -}}
{%- endmacro -%}

@ -310,9 +310,9 @@
<th>{{ _("Supports selected language") }}</th>{{- "" -}}
<th>{{ _("SafeSearch") }}</th>{{- "" -}}
<th>{{ _("Time range") }}</th>{{- "" -}}
<th>{{ _("Response time") }}</th>{{- "" -}}
{%- if enable_metrics %}<th>{{ _("Response time") }}</th>{% endif -%}
<th>{{ _("Max time") }}</th>{{- "" -}}
<th>{{ _("Reliability") }}</th>{{- "" -}}
{%- if enable_metrics %}<th>{{ _("Reliability") }}</th>{% endif -%}
</tr>
{% for group, engines in engines_by_category[categ] | group_engines_in_tab %}
{% if loop.length > 1 %}
@ -336,9 +336,9 @@
<td>{{ checkbox(None, supports[search_engine.name]['supports_selected_language'], true) }}</td>{{- "" -}}
<td>{{ checkbox(None, supports[search_engine.name]['safesearch'], true) }}</td>{{- "" -}}
<td>{{ checkbox(None, supports[search_engine.name]['time_range_support'], true) }}</td>{{- "" -}}
{{- engine_time(search_engine.name) -}}
{%- if enable_metrics %}{{- engine_time(search_engine.name) -}}{% endif -%}
<td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>{{- "" -}}
{{ engine_reliability(search_engine.name) -}}
{%- if enable_metrics %}{{ engine_reliability(search_engine.name) -}}{% endif -%}
</tr>
{% endif %}
{% endfor %}

@ -33,10 +33,7 @@
<td class="engine-name"><a href="{{ url_for('stats', engine=engine_stat.name|e) }}">{{ engine_stat.name }}</a></td>
<td class="engine-score">
{% if engine_stat.score %}
<span aria-labelledby="{{engine_stat.name}}_score" >{{ engine_stat.score|round(1) }}</span>
<div class="engine-tooltip" role="tooltip" id="{{engine_stat.name}}_score">{{- "" -}}
<p>{{ _('Scores per result') }}: {{ engine_stat.score_per_result | round(3) }}</p>
</div>
<span>{{ engine_stat.score_per_result|round(1) }}</span>
{% endif %}
</td>
<td class="engine-result-count">

@ -10,19 +10,20 @@
# ken kailer <kenkailer@yahoo.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
"PO-Revision-Date: 2022-07-19 05:45+0000\n"
"PO-Revision-Date: 2022-09-02 07:25+0000\n"
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
"Language-Team: Arabic <https://weblate.bubu1.eu/projects/searxng/searxng/ar/>"
"\n"
"Language: ar\n"
"Language-Team: Arabic "
"<https://weblate.bubu1.eu/projects/searxng/searxng/ar/>\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 4.13.1\n"
"Generated-By: Babel 2.10.3\n"
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
@ -260,7 +261,7 @@ msgstr "هذا الإدخال تم استبداله بـ"
#: searx/engines/pubmed.py:78
msgid "No abstract is available for this publication."
msgstr "لا يوجد ملخص لهذا المنشور"
msgstr "لا يوجد ملخص متاح لهذا المنشور."
#: searx/engines/qwant.py:214
msgid "Channel"
@ -272,20 +273,24 @@ msgid ""
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
" WebP."
msgstr ""
"تعذر قراءة عنوان url للصورة. قد يكون هذا بسبب تنسيق ملف غير مدعوم. تدعم "
"TinEye فقط الصور بتنسيق JPEG أو PNG أو GIF أو BMP أو TIFF أو WebP."
#: searx/engines/tineye.py:46
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
"الصورة أبسط من أن تجد مطابقات. يتطلب TinEye مستوى أساسيًا من التفاصيل "
"المرئية لتحديد التطابقات بنجاح."
#: searx/engines/tineye.py:52
msgid "The image could not be downloaded."
msgstr ""
msgstr "لا يمكن تنزيل الصورة."
#: searx/plugins/hash_plugin.py:24
msgid "Converts strings to different hash digests."
msgstr "يحول السلسلة إلى ملخص التجزئة"
msgstr "يحول السلسلة إلى ملخص التجزئة."
#: searx/plugins/hash_plugin.py:52
msgid "hash digest"
@ -332,32 +337,36 @@ msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
msgstr ""
"يعرض IP إذا كان الاستعلام \"ip\" و وكيل المستخدم الخاص بك إذا كان "
"الاستعلام يحتوي على\"user agent\""
"يعرض IP إذا كان الاستعلام \"ip\" و وكيل المستخدم الخاص بك إذا كان الاستعلام "
"يحتوي على\"user agent\"."
#: searx/plugins/tor_check.py:25
msgid "Tor check plugin"
msgstr ""
msgstr "فحص المكون الإضافي ل Tor"
#: searx/plugins/tor_check.py:28
msgid ""
"This plugin checks if the address of the request is a TOR exit node, and "
"informs the user if it is, like check.torproject.org but from searxng."
msgstr ""
"يتحقق هذا المكون الإضافي مما إذا كان عنوان الطلب هو عقدة خروج TOR ، ويبلغ "
"المستخدم إذا كان كذلك ، مثل check.torproject.org ولكن من searxng."
#: searx/plugins/tor_check.py:62
msgid ""
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
"unreachable."
msgstr ""
"لا يمكن الوصول إلى قائمة عقدة الخروج TOR (https://check.torproject.org/exit-"
"addresses)."
#: searx/plugins/tor_check.py:78
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
msgstr ""
msgstr "انك تستخدم شبكة TOR. ان IP Adress الخاص بك يبدو انه: {ip_address}."
#: searx/plugins/tor_check.py:84
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
msgstr ""
msgstr "انك لا تستخدم شبكة TOR. ان IP Adress الخاص بك يبدو انه: {ip_address}."
#: searx/plugins/tracker_url_remover.py:29
msgid "Tracker URL remover"
@ -759,7 +768,7 @@ msgstr "إمكانية الإشتغال"
#: searx/templates/simple/preferences.html:353
msgid "Special Queries"
msgstr ""
msgstr "استفسارات خاصة"
#: searx/templates/simple/preferences.html:359
msgid "Keywords"
@ -779,11 +788,11 @@ msgstr "أمثلة"
#: searx/templates/simple/preferences.html:365
msgid "This is the list of SearXNG's instant answering modules."
msgstr ""
msgstr "هذه قائمة وحدات الرد الفوري في SearXNG."
#: searx/templates/simple/preferences.html:376
msgid "This is the list of plugins."
msgstr ""
msgstr "هذه قائمة المكونات الإضافية."
#: searx/templates/simple/preferences.html:393
msgid "Cookies"
@ -794,10 +803,12 @@ msgid ""
"This is the list of cookies and their values SearXNG is storing on your "
"computer."
msgstr ""
"هذه قائمة ملفات تعريف الارتباط وقيمها التي يخزنها SearXNG على جهاز الكمبيوتر "
"الخاص بك."
#: searx/templates/simple/preferences.html:396
msgid "With that list, you can assess SearXNG transparency."
msgstr ""
msgstr "باستخدام هذه القائمة ، يمكنك تقييم شفافية SearXNG."
#: searx/templates/simple/preferences.html:401
msgid "Cookie name"
@ -809,35 +820,43 @@ msgstr "القيمة"
#: searx/templates/simple/preferences.html:414
msgid "Search URL of the currently saved preferences"
msgstr ""
msgstr "ابحث عن عنوان URL للتفضيلات المحفوظة حاليًا"
#: searx/templates/simple/preferences.html:418
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
"ملاحظة: يمكن أن يؤدي تحديد إعدادات مخصصة في عنوان URL للبحث إلى تقليل "
"الخصوصية عن طريق تسريب البيانات إلى مواقع النتائج التي تم النقر عليها."
#: searx/templates/simple/preferences.html:419
msgid "URL to restore your preferences in another browser"
msgstr ""
msgstr "URL لاستعادة تفضيلاتك في متصفح آخر"
#: searx/templates/simple/preferences.html:423
msgid ""
"Specifying custom settings in the preferences URL can be used to sync "
"preferences across devices."
msgstr ""
"يمكن استخدام تحديد الإعدادات المخصصة في تفضيلات URL لمزامنة التفضيلات عبر "
"الأجهزة."
#: searx/templates/simple/preferences.html:428
msgid ""
"These settings are stored in your cookies, this allows us not to store "
"this data about you."
msgstr ""
"يتم تخزين هذه الإعدادات في ملفات تعريف الارتباط الخاصة بك ، وهذا يسمح لنا "
"بعدم تخزين هذه البيانات عنك."
#: searx/templates/simple/preferences.html:430
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
"تخدم ملفات تعريف الارتباط هذه راحتك وحدك ، فنحن لا نستخدم ملفات تعريف "
"الارتباط هذه لتتبعك."
#: searx/templates/simple/preferences.html:433
msgid "Save"
@ -913,15 +932,15 @@ msgstr "مسح"
#: searx/templates/simple/search.html:11
#: searx/templates/simple/simple_search.html:7
msgid "search"
msgstr "بحت"
msgstr "بحث"
#: searx/templates/simple/stats.html:21
msgid "There is currently no data available. "
msgstr "لم يتم العثور على أية بيانات بعدُ."
msgstr "لم يتم العثور على أية بيانات بعد."
#: searx/templates/simple/stats.html:26
msgid "Scores"
msgstr ""
msgstr "نتائج"
#: searx/templates/simple/stats.html:27
msgid "Result count"
@ -929,7 +948,7 @@ msgstr "نتيجة العد"
#: searx/templates/simple/stats.html:38
msgid "Scores per result"
msgstr ""
msgstr "درجات لكل نتيجة"
#: searx/templates/simple/stats.html:62
msgid "Total"
@ -937,11 +956,11 @@ msgstr "إجمالي"
#: searx/templates/simple/stats.html:63
msgid "HTTP"
msgstr ""
msgstr "HTTP"
#: searx/templates/simple/stats.html:64
msgid "Processing"
msgstr ""
msgstr "يتم المعالجة"
#: searx/templates/simple/stats.html:102
msgid "Warnings"
@ -949,7 +968,7 @@ msgstr "تحذيرات"
#: searx/templates/simple/stats.html:102
msgid "Errors and exceptions"
msgstr ""
msgstr "الأخطاء والاستثناءات"
#: searx/templates/simple/stats.html:108
msgid "Exception"
@ -965,7 +984,7 @@ msgstr "نسبة"
#: searx/templates/simple/stats.html:114
msgid "Parameter"
msgstr ""
msgstr "معامل"
#: searx/templates/simple/stats.html:122
msgid "Filename"
@ -973,11 +992,11 @@ msgstr "اسم الملف"
#: searx/templates/simple/stats.html:123
msgid "Function"
msgstr ""
msgstr "وظيفة"
#: searx/templates/simple/stats.html:124
msgid "Code"
msgstr "كود"
msgstr "شفرة"
#: searx/templates/simple/stats.html:131
msgid "Checker"
@ -997,7 +1016,7 @@ msgstr "في أي وقت"
#: searx/templates/simple/filters/time_range.html:6
msgid "Last day"
msgstr "يوم أمس"
msgstr "آخر يوم"
#: searx/templates/simple/filters/time_range.html:9
msgid "Last week"
@ -1052,7 +1071,7 @@ msgstr "إخفاء الوسائط"
#: searx/templates/simple/result_templates/default.html:14
#: searx/templates/simple/result_templates/videos.html:14
msgid "This site did not provide any description."
msgstr "هذا الموقع لا يتوفر على أي وصف."
msgstr "هذا الموقع لم يقدم أي وصف."
#: searx/templates/simple/result_templates/images.html:19
msgid "Format"
@ -1371,4 +1390,3 @@ msgstr "إخفاء الفيديو"
#~ msgid "preferences"
#~ msgstr "التفضيلات"

@ -7,18 +7,19 @@
# Xosé M. <correo@xmgz.eu>, 2018-2019, 2022.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
"PO-Revision-Date: 2022-07-19 05:46+0000\n"
"PO-Revision-Date: 2022-09-02 07:25+0000\n"
"Last-Translator: Xosé M. <correo@xmgz.eu>\n"
"Language-Team: Galician <https://weblate.bubu1.eu/projects/searxng/searxng/"
"gl/>\n"
"Language: gl\n"
"Language-Team: Galician "
"<https://weblate.bubu1.eu/projects/searxng/searxng/gl/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.13.1\n"
"Generated-By: Babel 2.10.3\n"
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
@ -268,16 +269,21 @@ msgid ""
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
" WebP."
msgstr ""
"Non se puido ler o url da imaxe. Podería ser debido a un formato do ficheiro "
"non soportado. TinEye só soporta imaxes tipo JPEG, PNG, GIF, BMP, TIFF ou "
"WebP."
#: searx/engines/tineye.py:46
msgid ""
"The image is too simple to find matches. TinEye requires a basic level of"
" visual detail to successfully identify matches."
msgstr ""
"A imaxe é demasiado simple para atopar coincidencias. TinEyes require un "
"nivel de detalle básico para poder atopar coincidencias."
#: searx/engines/tineye.py:52
msgid "The image could not be downloaded."
msgstr ""
msgstr "Non se puido descargar a imaxe."
#: searx/plugins/hash_plugin.py:24
msgid "Converts strings to different hash digests."
@ -335,27 +341,32 @@ msgstr ""
#: searx/plugins/tor_check.py:25
msgid "Tor check plugin"
msgstr ""
msgstr "Complemento para comprobar Tor"
#: searx/plugins/tor_check.py:28
msgid ""
"This plugin checks if the address of the request is a TOR exit node, and "
"informs the user if it is, like check.torproject.org but from searxng."
msgstr ""
"Este complemento comproba se o enderezo da solicitude é un nodo de saída "
"TOR, e informa ás usuarias se o é, como check.torproject.org pero desde "
"searxng."
#: searx/plugins/tor_check.py:62
msgid ""
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
"unreachable."
msgstr ""
"A lista dos nodos de saída TOR (https://check.torproject.org/exit-addresses) "
"non é accesible."
#: searx/plugins/tor_check.py:78
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
msgstr ""
msgstr "Estás a usar TOR. O teu enderezo ip semella ser: {ip_address}."
#: searx/plugins/tor_check.py:84
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
msgstr ""
msgstr "Non estás a usar TOR. O teu enderezo IP semella ser: {ip_address}."
#: searx/plugins/tracker_url_remover.py:29
msgid "Tracker URL remover"
@ -1384,4 +1395,3 @@ msgstr "agochar vídeo"
#~ msgid "preferences"
#~ msgstr "axustes"

@ -7,13 +7,14 @@
# Issa1552 <fairfull.playing@gmail.com>, 2020
# Matija Kromar <matija.kromar@gmail.com>, 2022.
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
# SecularSteve <fairfull.playing@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
"PO-Revision-Date: 2022-08-22 19:57+0000\n"
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
"PO-Revision-Date: 2022-09-02 07:25+0000\n"
"Last-Translator: SecularSteve <fairfull.playing@gmail.com>\n"
"Language-Team: Croatian <https://weblate.bubu1.eu/projects/searxng/searxng/"
"hr/>\n"
"Language: hr\n"
@ -294,7 +295,7 @@ msgstr "Pretvara niz u drukčije hash mješavine."
#: searx/plugins/hash_plugin.py:52
msgid "hash digest"
msgstr "hash digest"
msgstr "Izlaz heš funkcije"
#: searx/plugins/hostname_replace.py:9
msgid "Hostname replace"
@ -364,7 +365,7 @@ msgstr "Vi koristite TOR. Vaša IP adresa se čini da je: {ip_address}."
#: searx/plugins/tor_check.py:84
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
msgstr ""
msgstr "Vi koristite TOR. Izgleda da je vaša IP adresa: {ip_address}."
#: searx/plugins/tracker_url_remover.py:29
msgid "Tracker URL remover"
@ -402,7 +403,7 @@ msgstr "pretraži stranicu"
#: searx/templates/simple/base.html:46
msgid "About"
msgstr ""
msgstr "O nama"
#: searx/templates/simple/base.html:50
msgid "Donate"
@ -431,7 +432,7 @@ msgstr "Tragač problema"
#: searx/templates/simple/base.html:67 searx/templates/simple/stats.html:18
msgid "Engine stats"
msgstr "Podaci o tražilic"
msgstr "Podaci o tražilici"
#: searx/templates/simple/base.html:69
#: searx/templates/simple/messages/no_results.html:15
@ -440,11 +441,11 @@ msgstr "Javne instance"
#: searx/templates/simple/base.html:72
msgid "Privacy policy"
msgstr ""
msgstr "Politika privatnosti"
#: searx/templates/simple/base.html:75
msgid "Contact instance maintainer"
msgstr ""
msgstr "Kontaktirajte održavatelja instance"
#: searx/templates/simple/categories.html:24
msgid "Click on the magnifier to perform search"
@ -469,19 +470,19 @@ msgstr "preko proxyja"
#: searx/templates/simple/new_issue.html:64
msgid "Start submiting a new issue on GitHub"
msgstr ""
msgstr "Počnite izlagati novi slučaj na GitHub"
#: searx/templates/simple/new_issue.html:66
msgid "Please check for existing bugs about this engine on GitHub"
msgstr ""
msgstr "Provjerite postoje li greške u vezi s ovim motorom na GitHub-u"
#: searx/templates/simple/new_issue.html:69
msgid "I confirm there is no existing bug about the issue I encounter"
msgstr ""
msgstr "Potvrđujem da ne postoji greška u vezi s problemom na koji sam naišao"
#: searx/templates/simple/new_issue.html:71
msgid "If this is a public instance, please specify the URL in the bug report"
msgstr ""
msgstr "Ako je ovo javna instanca, navedite URL u izvješću o pogrešci"
#: searx/templates/simple/new_issue.html:72
msgid "Submit a new issue on Github including the above information"
@ -496,30 +497,30 @@ msgstr "Nema HTTPS"
#: searx/templates/simple/preferences.html:32
#: searx/templates/simple/results.html:49
msgid "View error logs and submit a bug report"
msgstr ""
msgstr "Pogledajte zapisnike grešaka i pošaljite izvješće o greškama"
#: searx/templates/simple/preferences.html:53
#: searx/templates/simple/stats.html:67
msgid "Median"
msgstr ""
msgstr "Medijan"
#: searx/templates/simple/preferences.html:54
#: searx/templates/simple/stats.html:73
msgid "P80"
msgstr ""
msgstr "P80"
#: searx/templates/simple/preferences.html:55
#: searx/templates/simple/stats.html:79
msgid "P95"
msgstr ""
msgstr "P95"
#: searx/templates/simple/preferences.html:83
msgid "Failed checker test(s): "
msgstr ""
msgstr "Neuspjeli test(ovi) za provjeru: "
#: searx/templates/simple/preferences.html:85
msgid "Errors:"
msgstr ""
msgstr "Greške:"
#: searx/templates/simple/preferences.html:105
msgid "General"
@ -613,23 +614,23 @@ msgstr "Promijenite jezik prikaza"
#: searx/templates/simple/preferences.html:195
msgid "Theme"
msgstr ""
msgstr "Tema"
#: searx/templates/simple/preferences.html:203
msgid "Change SearXNG layout"
msgstr ""
msgstr "Promijenite izgled SearXNG-a"
#: searx/templates/simple/preferences.html:206
msgid "Theme style"
msgstr ""
msgstr "Izgled teme"
#: searx/templates/simple/preferences.html:214
msgid "Choose auto to follow your browser settings"
msgstr ""
msgstr "Odaberite automatski kako biste pratili postavke vašeg preglednika"
#: searx/templates/simple/preferences.html:217
msgid "Center Alignment"
msgstr ""
msgstr "Središnje poravnanje"
#: searx/templates/simple/preferences.html:220
#: searx/templates/simple/preferences.html:232
@ -645,7 +646,7 @@ msgstr "Isključeno"
#: searx/templates/simple/preferences.html:224
msgid "Displays results in the center of the page (Oscar layout)."
msgstr ""
msgstr "Prikazuje rezultate u sredini stranice (Oscar raspored)."
#: searx/templates/simple/preferences.html:229
msgid "Results on new tabs"
@ -671,7 +672,7 @@ msgstr "Privatnost"
#: searx/templates/simple/preferences.html:257
msgid "HTTP Method"
msgstr ""
msgstr "HTTP metoda"
#: searx/templates/simple/preferences.html:264
msgid ""
@ -699,17 +700,19 @@ msgstr "Onemogućeno"
#: searx/templates/simple/preferences.html:276
msgid "Proxying image results through SearXNG"
msgstr ""
msgstr "Proxy slikovni rezultati putem SearXNG-a"
#: searx/templates/simple/preferences.html:281
msgid "Query in the page's title"
msgstr ""
msgstr "Upit u naslovu stranice"
#: searx/templates/simple/preferences.html:288
msgid ""
"When enabled, the result page's title contains your query. Your browser "
"can record this title"
msgstr ""
"Kada je omogućeno, naslov stranice s rezultatima sadrži vaš upit. Vaš "
"preglednik može zabilježiti ovaj naslov"
#: searx/templates/simple/preferences.html:294
msgid "Engines"
@ -724,6 +727,8 @@ msgid ""
"This tab does not show up for search results, but you can search the "
"engines listed here via bangs."
msgstr ""
"Ova kartica nije prikazana za rezultate pretrage, ali možete pretraživati "
"motore navedene ovdje putem šiških."
#: searx/templates/simple/preferences.html:307
#: searx/templates/simple/preferences.html:358
@ -751,7 +756,7 @@ msgstr "Vremenski raspon"
#: searx/templates/simple/preferences.html:313
#: searx/templates/simple/stats.html:28
msgid "Response time"
msgstr ""
msgstr "Vrijeme odziva"
#: searx/templates/simple/preferences.html:314
msgid "Max time"
@ -760,11 +765,11 @@ msgstr "Maksimalno vrijeme"
#: searx/templates/simple/preferences.html:315
#: searx/templates/simple/stats.html:29
msgid "Reliability"
msgstr ""
msgstr "Pouzdanost"
#: searx/templates/simple/preferences.html:353
msgid "Special Queries"
msgstr ""
msgstr "Posebni upiti"
#: searx/templates/simple/preferences.html:359
msgid "Keywords"
@ -784,11 +789,11 @@ msgstr "Primjeri"
#: searx/templates/simple/preferences.html:365
msgid "This is the list of SearXNG's instant answering modules."
msgstr ""
msgstr "Ovo je popis SearXNG-ovih modula za trenutno javljanje."
#: searx/templates/simple/preferences.html:376
msgid "This is the list of plugins."
msgstr ""
msgstr "Ovo je popis dodataka."
#: searx/templates/simple/preferences.html:393
msgid "Cookies"
@ -799,10 +804,12 @@ msgid ""
"This is the list of cookies and their values SearXNG is storing on your "
"computer."
msgstr ""
"Ovo je popis kolačića i njihovih vrijednosti koje SearXNG pohranjuje na "
"vašem kompjuteru."
#: searx/templates/simple/preferences.html:396
msgid "With that list, you can assess SearXNG transparency."
msgstr ""
msgstr "S tim popisom možete procijeniti prozirnost SearXNG-a."
#: searx/templates/simple/preferences.html:401
msgid "Cookie name"
@ -827,13 +834,15 @@ msgstr ""
#: searx/templates/simple/preferences.html:419
msgid "URL to restore your preferences in another browser"
msgstr ""
msgstr "URL da biste vratili vaše postavke u drugom pregledniku"
#: searx/templates/simple/preferences.html:423
msgid ""
"Specifying custom settings in the preferences URL can be used to sync "
"preferences across devices."
msgstr ""
"Navođenje prilagođenih postavki u URL-u može se koristiti za sinkronizaciju "
"postavki na svim uređajima."
#: searx/templates/simple/preferences.html:428
msgid ""
@ -853,7 +862,7 @@ msgstr ""
#: searx/templates/simple/preferences.html:433
msgid "Save"
msgstr ""
msgstr "Sačuvati"
#: searx/templates/simple/preferences.html:434
msgid "Reset defaults"
@ -861,7 +870,7 @@ msgstr "Vraćanje zadanih postavki"
#: searx/templates/simple/preferences.html:435
msgid "Back"
msgstr ""
msgstr "Natrag"
#: searx/templates/simple/results.html:23
msgid "Answers"
@ -898,19 +907,19 @@ msgstr "Pokušajte tražiti sljedeće:"
#: searx/templates/simple/results.html:152
msgid "Back to top"
msgstr ""
msgstr "Natrag na vrh"
#: searx/templates/simple/results.html:170
msgid "Previous page"
msgstr ""
msgstr "Prethodna stranica"
#: searx/templates/simple/results.html:187
msgid "Next page"
msgstr ""
msgstr "Sljedeća stranica"
#: searx/templates/simple/search.html:3
msgid "Display the front page"
msgstr ""
msgstr "Prikaži naslovnu stranicu"
#: searx/templates/simple/search.html:9
#: searx/templates/simple/simple_search.html:5
@ -920,12 +929,12 @@ msgstr "Traži..."
#: searx/templates/simple/search.html:10
#: searx/templates/simple/simple_search.html:6
msgid "clear"
msgstr ""
msgstr "očisti"
#: searx/templates/simple/search.html:11
#: searx/templates/simple/simple_search.html:7
msgid "search"
msgstr ""
msgstr "traži"
#: searx/templates/simple/stats.html:21
msgid "There is currently no data available. "
@ -937,7 +946,7 @@ msgstr "Pogodci"
#: searx/templates/simple/stats.html:27
msgid "Result count"
msgstr ""
msgstr "Broj rezultata"
#: searx/templates/simple/stats.html:38
msgid "Scores per result"
@ -945,63 +954,63 @@ msgstr "Pogodci po rezultatu"
#: searx/templates/simple/stats.html:62
msgid "Total"
msgstr ""
msgstr "Ukupno"
#: searx/templates/simple/stats.html:63
msgid "HTTP"
msgstr ""
msgstr "HTTP"
#: searx/templates/simple/stats.html:64
msgid "Processing"
msgstr ""
msgstr "Obrada"
#: searx/templates/simple/stats.html:102
msgid "Warnings"
msgstr ""
msgstr "Upozorenja"
#: searx/templates/simple/stats.html:102
msgid "Errors and exceptions"
msgstr ""
msgstr "Pogreške i iznimke"
#: searx/templates/simple/stats.html:108
msgid "Exception"
msgstr ""
msgstr "Iznimka"
#: searx/templates/simple/stats.html:110
msgid "Message"
msgstr ""
msgstr "Poruka"
#: searx/templates/simple/stats.html:112
msgid "Percentage"
msgstr ""
msgstr "Postotak"
#: searx/templates/simple/stats.html:114
msgid "Parameter"
msgstr ""
msgstr "Parametar"
#: searx/templates/simple/stats.html:122
msgid "Filename"
msgstr ""
msgstr "Naziv datoteke"
#: searx/templates/simple/stats.html:123
msgid "Function"
msgstr ""
msgstr "Funkcija"
#: searx/templates/simple/stats.html:124
msgid "Code"
msgstr ""
msgstr "Koda"
#: searx/templates/simple/stats.html:131
msgid "Checker"
msgstr ""
msgstr "Provjernik"
#: searx/templates/simple/stats.html:134
msgid "Failed test"
msgstr ""
msgstr "Neuspjeli test"
#: searx/templates/simple/stats.html:135
msgid "Comment(s)"
msgstr ""
msgstr "Komentar(i)"
#: searx/templates/simple/filters/time_range.html:3
msgid "Anytime"
@ -1038,6 +1047,8 @@ msgstr "Tražilice ne mogu dohvatiti rezultate."
#: searx/templates/simple/messages/no_results.html:15
msgid "Please, try again later or find another SearXNG instance."
msgstr ""
"Molimo vas da pokušate ponovo kasnije ili da pronađete drugu SearXNG "
"instancu."
#: searx/templates/simple/messages/no_results.html:20
msgid "Sorry!"
@ -1062,15 +1073,15 @@ msgstr "sakrij medije"
#: searx/templates/simple/result_templates/default.html:14
#: searx/templates/simple/result_templates/videos.html:14
msgid "This site did not provide any description."
msgstr ""
msgstr "Ova stranica nije dala nikakav opis."
#: searx/templates/simple/result_templates/images.html:19
msgid "Format"
msgstr ""
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:21
msgid "Engine"
msgstr ""
msgstr "Motor"
#: searx/templates/simple/result_templates/images.html:22
msgid "View source"
@ -1078,7 +1089,7 @@ msgstr "Prikaži izvor"
#: searx/templates/simple/result_templates/map.html:12
msgid "address"
msgstr ""
msgstr "adresa"
#: searx/templates/simple/result_templates/map.html:43
msgid "show map"