12 Commits

Author SHA1 Message Date
searxng-bot
bb64231355 [l10n] update translations from Weblate
19de4a735 - 2025-07-23 - eudemo <eudemo@noreply.codeberg.org>
4504f8600 - 2025-07-22 - IcewindX <icewindx@noreply.codeberg.org>
2b4ec6d2c - 2025-07-22 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
69b3590de - 2025-07-22 - Fjuro <fjuro@alius.cz>
f48c7b9ac - 2025-07-21 - alexgabi <alexgabi@noreply.codeberg.org>
f8bc97254 - 2025-07-21 - alexgabi <alexgabi@noreply.codeberg.org>
7bd4b6441 - 2025-07-21 - Juno Takano <jutty@noreply.codeberg.org>
527bc690c - 2025-07-20 - 0ko <0ko@noreply.codeberg.org>
dd242f579 - 2025-07-20 - IcewindX <icewindx@noreply.codeberg.org>
f2a3cdb26 - 2025-07-19 - ledjfou <ledjfou@noreply.codeberg.org>
6781d5611 - 2025-07-20 - alexgabi <alexgabi@noreply.codeberg.org>
df82ea943 - 2025-07-18 - zbbhzdaajc <zbbhzdaajc@noreply.codeberg.org>
7892aac02 - 2025-07-18 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
2025-07-25 07:12:09 +00:00
Markus Heiser
84c3a832a4 [fix] false is an invalid value for wiki_url in settings.yml (#5046)
Closes: https://github.com/searxng/searxng/issues/5045
2025-07-24 17:47:09 +02:00
Ivan Gabaldon
802bf4f9e7 [fix] py: absolute static path (#5043)
The path to static should be relative (If sxng is served under "/sxng", the static route passed to the client won't be "/sxng/static/..." as expected but "/static/...")

Closes https://github.com/searxng/searxng/issues/5042
2025-07-24 14:55:04 +02:00
Bnyro
6b16a04e7e [mod] wordnik: convert to answerer (#4980)
Wordnik is now an answerer and not in the infobox anymore: it uses the
translations answerer, because it provides all the features needed. By default,
only its first results is shown

Additionally a new "define" category is added - I know, it's the same as the
"dictionaries" category, but I don't think we can alias categories.  This allows
to search e.g. for `!define tree`, the idea is to allow easy searches for
definitions of words.

Related:

- https://github.com/searxng/searxng/issues/4111
2025-07-24 07:42:31 +02:00
Ivan Gabaldon
b01d32d69d [fix] py: restore application for uWSGI (#5040)
Was removed on https://github.com/searxng/searxng/pull/5032
2025-07-23 23:55:50 +02:00
Ivan Gabaldon
f7c8e4c353 [fix] py: overwrite version_frozen on explicit freeze (#5020)
Once version_frozen.py has been created, it will never be updated again unless the file is manually deleted.
2025-07-23 18:17:58 +02:00
Ivan Gabaldon
42f102ce1b [enh] py: whitenoise for static handling (#5032)
While looking at ways to better handle static files, I saw a package that replaces Flask `static_folder` functionality. Not only it's considerably faster, but already includes the capability to serve sidecars without having to intercept. This also replaces the uWSGI folder mapping functionality.

Closes https://github.com/searxng/searxng/issues/4977
2025-07-23 18:16:10 +02:00
Bnyro
5cbf422621 [fix] tracker url remover + external bangs: use standard network config
Using plain `httpx` directly doesn't use SearXNG's additional network config, including proxies, http2 config, ...

Related issues:
- https://github.com/searxng/searxng/issues/5027
2025-07-22 10:25:33 +02:00
Ivan Gabaldon
b95a3e905d [fix] container: remove static path mount (#5006)
I've seen that by default Granian sets a `Cache-Control` header for 1 day IF `GRANIAN_STATIC_PATH_MOUNT` is set. This option is not a hard requirement, but it's set because I found to be faster when serving the static files.

Another thing is that by removing `GRANIAN_STATIC_PATH_MOUNT`, the headers set by the application are present again in the static files, which was not the case before.

Related https://github.com/searxng/searxng/pull/5004
2025-07-19 10:18:50 +02:00
github-actions[bot]
be392a45fc [l10n] update translations from Weblate (#5023)
fce853a65 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
234a91155 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
162ff0369 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
3307e81ab - 2025-07-16 - return42 <return42@noreply.codeberg.org>
7948181fb - 2025-07-15 - Juno Takano <jutty@noreply.codeberg.org>
e88a0b264 - 2025-07-15 - muha7a <muha7a@noreply.codeberg.org>
7b37b944e - 2025-07-14 - Cookie_Monster <cookie_monster@noreply.codeberg.org>
d6c61f1ff - 2025-07-14 - kolegacik <kolegacik@noreply.codeberg.org>
5bd662542 - 2025-07-15 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
4ddad097c - 2025-07-14 - yoonhahwang <yoonhahwang@noreply.codeberg.org>
a8d319c18 - 2025-07-13 - norizou <norizou@noreply.codeberg.org>
e7e471f65 - 2025-07-13 - Hēphaistos <hephaistos@noreply.codeberg.org>
b6b198f0a - 2025-07-12 - return42 <return42@noreply.codeberg.org>
9da60d355 - 2025-07-11 - sourdragon <sourdragon@noreply.codeberg.org>
632b879ba - 2025-07-12 - return42 <return42@noreply.codeberg.org>
a543b2b87 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
7e418d9cc - 2025-07-12 - return42 <return42@noreply.codeberg.org>
6e78fbd5c - 2025-07-12 - return42 <return42@noreply.codeberg.org>
917b27bad - 2025-07-12 - return42 <return42@noreply.codeberg.org>
82e69afbf - 2025-07-12 - return42 <return42@noreply.codeberg.org>
096c36ef7 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
2048ef8e2 - 2025-07-12 - return42 <return42@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-07-19 07:14:26 +02:00
Ivan Gabaldon
ff2e0ea278 [mod] py: don't append "-dirty" to DOCKER_TAG (#5021)
We don't expect tags to have "-dirty", just the GIT_VERSION regardless of how the container is built.
2025-07-18 10:42:44 +02:00
dependabot[bot]
22c6cd4121 [upd] pypi: Bump certifi from 2025.7.9 to 2025.7.14 in the minor group (#5022)
Bumps the minor group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.7.9 to 2025.7.14
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.09...2025.07.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 10:41:18 +02:00
29 changed files with 196 additions and 191 deletions

View File

@@ -51,8 +51,7 @@ ENV SEARXNG_VERSION="$SEARXNG_GIT_VERSION" \
GRANIAN_LOOP="uvloop" \ GRANIAN_LOOP="uvloop" \
GRANIAN_BLOCKING_THREADS="4" \ GRANIAN_BLOCKING_THREADS="4" \
GRANIAN_WORKERS_KILL_TIMEOUT="30" \ GRANIAN_WORKERS_KILL_TIMEOUT="30" \
GRANIAN_BLOCKING_THREADS_IDLE_TIMEOUT="300" \ GRANIAN_BLOCKING_THREADS_IDLE_TIMEOUT="300"
GRANIAN_STATIC_PATH_MOUNT="/usr/local/searxng/searx/static/"
VOLUME $CONFIG_PATH VOLUME $CONFIG_PATH
VOLUME $DATA_PATH VOLUME $DATA_PATH

View File

@@ -1,4 +1,4 @@
certifi==2025.7.9 certifi==2025.7.14
babel==2.17.0 babel==2.17.0
flask-babel==4.0.0 flask-babel==4.0.0
flask==3.1.1 flask==3.1.1
@@ -19,3 +19,4 @@ tomli==2.2.1; python_version < '3.11'
msgspec==0.19.0 msgspec==0.19.0
typer-slim==0.16.0 typer-slim==0.16.0
isodate==0.7.2 isodate==0.7.2
whitenoise==6.9.0

View File

@@ -10,9 +10,8 @@ import re
from collections.abc import Iterator from collections.abc import Iterator
from urllib.parse import urlparse, urlunparse, parse_qsl, urlencode from urllib.parse import urlparse, urlunparse, parse_qsl, urlencode
import httpx
from searx.data.core import get_cache, log from searx.data.core import get_cache, log
from searx.network import get as http_get
RuleType = tuple[str, list[str], list[str]] RuleType = tuple[str, list[str], list[str]]
@@ -44,7 +43,7 @@ class TrackerPatternsDB:
self.cache.properties.set("tracker_patterns loaded", "OK") self.cache.properties.set("tracker_patterns loaded", "OK")
self.load() self.load()
# F I X M E: # F I X M E:
# do we need a maintenance .. rember: database is stored # do we need a maintenance .. remember: database is stored
# in /tmp and will be rebuild during the reboot anyway # in /tmp and will be rebuild during the reboot anyway
def load(self): def load(self):
@@ -71,7 +70,7 @@ class TrackerPatternsDB:
def iter_clear_list(self) -> Iterator[RuleType]: def iter_clear_list(self) -> Iterator[RuleType]:
resp = None resp = None
for url in self.CLEAR_LIST_URL: for url in self.CLEAR_LIST_URL:
resp = httpx.get(url, timeout=3) resp = http_get(url, timeout=3)
if resp.status_code == 200: if resp.status_code == 200:
break break
log.warning(f"TRACKER_PATTERNS: ClearURL ignore HTTP {resp.status_code} {url}") log.warning(f"TRACKER_PATTERNS: ClearURL ignore HTTP {resp.status_code} {url}")

View File

@@ -1,11 +1,10 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Wordnik (general) """Wordnik (general)"""
"""
from lxml.html import fromstring from lxml.html import fromstring
from searx.utils import extract_text from searx.utils import extract_text
from searx.network import raise_for_httperror
from searx.result_types import EngineResults
# about # about
about = { about = {
@@ -17,7 +16,7 @@ about = {
"results": 'HTML', "results": 'HTML',
} }
categories = ['general'] categories = ['dictionaries', 'define']
paging = False paging = False
@@ -27,46 +26,23 @@ def request(query, params):
def response(resp): def response(resp):
results = [] results = EngineResults()
raise_for_httperror(resp)
dom = fromstring(resp.text) dom = fromstring(resp.text)
word = extract_text(dom.xpath('//*[@id="headword"]/text()'))
definitions = []
for src in dom.xpath('//*[@id="define"]//h3[@class="source"]'): for src in dom.xpath('//*[@id="define"]//h3[@class="source"]'):
src_text = extract_text(src).strip() item = results.types.Translations.Item(text="")
if src_text.startswith('from '):
src_text = src_text[5:]
src_defs = []
for def_item in src.xpath('following-sibling::ul[1]/li'): for def_item in src.xpath('following-sibling::ul[1]/li'):
def_abbr = extract_text(def_item.xpath('.//abbr')).strip() def_abbr = extract_text(def_item.xpath('.//abbr')).strip()
def_text = extract_text(def_item).strip() def_text = extract_text(def_item).strip()
if def_abbr: if def_abbr:
def_text = def_text[len(def_abbr) :].strip() def_text = def_text[len(def_abbr) :].strip()
src_defs.append((def_abbr, def_text))
definitions.append((src_text, src_defs)) # use first result as summary
if not item.text:
item.text = def_text
item.definitions.append(def_text)
if not definitions: results.add(results.types.Translations(translations=[item], url=resp.search_params["url"]))
return results
infobox = ''
for src_text, src_defs in definitions:
infobox += f"<small>{src_text}</small>"
infobox += "<ul>"
for def_abbr, def_text in src_defs:
if def_abbr:
def_abbr += ": "
infobox += f"<li><i>{def_abbr}</i> {def_text}</li>"
infobox += "</ul>"
results.append(
{
'infobox': word,
'content': infobox,
}
)
return results return results

View File

@@ -2494,8 +2494,7 @@ engines:
- name: wordnik - name: wordnik
engine: wordnik engine: wordnik
shortcut: def shortcut: wnik
categories: [dictionaries]
timeout: 5.0 timeout: 5.0
- name: woxikon.de synonyme - name: woxikon.de synonyme

View File

@@ -150,7 +150,7 @@ SCHEMA = {
'new_issue_url': SettingsValue(str, 'https://github.com/searxng/searxng/issues/new'), 'new_issue_url': SettingsValue(str, 'https://github.com/searxng/searxng/issues/new'),
'docs_url': SettingsValue(str, 'https://docs.searxng.org'), 'docs_url': SettingsValue(str, 'https://docs.searxng.org'),
'public_instances': SettingsValue((False, str), 'https://searx.space'), 'public_instances': SettingsValue((False, str), 'https://searx.space'),
'wiki_url': SettingsValue(str, 'https://github.com/searxng/searxng/wiki'), 'wiki_url': SettingsValue((False, str), 'https://github.com/searxng/searxng/wiki'),
'custom': SettingsValue(dict, {'links': {}}), 'custom': SettingsValue(dict, {'links': {}}),
}, },
'search': { 'search': {

View File

@@ -24,20 +24,22 @@
# akwceles <akwceles@users.noreply.translate.codeberg.org>, 2025. # akwceles <akwceles@users.noreply.translate.codeberg.org>, 2025.
# dansmachina <dansmachina@noreply.codeberg.org>, 2025. # dansmachina <dansmachina@noreply.codeberg.org>, 2025.
# return42 <return42@noreply.codeberg.org>, 2025. # return42 <return42@noreply.codeberg.org>, 2025.
# eudemo <eudemo@noreply.codeberg.org>, 2025.
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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-06-22 17:06+0000\n" "PO-Revision-Date: 2025-07-24 15:15+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n" "Last-Translator: eudemo <eudemo@noreply.codeberg.org>\n"
"Language-Team: Catalan <https://translate.codeberg.org/projects/searxng/"
"searxng/ca/>\n"
"Language: ca\n" "Language: ca\n"
"Language-Team: Catalan "
"<https://translate.codeberg.org/projects/searxng/searxng/ca/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -296,7 +298,7 @@ msgstr "Cel buidat"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Partly cloudy" msgid "Partly cloudy"
msgstr "" msgstr "Parcialment ennuvolat"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -316,42 +318,42 @@ msgstr "Boira"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain and thunder" msgid "Light rain and thunder"
msgstr "" msgstr "Pluja lleugera i trons"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain showers and thunder" msgid "Light rain showers and thunder"
msgstr "" msgstr "Ruixats lleugers i trons"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain showers" msgid "Light rain showers"
msgstr "" msgstr "Ruixats lleugers"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain" msgid "Light rain"
msgstr "" msgstr "Pluja lleugera"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain and thunder" msgid "Rain and thunder"
msgstr "" msgstr "Tempesta"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain showers and thunder" msgid "Rain showers and thunder"
msgstr "" msgstr "Ruixats i trons"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain showers" msgid "Rain showers"
msgstr "" msgstr "Ruixats"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain" msgid "Rain"
msgstr "" msgstr "Pluja"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -396,7 +398,7 @@ msgstr ""
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Sleet and thunder" msgid "Sleet and thunder"
msgstr "" msgstr "Calamarsa i trons"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -411,7 +413,7 @@ msgstr ""
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Sleet" msgid "Sleet"
msgstr "" msgstr "Calamarsa"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -471,7 +473,7 @@ msgstr ""
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Snow" msgid "Snow"
msgstr "" msgstr "Neu"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -2367,4 +2369,3 @@ msgstr "oculta el vídeo"
#~ msgid "Change SearXNG layout" #~ msgid "Change SearXNG layout"
#~ msgstr "Canvia l'aparença de SearXNG" #~ msgstr "Canvia l'aparença de SearXNG"

View File

@@ -28,16 +28,17 @@ 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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-06-28 09:58+0000\n" "PO-Revision-Date: 2025-07-22 10:57+0000\n"
"Last-Translator: Fjuro <git@alius.cz>\n" "Last-Translator: Fjuro <fjuro@alius.cz>\n"
"Language-Team: Czech <https://translate.codeberg.org/projects/searxng/"
"searxng/cs/>\n"
"Language: cs\n" "Language: cs\n"
"Language-Team: Czech "
"<https://translate.codeberg.org/projects/searxng/searxng/cs/>\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && "
"n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n "
"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
"X-Generator: Weblate 5.12.2\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -828,7 +829,7 @@ msgstr "Nepoužíváte Tor a máte externí IP adresu"
#: searx/plugins/tracker_url_remover.py:35 #: searx/plugins/tracker_url_remover.py:35
msgid "Tracker URL remover" msgid "Tracker URL remover"
msgstr "Odstraňovač sledovacích URL" msgstr "Odstranit sledovací URL"
#: searx/plugins/tracker_url_remover.py:36 #: searx/plugins/tracker_url_remover.py:36
msgid "Remove trackers arguments from the returned URL" msgid "Remove trackers arguments from the returned URL"
@@ -927,7 +928,7 @@ msgstr "archivovaná verze"
#: searx/templates/simple/new_issue.html:64 #: searx/templates/simple/new_issue.html:64
msgid "Start submitting a new issue on GitHub" msgid "Start submitting a new issue on GitHub"
msgstr "Začněte přidávat novou chybu na Githubu" msgstr "Přidat nový problém na 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"
@@ -941,11 +942,11 @@ msgstr ""
#: searx/templates/simple/new_issue.html:71 #: searx/templates/simple/new_issue.html:71
msgid "If this is a public instance, please specify the URL in the bug report" msgid "If this is a public instance, please specify the URL in the bug report"
msgstr "Pokud je tohle veřejná instance, prosím specifikujte URL v náhlášení chyby" msgstr "Pokud je toto veřejná instance, uveďte prosím URL v náhlášení chyby"
#: searx/templates/simple/new_issue.html:72 #: searx/templates/simple/new_issue.html:72
msgid "Submit a new issue on Github including the above information" msgid "Submit a new issue on Github including the above information"
msgstr "Odeslání nového problému na Github včetně výše uvedených informací" msgstr "Odeslat nový problém na GitHub včetně výše uvedených informací"
#: searx/templates/simple/preferences.html:65 #: searx/templates/simple/preferences.html:65
msgid "No HTTPS" msgid "No HTTPS"
@@ -1245,7 +1246,7 @@ msgstr "Vypnuto"
#: searx/templates/simple/filters/time_range.html:1 #: searx/templates/simple/filters/time_range.html:1
#: searx/templates/simple/preferences/engines.html:28 #: searx/templates/simple/preferences/engines.html:28
msgid "Time range" msgid "Time range"
msgstr "Čásový interval" msgstr "Časový interval"
#: searx/templates/simple/filters/time_range.html:3 #: searx/templates/simple/filters/time_range.html:3
msgid "Anytime" msgid "Anytime"
@@ -2366,4 +2367,3 @@ msgstr "skrýt video"
#~ msgid "Change SearXNG layout" #~ msgid "Change SearXNG layout"
#~ msgstr "Změnit vzhled SearXNG" #~ msgstr "Změnit vzhled SearXNG"

View File

@@ -21,15 +21,16 @@ 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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-06-26 02:46+0000\n" "PO-Revision-Date: 2025-07-19 08:08+0000\n"
"Last-Translator: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>\n" "Last-Translator: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>\n"
"Language-Team: Estonian <https://translate.codeberg.org/projects/searxng/"
"searxng/et/>\n"
"Language: et\n" "Language: et\n"
"Language-Team: Estonian "
"<https://translate.codeberg.org/projects/searxng/searxng/et/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n" "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.12.2\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -1571,7 +1572,7 @@ msgstr ""
#: searx/templates/simple/preferences/theme.html:2 #: searx/templates/simple/preferences/theme.html:2
msgid "Theme" msgid "Theme"
msgstr "Teema" msgstr "Kujundus"
#: searx/templates/simple/preferences/theme.html:14 #: searx/templates/simple/preferences/theme.html:14
msgid "Change the layout of SearXNG" msgid "Change the layout of SearXNG"
@@ -2351,4 +2352,3 @@ msgstr "peida video"
#~ msgid "Change SearXNG layout" #~ msgid "Change SearXNG layout"
#~ msgstr "Muuda SearXNG paigutust" #~ msgstr "Muuda SearXNG paigutust"

View File

@@ -21,15 +21,16 @@ 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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-06-22 17:06+0000\n" "PO-Revision-Date: 2025-07-21 15:53+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n" "Last-Translator: alexgabi <alexgabi@noreply.codeberg.org>\n"
"Language-Team: Basque <https://translate.codeberg.org/projects/searxng/"
"searxng/eu/>\n"
"Language: eu\n" "Language: eu\n"
"Language-Team: Basque "
"<https://translate.codeberg.org/projects/searxng/searxng/eu/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -288,7 +289,7 @@ msgstr "Oskarbi"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Partly cloudy" msgid "Partly cloudy"
msgstr "" msgstr "Ostarteak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -308,42 +309,42 @@ msgstr "Lainoa"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain and thunder" msgid "Light rain and thunder"
msgstr "" msgstr "Euri arina eta trumoiak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain showers and thunder" msgid "Light rain showers and thunder"
msgstr "" msgstr "Euri zaparrada arinak eta trumoiak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain showers" msgid "Light rain showers"
msgstr "" msgstr "Euri zaparrada arinak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light rain" msgid "Light rain"
msgstr "" msgstr "Euri arina"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain and thunder" msgid "Rain and thunder"
msgstr "" msgstr "Euria eta trumoiak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain showers and thunder" msgid "Rain showers and thunder"
msgstr "" msgstr "Zaparradak eta trumoiak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain showers" msgid "Rain showers"
msgstr "" msgstr "Euri zaparradak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain" msgid "Rain"
msgstr "" msgstr "Euria"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -368,22 +369,22 @@ msgstr "Euri trinkoa"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light sleet and thunder" msgid "Light sleet and thunder"
msgstr "" msgstr "Elurbusti arina eta trumoiak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light sleet showers and thunder" msgid "Light sleet showers and thunder"
msgstr "" msgstr "Elurbusti arineko zaparradak eta trumoiak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light sleet showers" msgid "Light sleet showers"
msgstr "" msgstr "Elurbusti arineko zaparradak"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light sleet" msgid "Light sleet"
msgstr "" msgstr "Elurbusti arina"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -2336,4 +2337,3 @@ msgstr "ezkutatu bideoa"
#~ msgid "Change SearXNG layout" #~ msgid "Change SearXNG layout"
#~ msgstr "Aldatu SearXNGren diseinua" #~ msgstr "Aldatu SearXNGren diseinua"

View File

@@ -41,13 +41,14 @@
# wags07 <wags07@noreply.codeberg.org>, 2025. # wags07 <wags07@noreply.codeberg.org>, 2025.
# demilune <demilune@noreply.codeberg.org>, 2025. # demilune <demilune@noreply.codeberg.org>, 2025.
# Hēphaistos <hephaistos@noreply.codeberg.org>, 2025. # Hēphaistos <hephaistos@noreply.codeberg.org>, 2025.
# ledjfou <ledjfou@noreply.codeberg.org>, 2025.
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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-07-13 23:08+0000\n" "PO-Revision-Date: 2025-07-20 14:08+0000\n"
"Last-Translator: Hēphaistos <hephaistos@noreply.codeberg.org>\n" "Last-Translator: ledjfou <ledjfou@noreply.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"
@@ -787,6 +788,8 @@ msgstr "Module de noms dhôtes"
#: searx/plugins/hostnames.py:124 #: searx/plugins/hostnames.py:124
msgid "Rewrite hostnames and remove or prioritize results based on the hostname" msgid "Rewrite hostnames and remove or prioritize results based on the hostname"
msgstr "" msgstr ""
"Personnalisez vos résultats en redirigeant les liens et en filtrant les "
"sites affichés"
#: searx/plugins/oa_doi_rewrite.py:55 #: searx/plugins/oa_doi_rewrite.py:55
msgid "Open Access DOI rewrite" msgid "Open Access DOI rewrite"
@@ -1397,7 +1400,6 @@ msgid "Value"
msgstr "Valeur" msgstr "Valeur"
#: searx/templates/simple/preferences/cookies.html:23 #: searx/templates/simple/preferences/cookies.html:23
#, fuzzy
msgid "Search URL of the currently saved preferences" msgid "Search URL of the currently saved preferences"
msgstr "" msgstr ""
"URL de recherche définie selon les préférences actuellement sauvegardées" "URL de recherche définie selon les préférences actuellement sauvegardées"
@@ -1535,7 +1537,7 @@ msgstr "Proxy d'images"
#: searx/templates/simple/preferences/image_proxy.html:14 #: searx/templates/simple/preferences/image_proxy.html:14
msgid "Proxy image results through SearXNG" msgid "Proxy image results through SearXNG"
msgstr "" msgstr "Résultats des images proxy via SearXNG"
#: searx/templates/simple/preferences/infinite_scroll.html:2 #: searx/templates/simple/preferences/infinite_scroll.html:2
msgid "Infinite scroll" msgid "Infinite scroll"

View File

@@ -49,8 +49,8 @@ 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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-07-16 06:08+0000\n" "PO-Revision-Date: 2025-07-22 10:57+0000\n"
"Last-Translator: Juno Takano <jutty@noreply.codeberg.org>\n" "Last-Translator: \"lucasmz.dev\" <lucasmz.dev@noreply.codeberg.org>\n"
"Language-Team: Portuguese (Brazil) <https://translate.codeberg.org/projects/" "Language-Team: Portuguese (Brazil) <https://translate.codeberg.org/projects/"
"searxng/searxng/pt_BR/>\n" "searxng/searxng/pt_BR/>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@@ -362,12 +362,12 @@ msgstr "Chuva com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain showers and thunder" msgid "Rain showers and thunder"
msgstr "Chuva contínua com trovões" msgstr "Chuva rápida com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Rain showers" msgid "Rain showers"
msgstr "Chuva contínua" msgstr "Chuva rápida"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -382,12 +382,12 @@ msgstr "Chuva intensa com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Heavy rain showers and thunder" msgid "Heavy rain showers and thunder"
msgstr "Chuva intensa contínua com trovões" msgstr "Chuva rápida e intensa com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Heavy rain showers" msgid "Heavy rain showers"
msgstr "Chuva intensa contínua" msgstr "Chuva rápida e intensa"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -402,12 +402,12 @@ msgstr "Granizo leve com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light sleet showers and thunder" msgid "Light sleet showers and thunder"
msgstr "Granizo leve contínuo com trovões" msgstr "Granizo leve e rápido com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light sleet showers" msgid "Light sleet showers"
msgstr "Granizo leve contínuo" msgstr "Granizo leve e rápido"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -422,12 +422,12 @@ msgstr "Granizo com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Sleet showers and thunder" msgid "Sleet showers and thunder"
msgstr "Granizo contínuo com trovões" msgstr "Granizo rápido com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Sleet showers" msgid "Sleet showers"
msgstr "Granizo contínuo" msgstr "Granizo rápido"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -442,12 +442,12 @@ msgstr "Granizo intenso com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Heavy sleet showers and thunder" msgid "Heavy sleet showers and thunder"
msgstr "Granizo intenso contínuo com trovões" msgstr "Granizo pesado rápido com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Heavy sleet showers" msgid "Heavy sleet showers"
msgstr "Granizo intenso contínuo" msgstr "Chuvas rápidas e intensas de granizo"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -462,12 +462,12 @@ msgstr "Neve fraca com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light snow showers and thunder" msgid "Light snow showers and thunder"
msgstr "Neve fraca contínua com trovões" msgstr "Neve fraca e rápida com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Light snow showers" msgid "Light snow showers"
msgstr "Neve fraca contínua" msgstr "Neve fraca e rápida"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -482,12 +482,12 @@ msgstr "Neve com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Snow showers and thunder" msgid "Snow showers and thunder"
msgstr "Neve contínua com trovões" msgstr "Neve rápida com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Snow showers" msgid "Snow showers"
msgstr "Neve contínua" msgstr "Neve rápida"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -502,12 +502,12 @@ msgstr "Neve pesada com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Heavy snow showers and thunder" msgid "Heavy snow showers and thunder"
msgstr "Neve intensa contínua com trovões" msgstr "Neve intensa rápida com trovões"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Heavy snow showers" msgid "Heavy snow showers"
msgstr "Neve intensa contínua" msgstr "Neve intensa rápida"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
@@ -1107,7 +1107,7 @@ msgstr "Tempo de resposta"
#: searx/templates/simple/preferences/engines.html:35 #: searx/templates/simple/preferences/engines.html:35
#: searx/templates/simple/stats.html:29 #: searx/templates/simple/stats.html:29
msgid "Reliability" msgid "Reliability"
msgstr "Consistência" msgstr "Confiabilidade"
#: searx/templates/simple/stats.html:59 #: searx/templates/simple/stats.html:59
msgid "Total" msgid "Total"

View File

@@ -30,22 +30,25 @@
# return42 <return42@noreply.codeberg.org>, 2025. # return42 <return42@noreply.codeberg.org>, 2025.
# yurtpage <yurtpage@noreply.codeberg.org>, 2025. # yurtpage <yurtpage@noreply.codeberg.org>, 2025.
# kotovasia <kotovasia@noreply.codeberg.org>, 2025. # kotovasia <kotovasia@noreply.codeberg.org>, 2025.
# IcewindX <icewindx@noreply.codeberg.org>, 2025.
# 0ko <0ko@noreply.codeberg.org>, 2025.
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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-07-03 10:26+0000\n" "PO-Revision-Date: 2025-07-23 11:09+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n" "Last-Translator: IcewindX <icewindx@noreply.codeberg.org>\n"
"Language-Team: Russian <https://translate.codeberg.org/projects/searxng/"
"searxng/ru/>\n"
"Language: ru\n" "Language: ru\n"
"Language-Team: Russian "
"<https://translate.codeberg.org/projects/searxng/searxng/ru/>\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) "
"|| (n%100>=11 && n%100<=14)? 2 : 3);\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || ("
"n%100>=11 && n%100<=14)? 2 : 3);\n"
"X-Generator: Weblate 5.12.2\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -577,7 +580,7 @@ msgstr "Не удалось загрузить следующую страниц
#: searx/webapp.py:447 searx/webapp.py:845 #: searx/webapp.py:447 searx/webapp.py:845
msgid "Invalid settings, please edit your preferences" msgid "Invalid settings, please edit your preferences"
msgstr "Неправильные параметры, пожалуйста измените ваши настройки" msgstr "Неправильные параметры, пожалуйста, измените ваши настройки"
#: searx/webapp.py:463 #: searx/webapp.py:463
msgid "Invalid settings" msgid "Invalid settings"
@@ -711,7 +714,7 @@ msgid ""
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or" "format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
" WebP." " WebP."
msgstr "" msgstr ""
"Не удалось прочитать изображение по ссылки. Возможно это вызвано " "Не удалось прочитать изображение по ссылке. Возможно это вызвано "
"неподдерживаемым форматом файла. TinEye поддерживает только следующие " "неподдерживаемым форматом файла. TinEye поддерживает только следующие "
"форматы: JPEG, PNG, GIF, BMP, TIFF or WebP." "форматы: JPEG, PNG, GIF, BMP, TIFF or WebP."
@@ -807,7 +810,7 @@ msgstr "Ваш IP-адрес: "
#: searx/plugins/self_info.py:55 #: searx/plugins/self_info.py:55
msgid "Your user-agent is: " msgid "Your user-agent is: "
msgstr "Ваш обозреватель: " msgstr "Ваш браузер: "
#: searx/plugins/tor_check.py:42 #: searx/plugins/tor_check.py:42
msgid "Tor check plugin" msgid "Tor check plugin"
@@ -828,7 +831,7 @@ msgstr "Не удалось загрузить список выходных у
#: searx/plugins/tor_check.py:72 #: searx/plugins/tor_check.py:72
msgid "You are using Tor and it looks like you have the external IP address" msgid "You are using Tor and it looks like you have the external IP address"
msgstr "Вы используете Tor и кажется что у вас есть внешний айпи адрес" msgstr "Вы используете Tor и кажется что у вас есть внешний IP-адрес"
#: searx/plugins/tor_check.py:76 #: searx/plugins/tor_check.py:76
msgid "You are not using Tor and you have the external IP address" msgid "You are not using Tor and you have the external IP address"
@@ -939,7 +942,7 @@ msgstr "Создайте задачу на 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 "Пожалуйста проверьте ныне существующие ошибки этого движка на GitHub" msgstr "Пожалуйста, проверьте ныне существующие ошибки этого движка на 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"
@@ -1193,7 +1196,7 @@ msgstr "Сообщения от поисковых систем"
#: searx/templates/simple/elements/engines_msg.html:7 #: searx/templates/simple/elements/engines_msg.html:7
msgid "seconds" msgid "seconds"
msgstr "секунды" msgstr "сек."
#: searx/templates/simple/elements/search_url.html:3 #: searx/templates/simple/elements/search_url.html:3
msgid "Search URL" msgid "Search URL"
@@ -1250,7 +1253,7 @@ msgstr "Умеренный"
#: searx/templates/simple/filters/safesearch.html:4 #: searx/templates/simple/filters/safesearch.html:4
#: searx/templates/simple/preferences/safesearch.html:15 #: searx/templates/simple/preferences/safesearch.html:15
msgid "None" msgid "None"
msgstr "Нету" msgstr "Нет"
#: searx/templates/simple/filters/time_range.html:1 #: searx/templates/simple/filters/time_range.html:1
#: searx/templates/simple/preferences/engines.html:28 #: searx/templates/simple/preferences/engines.html:28
@@ -1361,13 +1364,13 @@ msgstr "Выравнивание по центру"
#: searx/templates/simple/preferences/center_alignment.html:14 #: searx/templates/simple/preferences/center_alignment.html:14
msgid "Display results in the center of the page (Oscar layout)." msgid "Display results in the center of the page (Oscar layout)."
msgstr "Отображать результаты в центре страницы." msgstr "Отображать результаты по центру страницы."
#: searx/templates/simple/preferences/cookies.html:2 #: searx/templates/simple/preferences/cookies.html:2
msgid "" msgid ""
"This is the list of cookies and their values SearXNG is storing on your " "This is the list of cookies and their values SearXNG is storing on your "
"computer." "computer."
msgstr "Список cookies и их значений, которые SearXNG хранит в вашем обозревателе." msgstr "Список cookies и их значений, которые SearXNG хранит в вашем браузере."
#: searx/templates/simple/preferences/cookies.html:3 #: searx/templates/simple/preferences/cookies.html:3
msgid "With this list, you can assess the transparency of SearXNG." msgid "With this list, you can assess the transparency of SearXNG."
@@ -1395,7 +1398,7 @@ msgstr ""
#: searx/templates/simple/preferences/cookies.html:35 #: searx/templates/simple/preferences/cookies.html:35
msgid "URL to restore your preferences in another browser" msgid "URL to restore your preferences in another browser"
msgstr "URL-адрес для восстановления ваших настроек в другом обозревателе" msgstr "URL-адрес для восстановления ваших настроек в другом браузере"
#: searx/templates/simple/preferences/cookies.html:43 #: searx/templates/simple/preferences/cookies.html:43
msgid "" msgid ""
@@ -1520,7 +1523,7 @@ msgstr "Прокси для картинок"
#: searx/templates/simple/preferences/image_proxy.html:14 #: searx/templates/simple/preferences/image_proxy.html:14
msgid "Proxy image results through SearXNG" msgid "Proxy image results through SearXNG"
msgstr "Результаты прокси-изображения через SearXNG" msgstr "Проксировать найденные изображения через SearXNG"
#: searx/templates/simple/preferences/infinite_scroll.html:2 #: searx/templates/simple/preferences/infinite_scroll.html:2
msgid "Infinite scroll" msgid "Infinite scroll"
@@ -1561,8 +1564,8 @@ msgid ""
"When enabled, the result page's title contains your query. Your browser " "When enabled, the result page's title contains your query. Your browser "
"can record this title" "can record this title"
msgstr "" msgstr ""
"Добавить поисковый запрос в заголовок страницы с результатами. " "Добавить поисковый запрос в заголовок страницы с результатами. Ваш браузер "
"Обозреватель может сохранять этот заголовок" "может сохранять этот заголовок"
#: searx/templates/simple/preferences/results_on_new_tab.html:2 #: searx/templates/simple/preferences/results_on_new_tab.html:2
msgid "Results in new tabs" msgid "Results in new tabs"
@@ -1570,7 +1573,7 @@ msgstr "Результаты в новых вкладках"
#: searx/templates/simple/preferences/results_on_new_tab.html:14 #: searx/templates/simple/preferences/results_on_new_tab.html:14
msgid "Open result links in new browser tabs" msgid "Open result links in new browser tabs"
msgstr "Открывать результаты с ссылками в новых вкладках обозревателя" msgstr "Открывать результаты с ссылками в новых вкладках браузера"
#: searx/templates/simple/preferences/safesearch.html:20 #: searx/templates/simple/preferences/safesearch.html:20
msgid "Filter content" msgid "Filter content"
@@ -1594,7 +1597,7 @@ msgstr "Тема"
#: searx/templates/simple/preferences/theme.html:14 #: searx/templates/simple/preferences/theme.html:14
msgid "Change the layout of SearXNG" msgid "Change the layout of SearXNG"
msgstr "Изменить макет SearXNG" msgstr "Изменить раскладку интерфейса SearXNG"
#: searx/templates/simple/preferences/theme.html:19 #: searx/templates/simple/preferences/theme.html:19
msgid "Theme style" msgid "Theme style"
@@ -1602,7 +1605,7 @@ msgstr "Стиль темы"
#: searx/templates/simple/preferences/theme.html:31 #: searx/templates/simple/preferences/theme.html:31
msgid "Choose auto to follow your browser settings" msgid "Choose auto to follow your browser settings"
msgstr "Выберите «автоматически» для использования настроек вашего обозревателя" msgstr "Выберите «автоматически» для использования настроек вашего браузера"
#: searx/templates/simple/preferences/tokens.html:2 #: searx/templates/simple/preferences/tokens.html:2
msgid "Engine tokens" msgid "Engine tokens"
@@ -2390,4 +2393,3 @@ msgstr "скрыть видео"
#~ msgid "Change SearXNG layout" #~ msgid "Change SearXNG layout"
#~ msgstr "Изменить расположение элементов SearXNG" #~ msgstr "Изменить расположение элементов SearXNG"

View File

@@ -29,13 +29,14 @@
# return42 <return42@noreply.codeberg.org>, 2025. # return42 <return42@noreply.codeberg.org>, 2025.
# AhmetHakki1 <ahmethakki1@noreply.codeberg.org>, 2025. # AhmetHakki1 <ahmethakki1@noreply.codeberg.org>, 2025.
# Cookie_Monster <cookie_monster@noreply.codeberg.org>, 2025. # Cookie_Monster <cookie_monster@noreply.codeberg.org>, 2025.
# zbbhzdaajc <zbbhzdaajc@noreply.codeberg.org>, 2025.
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: 2025-07-03 14:46+0000\n" "POT-Creation-Date: 2025-07-03 14:46+0000\n"
"PO-Revision-Date: 2025-07-15 05:18+0000\n" "PO-Revision-Date: 2025-07-19 08:08+0000\n"
"Last-Translator: Cookie_Monster <cookie_monster@noreply.codeberg.org>\n" "Last-Translator: zbbhzdaajc <zbbhzdaajc@noreply.codeberg.org>\n"
"Language-Team: Turkish <https://translate.codeberg.org/projects/searxng/" "Language-Team: Turkish <https://translate.codeberg.org/projects/searxng/"
"searxng/tr/>\n" "searxng/tr/>\n"
"Language: tr\n" "Language: tr\n"
@@ -477,7 +478,7 @@ msgstr ""
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg
msgid "Snow" msgid "Snow"
msgstr "" msgstr "Kar"
#. WEATHER_CONDITIONS #. WEATHER_CONDITIONS
#: searx/searxng.msg #: searx/searxng.msg

View File

@@ -1,18 +1,19 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=,missing-module-docstring,missing-class-docstring # pylint: disable=,missing-module-docstring,missing-class-docstring
import importlib
import logging
import os import os
import shlex import shlex
import subprocess import subprocess
import logging
import importlib
# fallback values # fallback values
# if there is searx.version_frozen module, and it is not possible to get the git tag # if there is searx.version_frozen module, and it is not possible to get the git tag
VERSION_STRING = "1.0.0" VERSION_STRING = "1.0.0"
VERSION_TAG = "1.0.0" VERSION_TAG = "1.0.0"
GIT_URL = "unknow" DOCKER_TAG = "1.0.0"
GIT_BRANCH = "unknow" GIT_URL = "unknown"
GIT_BRANCH = "unknown"
logger = logging.getLogger("searx") logger = logging.getLogger("searx")
@@ -69,6 +70,7 @@ def get_git_version():
# which depended on the git version: '2023.05.06+..' --> '2023.5.6+..' # which depended on the git version: '2023.05.06+..' --> '2023.5.6+..'
git_commit_date_hash = git_commit_date_hash.replace('.0', '.') git_commit_date_hash = git_commit_date_hash.replace('.0', '.')
tag_version = git_version = git_commit_date_hash tag_version = git_version = git_commit_date_hash
docker_tag = git_commit_date_hash.replace("+", "-")
# add "+dirty" suffix if there are uncommitted changes except searx/settings.yml # add "+dirty" suffix if there are uncommitted changes except searx/settings.yml
try: try:
@@ -78,10 +80,29 @@ def get_git_version():
git_version += "+dirty" git_version += "+dirty"
else: else:
logger.warning('"%s" returns an unexpected return code %i', e.returncode, e.cmd) logger.warning('"%s" returns an unexpected return code %i', e.returncode, e.cmd)
docker_tag = git_version.replace("+", "-")
return git_version, tag_version, docker_tag return git_version, tag_version, docker_tag
def get_information():
version_string = VERSION_STRING
version_tag = VERSION_TAG
docker_tag = DOCKER_TAG
git_url = GIT_URL
git_branch = GIT_BRANCH
try:
version_string, version_tag, docker_tag = get_git_version()
except subprocess.CalledProcessError as ex:
logger.error("Error while getting the version: %s", ex.stderr)
try:
git_url, git_branch = get_git_url_and_branch()
except subprocess.CalledProcessError as ex:
logger.error("Error while getting the git URL & branch: %s", ex.stderr)
return version_string, version_tag, docker_tag, git_url, git_branch
try: try:
vf = importlib.import_module('searx.version_frozen') vf = importlib.import_module('searx.version_frozen')
VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH = ( VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH = (
@@ -92,18 +113,7 @@ try:
vf.GIT_BRANCH, vf.GIT_BRANCH,
) )
except ImportError: except ImportError:
try: VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH = get_information()
try:
VERSION_STRING, VERSION_TAG, DOCKER_TAG = get_git_version()
except subprocess.CalledProcessError as ex:
logger.error("Error while getting the version: %s", ex.stderr)
try:
GIT_URL, GIT_BRANCH = get_git_url_and_branch()
except subprocess.CalledProcessError as ex:
logger.error("Error while getting the git URL & branch: %s", ex.stderr)
except FileNotFoundError as ex:
logger.error("%s is not found, fallback to the default version", ex.filename)
logger.info("version: %s", VERSION_STRING) logger.info("version: %s", VERSION_STRING)
@@ -111,6 +121,8 @@ if __name__ == "__main__":
import sys import sys
if len(sys.argv) >= 2 and sys.argv[1] == "freeze": if len(sys.argv) >= 2 and sys.argv[1] == "freeze":
VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH = get_information()
# freeze the version (to create an archive outside a git repository) # freeze the version (to create an archive outside a git repository)
python_code = f"""# SPDX-License-Identifier: AGPL-3.0-or-later python_code = f"""# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=missing-module-docstring # pylint: disable=missing-module-docstring

View File

@@ -30,6 +30,9 @@ from pygments.formatters import HtmlFormatter # pylint: disable=no-name-in-modu
from werkzeug.serving import is_running_from_reloader from werkzeug.serving import is_running_from_reloader
from whitenoise import WhiteNoise
from whitenoise.base import Headers
import flask import flask
from flask import ( from flask import (
@@ -147,7 +150,7 @@ STATS_SORT_PARAMETERS = {
} }
# Flask app # Flask app
app = Flask(__name__, static_folder=settings['ui']['static_path'], template_folder=templates_path) app = Flask(__name__, static_folder=None, template_folder=templates_path)
app.jinja_env.trim_blocks = True app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True app.jinja_env.lstrip_blocks = True
@@ -245,6 +248,7 @@ def custom_url_for(endpoint: str, **values):
if not _STATIC_FILES: if not _STATIC_FILES:
_STATIC_FILES = webutils.get_static_file_list() _STATIC_FILES = webutils.get_static_file_list()
# handled by WhiteNoise
if endpoint == "static" and values.get("filename"): if endpoint == "static" and values.get("filename"):
# We need to verify the "filename" argument: in the jinja templates # We need to verify the "filename" argument: in the jinja templates
@@ -257,9 +261,11 @@ def custom_url_for(endpoint: str, **values):
if arg_filename not in _STATIC_FILES: if arg_filename not in _STATIC_FILES:
# try file in the current theme # try file in the current theme
theme_name = sxng_request.preferences.get_value("theme") theme_name = sxng_request.preferences.get_value("theme")
arg_filename = f"themes/{theme_name}/{arg_filename}" theme_filename = f"themes/{theme_name}/{arg_filename}"
if arg_filename in _STATIC_FILES: if theme_filename in _STATIC_FILES:
values["filename"] = arg_filename values["filename"] = theme_filename
return f"static/{values['filename']}"
if endpoint == "info" and "locale" not in values: if endpoint == "info" and "locale" not in values:
@@ -1424,8 +1430,27 @@ def init():
favicons.init() favicons.init()
application = app def static_headers(headers: Headers, _path: str, _url: str) -> None:
headers['Cache-Control'] = 'public, max-age=30, stale-while-revalidate=60'
for header, value in settings['server']['default_http_headers'].items():
headers[header] = value
app.wsgi_app = WhiteNoise(
app.wsgi_app,
root=settings['ui']['static_path'],
prefix="static",
max_age=None,
allow_all_origins=False,
add_headers_function=static_headers,
)
patch_application(app) patch_application(app)
# remove when we drop support for uwsgi
application = app
init() init()
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -8,10 +8,10 @@ from :py:obj:`BANGS_URL`.
""" """
import json import json
import httpx
from searx.external_bang import LEAF_KEY from searx.external_bang import LEAF_KEY
from searx.data import data_dir from searx.data import data_dir
from searx.network import get as http_get
DATA_FILE = data_dir / 'external_bangs.json' DATA_FILE = data_dir / 'external_bangs.json'
@@ -24,7 +24,7 @@ HTTP_COLON = 'http:'
def main(): def main():
print(f'fetch bangs from {BANGS_URL}') print(f'fetch bangs from {BANGS_URL}')
response = httpx.get(BANGS_URL) response = http_get(BANGS_URL)
response.raise_for_status() response.raise_for_status()
ddg_bangs = json.loads(response.content.decode()) ddg_bangs = json.loads(response.content.decode())
trie = parse_ddg_bangs(ddg_bangs) trie = parse_ddg_bangs(ddg_bangs)

View File

@@ -75,7 +75,4 @@ pythonpath = ${SEARXNG_SRC}
http = ${SEARXNG_INTERNAL_HTTP} http = ${SEARXNG_INTERNAL_HTTP}
buffer-size = 8192 buffer-size = 8192
# To serve the static files via the WSGI server
static-map = /static=${SEARXNG_STATIC}
static-gzip-all = True
offload-threads = %k offload-threads = %k

View File

@@ -72,7 +72,4 @@ pythonpath = ${SEARXNG_SRC}
socket = ${SEARXNG_UWSGI_SOCKET} socket = ${SEARXNG_UWSGI_SOCKET}
buffer-size = 8192 buffer-size = 8192
# To serve the static files via the WSGI server
static-map = /static=${SEARXNG_STATIC}
static-gzip-all = True
offload-threads = %k offload-threads = %k

View File

@@ -78,7 +78,4 @@ pythonpath = ${SEARXNG_SRC}
http = ${SEARXNG_INTERNAL_HTTP} http = ${SEARXNG_INTERNAL_HTTP}
buffer-size = 8192 buffer-size = 8192
# To serve the static files via the WSGI server
static-map = /static=${SEARXNG_STATIC}
static-gzip-all = True
offload-threads = %k offload-threads = %k

View File

@@ -75,7 +75,4 @@ pythonpath = ${SEARXNG_SRC}
socket = ${SEARXNG_UWSGI_SOCKET} socket = ${SEARXNG_UWSGI_SOCKET}
buffer-size = 8192 buffer-size = 8192
# To serve the static files via the WSGI server
static-map = /static=${SEARXNG_STATIC}
static-gzip-all = True
offload-threads = %k offload-threads = %k