Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Arcane Spark 2024-07-13 00:00:56 +02:00
commit e67a1a3b32
21 changed files with 136 additions and 223 deletions

View file

@ -2,7 +2,7 @@ mock==5.1.0
nose2[coverage_plugin]==0.15.1 nose2[coverage_plugin]==0.15.1
cov-core==1.15.0 cov-core==1.15.0
black==24.3.0 black==24.3.0
pylint==3.2.3 pylint==3.2.5
splinter==0.21.0 splinter==0.21.0
selenium==4.22.0 selenium==4.22.0
Pallets-Sphinx-Themes==2.1.3 Pallets-Sphinx-Themes==2.1.3

View file

@ -1,4 +1,4 @@
certifi==2024.6.2 certifi==2024.7.4
babel==2.15.0 babel==2.15.0
flask-babel==4.0.0 flask-babel==4.0.0
flask==3.0.3 flask==3.0.3

View file

@ -5,6 +5,7 @@
# pylint: disable=use-dict-literal # pylint: disable=use-dict-literal
import json import json
import html
from urllib.parse import urlencode, quote_plus from urllib.parse import urlencode, quote_plus
import lxml import lxml
@ -162,7 +163,7 @@ def stract(query, _lang):
if not resp.ok: if not resp.ok:
return [] return []
return [suggestion['raw'] for suggestion in resp.json()] return [html.unescape(suggestion['raw']) for suggestion in resp.json()]
def startpage(query, sxng_locale): def startpage(query, sxng_locale):

View file

@ -1,125 +0,0 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Gentoo Wiki
"""
from urllib.parse import urlencode, urljoin
from lxml import html
from searx.utils import extract_text
# about
about = {
"website": 'https://wiki.gentoo.org/',
"wikidata_id": 'Q1050637',
"official_api_documentation": 'https://wiki.gentoo.org/api.php',
"use_official_api": False,
"require_api_key": False,
"results": 'HTML',
}
# engine dependent config
categories = ['it', 'software wikis']
paging = True
base_url = 'https://wiki.gentoo.org'
# xpath queries
xpath_results = '//ul[@class="mw-search-results"]/li'
xpath_link = './/div[@class="mw-search-result-heading"]/a'
xpath_content = './/div[@class="searchresult"]'
# cut 'en' from 'en-US', 'de' from 'de-CH', and so on
def locale_to_lang_code(locale):
if locale.find('-') >= 0:
locale = locale.split('-')[0]
return locale
# wikis for some languages were moved off from the main site, we need to make
# requests to correct URLs to be able to get results in those languages
lang_urls = {
'en': {'base': 'https://wiki.gentoo.org', 'search': '/index.php?title=Special:Search&offset={offset}&{query}'},
'others': {
'base': 'https://wiki.gentoo.org',
'search': '/index.php?title=Special:Search&offset={offset}&{query}\
&profile=translation&languagefilter={language}',
},
}
# get base & search URLs for selected language
def get_lang_urls(language):
if language != 'en':
return lang_urls['others']
return lang_urls['en']
# Language names to build search requests for
# those languages which are hosted on the main site.
main_langs = {
'ar': 'العربية',
'bg': 'Български',
'cs': 'Česky',
'da': 'Dansk',
'el': 'Ελληνικά',
'es': 'Español',
'he': 'עברית',
'hr': 'Hrvatski',
'hu': 'Magyar',
'it': 'Italiano',
'ko': '한국어',
'lt': 'Lietuviškai',
'nl': 'Nederlands',
'pl': 'Polski',
'pt': 'Português',
'ru': 'Русский',
'sl': 'Slovenský',
'th': 'ไทย',
'uk': 'Українська',
'zh': '简体中文',
}
# do search-request
def request(query, params):
# translate the locale (e.g. 'en-US') to language code ('en')
language = locale_to_lang_code(params['language'])
# if our language is hosted on the main site, we need to add its name
# to the query in order to narrow the results to that language
if language in main_langs:
query += ' (' + main_langs[language] + ')'
# prepare the request parameters
query = urlencode({'search': query})
offset = (params['pageno'] - 1) * 20
# get request URLs for our language of choice
urls = get_lang_urls(language)
search_url = urls['base'] + urls['search']
params['url'] = search_url.format(query=query, offset=offset, language=language)
return params
# get response from search-request
def response(resp):
# get the base URL for the language in which request was made
language = locale_to_lang_code(resp.search_params['language'])
url = get_lang_urls(language)['base']
results = []
dom = html.fromstring(resp.text)
# parse results
for result in dom.xpath(xpath_results):
link = result.xpath(xpath_link)[0]
href = urljoin(url, link.attrib.get('href'))
title = extract_text(link)
content = extract_text(result.xpath(xpath_content))
results.append({'url': href, 'title': title, 'content': content})
return results

View file

@ -100,6 +100,12 @@ base_url: str = 'https://{language}.wikipedia.org/'
ISO 639-1 language code (en, de, fr ..) of the search language. ISO 639-1 language code (en, de, fr ..) of the search language.
""" """
api_path: str = 'w/api.php'
"""The path the PHP api is listening on.
The default path should work fine usually.
"""
timestamp_format = '%Y-%m-%dT%H:%M:%SZ' timestamp_format = '%Y-%m-%dT%H:%M:%SZ'
"""The longhand version of MediaWiki time strings.""" """The longhand version of MediaWiki time strings."""
@ -113,12 +119,7 @@ def request(query, params):
else: else:
params['language'] = params['language'].split('-')[0] params['language'] = params['language'].split('-')[0]
if base_url.endswith('/'): api_url = f"{base_url.rstrip('/')}/{api_path}?".format(language=params['language'])
api_url = base_url + 'w/api.php?'
else:
api_url = base_url + '/w/api.php?'
api_url = api_url.format(language=params['language'])
offset = (params['pageno'] - 1) * number_of_results offset = (params['pageno'] - 1) * number_of_results
args = { args = {

View file

@ -20,6 +20,8 @@ Otherwise, follow instructions provided by Mullvad for enabling the VPN on Linux
update of SearXNG! update of SearXNG!
""" """
from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from httpx import Response from httpx import Response
from lxml import html from lxml import html
@ -37,6 +39,8 @@ traits: EngineTraits
use_cache: bool = True # non-cache use only has 100 searches per day! use_cache: bool = True # non-cache use only has 100 searches per day!
leta_engine: str = 'google'
search_url = "https://leta.mullvad.net" search_url = "https://leta.mullvad.net"
# about # about
@ -61,6 +65,11 @@ time_range_dict = {
"year": "y1", "year": "y1",
} }
available_leta_engines = [
'google', # first will be default if provided engine is invalid
'brave',
]
def is_vpn_connected(dom: html.HtmlElement) -> bool: def is_vpn_connected(dom: html.HtmlElement) -> bool:
"""Returns true if the VPN is connected, False otherwise""" """Returns true if the VPN is connected, False otherwise"""
@ -80,11 +89,22 @@ def assign_headers(headers: dict) -> dict:
def request(query: str, params: dict): def request(query: str, params: dict):
country = traits.get_region(params.get('searxng_locale', 'all'), traits.all_locale) # type: ignore country = traits.get_region(params.get('searxng_locale', 'all'), traits.all_locale) # type: ignore
result_engine = leta_engine
if leta_engine not in available_leta_engines:
result_engine = available_leta_engines[0]
logger.warning(
'Configured engine "%s" not one of the available engines %s, defaulting to "%s"',
leta_engine,
available_leta_engines,
result_engine,
)
params['url'] = search_url params['url'] = search_url
params['method'] = 'POST' params['method'] = 'POST'
params['data'] = { params['data'] = {
"q": query, "q": query,
"gl": country if country is str else '', "gl": country if country is str else '',
'engine': result_engine,
} }
# pylint: disable=undefined-variable # pylint: disable=undefined-variable
if use_cache: if use_cache:
@ -107,8 +127,8 @@ def request(query: str, params: dict):
return params return params
def extract_result(dom_result: html.HtmlElement): def extract_result(dom_result: list[html.HtmlElement]):
[a_elem, h3_elem, p_elem] = eval_xpath_list(dom_result, 'div/div/*') [a_elem, h3_elem, p_elem] = dom_result
return { return {
'url': extract_text(a_elem.text), 'url': extract_text(a_elem.text),
'title': extract_text(h3_elem), 'title': extract_text(h3_elem),
@ -116,6 +136,14 @@ def extract_result(dom_result: html.HtmlElement):
} }
def extract_results(search_results: html.HtmlElement):
for search_result in search_results:
dom_result = eval_xpath_list(search_result, 'div/div/*')
# sometimes an info box pops up, will need to filter that out
if len(dom_result) == 3:
yield extract_result(dom_result)
def response(resp: Response): def response(resp: Response):
"""Checks if connected to Mullvad VPN, then extracts the search results from """Checks if connected to Mullvad VPN, then extracts the search results from
the DOM resp: requests response object""" the DOM resp: requests response object"""
@ -124,7 +152,7 @@ def response(resp: Response):
if not is_vpn_connected(dom): if not is_vpn_connected(dom):
raise SearxEngineResponseException('Not connected to Mullvad VPN') raise SearxEngineResponseException('Not connected to Mullvad VPN')
search_results = eval_xpath(dom.body, '//main/div[2]/div') search_results = eval_xpath(dom.body, '//main/div[2]/div')
return [extract_result(sr) for sr in search_results] return list(extract_results(search_results))
def fetch_traits(engine_traits: EngineTraits): def fetch_traits(engine_traits: EngineTraits):

View file

@ -797,9 +797,13 @@ engines:
shortcut: gen shortcut: gen
- name: gentoo - name: gentoo
engine: gentoo engine: mediawiki
shortcut: ge shortcut: ge
timeout: 10.0 categories: ["it", "software wikis"]
base_url: "https://wiki.gentoo.org/"
api_path: "api.php"
search_type: text
timeout: 10
- name: gitlab - name: gitlab
engine: json_engine engine: json_engine
@ -1230,6 +1234,7 @@ engines:
# read https://docs.searxng.org/dev/engines/online/mullvad_leta.html # read https://docs.searxng.org/dev/engines/online/mullvad_leta.html
# - name: mullvadleta # - name: mullvadleta
# engine: mullvad_leta # engine: mullvad_leta
# leta_engine: google # choose one of the following: google, brave
# use_cache: true # Only 100 non-cache searches per day, suggested only for private instances # use_cache: true # Only 100 non-cache searches per day, suggested only for private instances
# search_url: https://leta.mullvad.net # search_url: https://leta.mullvad.net
# categories: [general, web] # categories: [general, web]

View file

@ -17,21 +17,23 @@
# return42 <return42@users.noreply.translate.codeberg.org>, 2024. # return42 <return42@users.noreply.translate.codeberg.org>, 2024.
# Yahya-Lando <Yahya-Lando@users.noreply.translate.codeberg.org>, 2024. # Yahya-Lando <Yahya-Lando@users.noreply.translate.codeberg.org>, 2024.
# nebras <nebras@users.noreply.translate.codeberg.org>, 2024. # nebras <nebras@users.noreply.translate.codeberg.org>, 2024.
# geekom13 <geekom13@users.noreply.translate.codeberg.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: searx\n" "Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-06-11 02:08+0000\n" "PO-Revision-Date: 2024-07-01 00:18+0000\n"
"Last-Translator: nebras <nebras@users.noreply.translate.codeberg.org>\n" "Last-Translator: geekom13 <geekom13@users.noreply.translate.codeberg.org>\n"
"Language-Team: Arabic <https://translate.codeberg.org/projects/searxng/"
"searxng/ar/>\n"
"Language: ar\n" "Language: ar\n"
"Language-Team: Arabic "
"<https://translate.codeberg.org/projects/searxng/searxng/ar/>\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"MIME-Version: 1.0\n" "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=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -561,11 +563,11 @@ msgstr ""
#: searx/plugins/self_info.py:28 #: searx/plugins/self_info.py:28
msgid "Your IP is: " msgid "Your IP is: "
msgstr "" msgstr "عنوانك هو (Ip) "
#: searx/plugins/self_info.py:31 #: searx/plugins/self_info.py:31
msgid "Your user-agent is: " msgid "Your user-agent is: "
msgstr "" msgstr "وكيل المستخدم الخاص بك هو "
#: searx/plugins/tor_check.py:24 #: searx/plugins/tor_check.py:24
msgid "Tor check plugin" msgid "Tor check plugin"
@ -1935,4 +1937,3 @@ msgstr "إخفاء الفيديو"
#~ msgid "TiB" #~ msgid "TiB"
#~ msgstr "تيرابيت" #~ msgstr "تيرابيت"

View file

@ -18,20 +18,20 @@
# 2024. # 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: searx\n" "Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-05-14 19:20+0000\n" "PO-Revision-Date: 2024-07-05 07:09+0000\n"
"Last-Translator: sacred-serpent <sacred-" "Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"serpent@users.noreply.translate.codeberg.org>\n" "Language-Team: Hebrew <https://translate.codeberg.org/projects/searxng/"
"searxng/he/>\n"
"Language: he\n" "Language: he\n"
"Language-Team: Hebrew "
"<https://translate.codeberg.org/projects/searxng/searxng/he/>\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 "
"&& n % 10 == 0) ? 2 : 3));\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -257,7 +257,7 @@ msgstr ""
#. WEATHER_TERMS['TEMPERATURE'] #. WEATHER_TERMS['TEMPERATURE']
#: searx/searxng.msg #: searx/searxng.msg
msgid "Temperature" msgid "Temperature"
msgstr "" msgstr "טמפרטורה"
#. WEATHER_TERMS['UV INDEX'] #. WEATHER_TERMS['UV INDEX']
#: searx/searxng.msg #: searx/searxng.msg
@ -277,7 +277,7 @@ msgstr ""
#. SOCIAL_MEDIA_TERMS['SUBSCRIBERS'] #. SOCIAL_MEDIA_TERMS['SUBSCRIBERS']
#: searx/searxng.msg #: searx/searxng.msg
msgid "subscribers" msgid "subscribers"
msgstr "" msgstr "מנויים"
#. SOCIAL_MEDIA_TERMS['POSTS'] #. SOCIAL_MEDIA_TERMS['POSTS']
#: searx/searxng.msg #: searx/searxng.msg
@ -292,12 +292,12 @@ msgstr ""
#. SOCIAL_MEDIA_TERMS['COMMENTS'] #. SOCIAL_MEDIA_TERMS['COMMENTS']
#: searx/searxng.msg #: searx/searxng.msg
msgid "comments" msgid "comments"
msgstr "" msgstr "הערות"
#. SOCIAL_MEDIA_TERMS['USER'] #. SOCIAL_MEDIA_TERMS['USER']
#: searx/searxng.msg #: searx/searxng.msg
msgid "user" msgid "user"
msgstr "" msgstr "משתמש"
#. SOCIAL_MEDIA_TERMS['COMMUNITY'] #. SOCIAL_MEDIA_TERMS['COMMUNITY']
#: searx/searxng.msg #: searx/searxng.msg
@ -312,22 +312,22 @@ msgstr ""
#. SOCIAL_MEDIA_TERMS['TITLE'] #. SOCIAL_MEDIA_TERMS['TITLE']
#: searx/searxng.msg #: searx/searxng.msg
msgid "title" msgid "title"
msgstr "" msgstr "כותרת"
#. SOCIAL_MEDIA_TERMS['AUTHOR'] #. SOCIAL_MEDIA_TERMS['AUTHOR']
#: searx/searxng.msg #: searx/searxng.msg
msgid "author" msgid "author"
msgstr "" msgstr "מחבר"
#. SOCIAL_MEDIA_TERMS['THREAD OPEN'] #. SOCIAL_MEDIA_TERMS['THREAD OPEN']
#: searx/engines/discourse.py:121 searx/searxng.msg #: searx/engines/discourse.py:121 searx/searxng.msg
msgid "open" msgid "open"
msgstr "" msgstr "פתוח"
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED'] #. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
#: searx/engines/discourse.py:121 searx/searxng.msg #: searx/engines/discourse.py:121 searx/searxng.msg
msgid "closed" msgid "closed"
msgstr "" msgstr "סגור"
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED'] #. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
#: searx/engines/discourse.py:132 searx/searxng.msg #: searx/engines/discourse.py:132 searx/searxng.msg
@ -1360,7 +1360,7 @@ msgstr "גודל קובץ"
#: searx/templates/simple/result_templates/files.html:40 #: searx/templates/simple/result_templates/files.html:40
msgid "Date" msgid "Date"
msgstr "" msgstr "תאריך"
#: searx/templates/simple/result_templates/files.html:42 #: searx/templates/simple/result_templates/files.html:42
#: searx/templates/simple/result_templates/paper.html:24 #: searx/templates/simple/result_templates/paper.html:24
@ -1369,7 +1369,7 @@ msgstr "סוג"
#: searx/templates/simple/result_templates/images.html:20 #: searx/templates/simple/result_templates/images.html:20
msgid "Resolution" msgid "Resolution"
msgstr "" msgstr "רזולוציה"
#: searx/templates/simple/result_templates/images.html:21 #: searx/templates/simple/result_templates/images.html:21
msgid "Format" msgid "Format"
@ -1397,7 +1397,7 @@ msgstr "הסתר מפה"
#: searx/templates/simple/result_templates/packages.html:12 #: searx/templates/simple/result_templates/packages.html:12
msgid "Version" msgid "Version"
msgstr "" msgstr "גרסה"
#: searx/templates/simple/result_templates/packages.html:18 #: searx/templates/simple/result_templates/packages.html:18
msgid "Maintainer" msgid "Maintainer"
@ -1418,7 +1418,7 @@ msgstr ""
#: searx/templates/simple/result_templates/packages.html:42 #: searx/templates/simple/result_templates/packages.html:42
msgid "License" msgid "License"
msgstr "" msgstr "רשיון"
#: searx/templates/simple/result_templates/packages.html:52 #: searx/templates/simple/result_templates/packages.html:52
msgid "Project" msgid "Project"
@ -1442,7 +1442,7 @@ msgstr "עורך"
#: searx/templates/simple/result_templates/paper.html:23 #: searx/templates/simple/result_templates/paper.html:23
msgid "Publisher" msgid "Publisher"
msgstr "" msgstr "מפרסם"
#: searx/templates/simple/result_templates/paper.html:26 #: searx/templates/simple/result_templates/paper.html:26
msgid "DOI" msgid "DOI"
@ -1913,4 +1913,3 @@ msgstr "הסתר וידאו"
#~ msgid "TiB" #~ msgid "TiB"
#~ msgstr "טי״ב" #~ msgstr "טי״ב"

View file

@ -32,7 +32,7 @@ msgstr ""
"Project-Id-Version: searx\n" "Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-06-25 11:18+0000\n" "PO-Revision-Date: 2024-07-01 00:18+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n" "Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"Language-Team: Italian <https://translate.codeberg.org/projects/searxng/" "Language-Team: Italian <https://translate.codeberg.org/projects/searxng/"
"searxng/it/>\n" "searxng/it/>\n"
@ -41,7 +41,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5.5\n" "X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -227,7 +227,7 @@ msgstr "Umidità"
#. WEATHER_TERMS['MAX TEMP.'] #. WEATHER_TERMS['MAX TEMP.']
#: searx/searxng.msg #: searx/searxng.msg
msgid "Max temp." msgid "Max temp."
msgstr "Temp. max" msgstr "Temp. massima"
#. WEATHER_TERMS['MIN TEMP.'] #. WEATHER_TERMS['MIN TEMP.']
#: searx/searxng.msg #: searx/searxng.msg

View file

@ -9,21 +9,23 @@
# return42 <markus.heiser@darmarit.de>, 2023. # return42 <markus.heiser@darmarit.de>, 2023.
# return42 <return42@users.noreply.translate.codeberg.org>, 2024. # return42 <return42@users.noreply.translate.codeberg.org>, 2024.
# eaglclaws <eaglclaws@users.noreply.translate.codeberg.org>, 2024. # eaglclaws <eaglclaws@users.noreply.translate.codeberg.org>, 2024.
# seonghobae <seonghobae@users.noreply.translate.codeberg.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-06-08 13:18+0000\n" "PO-Revision-Date: 2024-07-03 17:18+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>" "Last-Translator: seonghobae <seonghobae@users.noreply.translate.codeberg.org>"
"\n" "\n"
"Language-Team: Korean <https://translate.codeberg.org/projects/searxng/"
"searxng/ko/>\n"
"Language: ko\n" "Language: ko\n"
"Language-Team: Korean "
"<https://translate.codeberg.org/projects/searxng/searxng/ko/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -324,7 +326,7 @@ msgstr "닫힘"
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED'] #. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
#: searx/engines/discourse.py:132 searx/searxng.msg #: searx/engines/discourse.py:132 searx/searxng.msg
msgid "answered" msgid "answered"
msgstr "" msgstr "응답"
#: searx/webapp.py:330 #: searx/webapp.py:330
msgid "No item found" msgid "No item found"
@ -519,11 +521,11 @@ msgstr "호스트 이름 변경"
#: searx/plugins/hostnames.py:68 #: searx/plugins/hostnames.py:68
msgid "Hostnames plugin" msgid "Hostnames plugin"
msgstr "" msgstr "호스트 이름 플러그인"
#: searx/plugins/hostnames.py:69 #: searx/plugins/hostnames.py:69
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname" msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
msgstr "" msgstr "검색 결과에서 이 호스트 이름을 기준으로 삭제 또는 우선순위에 따라 재작성하기"
#: searx/plugins/oa_doi_rewrite.py:12 #: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite" msgid "Open Access DOI rewrite"
@ -547,11 +549,11 @@ msgstr "쿼리가 \"ip\"인 경우 사용자의 IP를 표시하고 쿼리에 \"u
#: searx/plugins/self_info.py:28 #: searx/plugins/self_info.py:28
msgid "Your IP is: " msgid "Your IP is: "
msgstr "" msgstr "당신의 IP는: "
#: searx/plugins/self_info.py:31 #: searx/plugins/self_info.py:31
msgid "Your user-agent is: " msgid "Your user-agent is: "
msgstr "" msgstr "당신의 사용자 에이전트는: "
#: searx/plugins/tor_check.py:24 #: searx/plugins/tor_check.py:24
msgid "Tor check plugin" msgid "Tor check plugin"
@ -1756,4 +1758,3 @@ msgstr "비디오 숨기기"
#~ msgid "TiB" #~ msgid "TiB"
#~ msgstr "TiB" #~ msgstr "TiB"

View file

@ -28,21 +28,22 @@
# 2024. # 2024.
# nouoneq <nouoneq@users.noreply.translate.codeberg.org>, 2024. # nouoneq <nouoneq@users.noreply.translate.codeberg.org>, 2024.
# Pyrbor <Pyrbor@users.noreply.translate.codeberg.org>, 2024. # Pyrbor <Pyrbor@users.noreply.translate.codeberg.org>, 2024.
# rodgui <rodgui@users.noreply.translate.codeberg.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: searx\n" "Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-06-08 13:18+0000\n" "PO-Revision-Date: 2024-07-03 17:18+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>" "Last-Translator: rodgui <rodgui@users.noreply.translate.codeberg.org>\n"
"\n" "Language-Team: Portuguese (Brazil) <https://translate.codeberg.org/projects/"
"searxng/searxng/pt_BR/>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
"Language-Team: Portuguese (Brazil) "
"<https://translate.codeberg.org/projects/searxng/searxng/pt_BR/>\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -343,7 +344,7 @@ msgstr "Fechado"
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED'] #. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
#: searx/engines/discourse.py:132 searx/searxng.msg #: searx/engines/discourse.py:132 searx/searxng.msg
msgid "answered" msgid "answered"
msgstr "" msgstr "respondido"
#: searx/webapp.py:330 #: searx/webapp.py:330
msgid "No item found" msgid "No item found"
@ -540,11 +541,12 @@ msgstr "Substituir host"
#: searx/plugins/hostnames.py:68 #: searx/plugins/hostnames.py:68
msgid "Hostnames plugin" msgid "Hostnames plugin"
msgstr "" msgstr "Plugin de Hostnames"
#: searx/plugins/hostnames.py:69 #: searx/plugins/hostnames.py:69
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname" msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
msgstr "" msgstr ""
"Reescrita de hostnames, remova resultados ou priorize-os com base no hostname"
#: searx/plugins/oa_doi_rewrite.py:12 #: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite" msgid "Open Access DOI rewrite"
@ -572,11 +574,11 @@ msgstr ""
#: searx/plugins/self_info.py:28 #: searx/plugins/self_info.py:28
msgid "Your IP is: " msgid "Your IP is: "
msgstr "" msgstr "Seu IP é: "
#: searx/plugins/self_info.py:31 #: searx/plugins/self_info.py:31
msgid "Your user-agent is: " msgid "Your user-agent is: "
msgstr "" msgstr "Seu agente de usuário é: "
#: searx/plugins/tor_check.py:24 #: searx/plugins/tor_check.py:24
msgid "Tor check plugin" msgid "Tor check plugin"
@ -1978,4 +1980,3 @@ msgstr "ocultar vídeo"
#~ msgid "TiB" #~ msgid "TiB"
#~ msgstr "TiB" #~ msgstr "TiB"

View file

@ -21,19 +21,19 @@
# wintryexit <weatherdowner@proton.me>, 2024. # wintryexit <weatherdowner@proton.me>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: searx\n" "Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-05-29 09:18+0000\n" "PO-Revision-Date: 2024-07-05 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>" "Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>\n"
"\n" "Language-Team: Swedish <https://translate.codeberg.org/projects/searxng/"
"searxng/sv/>\n"
"Language: sv\n" "Language: sv\n"
"Language-Team: Swedish "
"<https://translate.codeberg.org/projects/searxng/searxng/sv/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -324,17 +324,17 @@ msgstr "författare"
#. SOCIAL_MEDIA_TERMS['THREAD OPEN'] #. SOCIAL_MEDIA_TERMS['THREAD OPEN']
#: searx/engines/discourse.py:121 searx/searxng.msg #: searx/engines/discourse.py:121 searx/searxng.msg
msgid "open" msgid "open"
msgstr "" msgstr "öppna"
#. SOCIAL_MEDIA_TERMS['THREAD CLOSED'] #. SOCIAL_MEDIA_TERMS['THREAD CLOSED']
#: searx/engines/discourse.py:121 searx/searxng.msg #: searx/engines/discourse.py:121 searx/searxng.msg
msgid "closed" msgid "closed"
msgstr "" msgstr "stängd"
#. SOCIAL_MEDIA_TERMS['THREAD ANSWERED'] #. SOCIAL_MEDIA_TERMS['THREAD ANSWERED']
#: searx/engines/discourse.py:132 searx/searxng.msg #: searx/engines/discourse.py:132 searx/searxng.msg
msgid "answered" msgid "answered"
msgstr "" msgstr "svarad"
#: searx/webapp.py:330 #: searx/webapp.py:330
msgid "No item found" msgid "No item found"
@ -531,11 +531,13 @@ msgstr "Värdnamn satt"
#: searx/plugins/hostnames.py:68 #: searx/plugins/hostnames.py:68
msgid "Hostnames plugin" msgid "Hostnames plugin"
msgstr "" msgstr "Värdnamn plugin"
#: searx/plugins/hostnames.py:69 #: searx/plugins/hostnames.py:69
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname" msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
msgstr "" msgstr ""
"Skriva om värdnamn, ta bort resultat eller prioritera dem baserat på "
"värdnamnet"
#: searx/plugins/oa_doi_rewrite.py:12 #: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite" msgid "Open Access DOI rewrite"
@ -563,11 +565,11 @@ msgstr ""
#: searx/plugins/self_info.py:28 #: searx/plugins/self_info.py:28
msgid "Your IP is: " msgid "Your IP is: "
msgstr "" msgstr "Din IP address är: "
#: searx/plugins/self_info.py:31 #: searx/plugins/self_info.py:31
msgid "Your user-agent is: " msgid "Your user-agent is: "
msgstr "" msgstr "Din användaragent är: "
#: searx/plugins/tor_check.py:24 #: searx/plugins/tor_check.py:24
msgid "Tor check plugin" msgid "Tor check plugin"
@ -1946,4 +1948,3 @@ msgstr "göm video"
#~ msgid "TiB" #~ msgid "TiB"
#~ msgstr "TiB" #~ msgstr "TiB"

View file

@ -31,21 +31,22 @@
# jianhanquwan <jianhanquwan@users.noreply.translate.codeberg.org>, 2024. # jianhanquwan <jianhanquwan@users.noreply.translate.codeberg.org>, 2024.
# lcaopcn <lcaopcn@users.noreply.translate.codeberg.org>, 2024. # lcaopcn <lcaopcn@users.noreply.translate.codeberg.org>, 2024.
# chjtxwd <chjtxwd@users.noreply.translate.codeberg.org>, 2024. # chjtxwd <chjtxwd@users.noreply.translate.codeberg.org>, 2024.
# Jeex <Jeex@users.noreply.translate.codeberg.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: searx\n" "Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-17 12:15+0000\n" "POT-Creation-Date: 2024-06-17 12:15+0000\n"
"PO-Revision-Date: 2024-06-14 07:08+0000\n" "PO-Revision-Date: 2024-07-05 07:09+0000\n"
"Last-Translator: return42 <return42@users.noreply.translate.codeberg.org>" "Last-Translator: Jeex <Jeex@users.noreply.translate.codeberg.org>\n"
"\n" "Language-Team: Chinese (Simplified) <https://translate.codeberg.org/projects/"
"searxng/searxng/zh_Hans/>\n"
"Language: zh_Hans_CN\n" "Language: zh_Hans_CN\n"
"Language-Team: Chinese (Simplified) "
"<https://translate.codeberg.org/projects/searxng/searxng/zh_Hans/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.6.1\n"
"Generated-By: Babel 2.15.0\n" "Generated-By: Babel 2.15.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING'] #. CONSTANT_NAMES['NO_SUBGROUPING']
@ -201,7 +202,7 @@ msgstr "平均温度"
#. WEATHER_TERMS['CLOUD COVER'] #. WEATHER_TERMS['CLOUD COVER']
#: searx/searxng.msg #: searx/searxng.msg
msgid "Cloud cover" msgid "Cloud cover"
msgstr "" msgstr "云量"
#. WEATHER_TERMS['CONDITION'] #. WEATHER_TERMS['CONDITION']
#: searx/searxng.msg #: searx/searxng.msg
@ -541,7 +542,7 @@ msgstr "主机名插件"
#: searx/plugins/hostnames.py:69 #: searx/plugins/hostnames.py:69
msgid "Rewrite hostnames, remove results or prioritize them based on the hostname" msgid "Rewrite hostnames, remove results or prioritize them based on the hostname"
msgstr "" msgstr "重写主机名、删除结果或根据主机名确定优先级"
#: searx/plugins/oa_doi_rewrite.py:12 #: searx/plugins/oa_doi_rewrite.py:12
msgid "Open Access DOI rewrite" msgid "Open Access DOI rewrite"
@ -565,11 +566,11 @@ msgstr "当您搜索“ip”时这将会显示您的 IP 地址;同理,在
#: searx/plugins/self_info.py:28 #: searx/plugins/self_info.py:28
msgid "Your IP is: " msgid "Your IP is: "
msgstr "" msgstr "你的IP是 "
#: searx/plugins/self_info.py:31 #: searx/plugins/self_info.py:31
msgid "Your user-agent is: " msgid "Your user-agent is: "
msgstr "" msgstr "你的用户代理是: "
#: searx/plugins/tor_check.py:24 #: searx/plugins/tor_check.py:24
msgid "Tor check plugin" msgid "Tor check plugin"
@ -1887,4 +1888,3 @@ msgstr "隐藏视频"
#~ msgid "TiB" #~ msgid "TiB"
#~ msgstr "TiB" #~ msgstr "TiB"