forked from Ponysearch/Ponysearch
Merge branch 'searxng:master' into master
This commit is contained in:
commit
d81262aa5d
41 changed files with 9543 additions and 444 deletions
2
.github/workflows/integration.yml
vendored
2
.github/workflows/integration.yml
vendored
|
@ -16,7 +16,7 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-20.04]
|
os: [ubuntu-20.04]
|
||||||
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
|
python-version: ["3.8", "3.9", "3.10", "3.11"]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
mock==5.0.2
|
mock==5.0.2
|
||||||
nose2[coverage_plugin]==0.12.0
|
nose2[coverage_plugin]==0.13.0
|
||||||
cov-core==1.15.0
|
cov-core==1.15.0
|
||||||
black==22.12.0
|
black==22.12.0
|
||||||
pylint==2.17.2
|
pylint==2.17.3
|
||||||
splinter==0.19.0
|
splinter==0.19.0
|
||||||
selenium==4.9.0
|
selenium==4.9.0
|
||||||
twine==4.0.2
|
twine==4.0.2
|
||||||
Pallets-Sphinx-Themes==2.0.3
|
Pallets-Sphinx-Themes==2.1.0
|
||||||
Sphinx==5.3.0
|
Sphinx==6.2.1
|
||||||
sphinx-issues==3.0.1
|
sphinx-issues==3.0.1
|
||||||
sphinx-jinja==2.0.2
|
sphinx-jinja==2.0.2
|
||||||
sphinx-tabs==3.4.1
|
sphinx-tabs==3.4.1
|
||||||
|
@ -17,6 +17,6 @@ sphinx-notfound-page==0.8.3
|
||||||
myst-parser==1.0.0
|
myst-parser==1.0.0
|
||||||
linuxdoc==20230321
|
linuxdoc==20230321
|
||||||
aiounittest==1.4.2
|
aiounittest==1.4.2
|
||||||
yamllint==1.30.0
|
yamllint==1.31.0
|
||||||
wlc==1.13
|
wlc==1.13
|
||||||
coloredlogs==15.0.1
|
coloredlogs==15.0.1
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
certifi==2022.12.7
|
certifi==2022.12.7
|
||||||
babel==2.12.1
|
babel==2.12.1
|
||||||
flask-babel==3.1.0
|
flask-babel==3.1.0
|
||||||
flask==2.2.3
|
flask==2.3.2
|
||||||
jinja2==3.1.2
|
jinja2==3.1.2
|
||||||
lxml==4.9.2
|
lxml==4.9.2
|
||||||
pygments==2.15.1
|
pygments==2.15.1
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -991,6 +991,7 @@
|
||||||
"コロンビア・ペソ": "COP",
|
"コロンビア・ペソ": "COP",
|
||||||
"콜롬비아 페소": "COP",
|
"콜롬비아 페소": "COP",
|
||||||
"kolumbijos pesas": "COP",
|
"kolumbijos pesas": "COP",
|
||||||
|
"peso colombia": "COP",
|
||||||
"colombiaanse peso": "COP",
|
"colombiaanse peso": "COP",
|
||||||
"ਕੋਲੰਬੀਆਈ ਪੇਸੋ": "COP",
|
"ਕੋਲੰਬੀਆਈ ਪੇਸੋ": "COP",
|
||||||
"peso kolumbijskie": "COP",
|
"peso kolumbijskie": "COP",
|
||||||
|
@ -998,7 +999,6 @@
|
||||||
"колумбијски пезос": "COP",
|
"колумбијски пезос": "COP",
|
||||||
"kolombiya pesosu": "COP",
|
"kolombiya pesosu": "COP",
|
||||||
"колумбійський песо": "COP",
|
"колумбійський песо": "COP",
|
||||||
"peso colombia": "COP",
|
|
||||||
"costa ricaanse colón": "CRC",
|
"costa ricaanse colón": "CRC",
|
||||||
"كولون كوستاريكي": "CRC",
|
"كولون كوستاريكي": "CRC",
|
||||||
"костарикански колон": "CRC",
|
"костарикански колон": "CRC",
|
||||||
|
@ -2020,11 +2020,11 @@
|
||||||
"שילינג קנייתי": "KES",
|
"שילינג קנייתי": "KES",
|
||||||
"kenijski šiling": "KES",
|
"kenijski šiling": "KES",
|
||||||
"kenyai shilling": "KES",
|
"kenyai shilling": "KES",
|
||||||
"shilling kenya": "KES",
|
|
||||||
"scellino keniota": "KES",
|
"scellino keniota": "KES",
|
||||||
"ケニア・シリング": "KES",
|
"ケニア・シリング": "KES",
|
||||||
"케냐 실링": "KES",
|
"케냐 실링": "KES",
|
||||||
"kenijos šilingas": "KES",
|
"kenijos šilingas": "KES",
|
||||||
|
"shilling kenya": "KES",
|
||||||
"keniaanse shilling": "KES",
|
"keniaanse shilling": "KES",
|
||||||
"szyling kenijski": "KES",
|
"szyling kenijski": "KES",
|
||||||
"xelim queniano": "KES",
|
"xelim queniano": "KES",
|
||||||
|
@ -2178,6 +2178,7 @@
|
||||||
"won sul coreano": "KRW",
|
"won sul coreano": "KRW",
|
||||||
"won sud coreean": "KRW",
|
"won sud coreean": "KRW",
|
||||||
"южнокорейская вона": "KRW",
|
"южнокорейская вона": "KRW",
|
||||||
|
"južnokorejski won": "KRW",
|
||||||
"јужнокорејски вон": "KRW",
|
"јужнокорејски вон": "KRW",
|
||||||
"sydkoreansk won": "KRW",
|
"sydkoreansk won": "KRW",
|
||||||
"güney kore wonu": "KRW",
|
"güney kore wonu": "KRW",
|
||||||
|
@ -2622,7 +2623,7 @@
|
||||||
"ugiya": "MRU",
|
"ugiya": "MRU",
|
||||||
"мавританська угія": "MRU",
|
"мавританська угія": "MRU",
|
||||||
"mauritiaanse roepee": "MUR",
|
"mauritiaanse roepee": "MUR",
|
||||||
"روبي موريشي": "MUR",
|
"روبية موريشية": "MUR",
|
||||||
"rupia de maurici": "MUR",
|
"rupia de maurici": "MUR",
|
||||||
"mauricijská rupie": "MUR",
|
"mauricijská rupie": "MUR",
|
||||||
"mauritiske rupee": "MUR",
|
"mauritiske rupee": "MUR",
|
||||||
|
@ -4646,7 +4647,7 @@
|
||||||
"zambiya kvaçası": "ZMW",
|
"zambiya kvaçası": "ZMW",
|
||||||
"замбійська квача": "ZMW",
|
"замбійська квача": "ZMW",
|
||||||
"zimbabwean dollar": "ZWL",
|
"zimbabwean dollar": "ZWL",
|
||||||
"dólar rtgs": "ZWL",
|
"dólar zimbabuense": "ZWL",
|
||||||
"real time gross settlement dollar": "ZWL",
|
"real time gross settlement dollar": "ZWL",
|
||||||
"dollaro rtgs": "ZWL",
|
"dollaro rtgs": "ZWL",
|
||||||
"rtgsドル": "ZWL",
|
"rtgsドル": "ZWL",
|
||||||
|
@ -4926,12 +4927,9 @@
|
||||||
"peso ley": "ARS",
|
"peso ley": "ARS",
|
||||||
"peso moneda nacional": "ARS",
|
"peso moneda nacional": "ARS",
|
||||||
"pesos argentinos": "ARS",
|
"pesos argentinos": "ARS",
|
||||||
"nuevo peso argentino": "ARS",
|
"argentine convertible peso": "ARS",
|
||||||
"peso convertible": "ARS",
|
"peso convertible argentina": "ARS",
|
||||||
"peso convertible argentino": "ARS",
|
"peso argentino convertible": "ARS",
|
||||||
"peso de argentina": "ARS",
|
|
||||||
"peso dolar": "ARS",
|
|
||||||
"peso dólar": "ARS",
|
|
||||||
"argentinar peso": "ARS",
|
"argentinar peso": "ARS",
|
||||||
"nuevo peso": [
|
"nuevo peso": [
|
||||||
"UYU",
|
"UYU",
|
||||||
|
@ -4942,6 +4940,7 @@
|
||||||
"פסו ארגנטיני": "ARS",
|
"פסו ארגנטיני": "ARS",
|
||||||
"argentinski peso": "ARS",
|
"argentinski peso": "ARS",
|
||||||
"nuovo peso argentino": "ARS",
|
"nuovo peso argentino": "ARS",
|
||||||
|
"peso convertible": "ARS",
|
||||||
"peso da argentina": "ARS",
|
"peso da argentina": "ARS",
|
||||||
"валюта аргентины": "ARS",
|
"валюта аргентины": "ARS",
|
||||||
"песо": [
|
"песо": [
|
||||||
|
@ -6801,10 +6800,10 @@
|
||||||
"jeon": "KRW",
|
"jeon": "KRW",
|
||||||
"lõuna korea won": "KRW",
|
"lõuna korea won": "KRW",
|
||||||
"韓国ウォン": "KRW",
|
"韓国ウォン": "KRW",
|
||||||
"대한민국 전": "KRW",
|
"대한민국원": "KRW",
|
||||||
|
"대한민국 통화": "KRW",
|
||||||
"대한민국 화폐": "KRW",
|
"대한민국 화폐": "KRW",
|
||||||
"대한민국의 통화": "KRW",
|
"대한민국전": "KRW",
|
||||||
"대한민국의 화폐": "KRW",
|
|
||||||
"won sud corean": "KRW",
|
"won sud corean": "KRW",
|
||||||
"валюта республики корея": "KRW",
|
"валюта республики корея": "KRW",
|
||||||
"วอนเกาหลีใต้": "KRW",
|
"วอนเกาหลีใต้": "KRW",
|
||||||
|
@ -7239,6 +7238,7 @@
|
||||||
"moritanya ouguiyası": "MRU",
|
"moritanya ouguiyası": "MRU",
|
||||||
"moritanya ugiyası": "MRU",
|
"moritanya ugiyası": "MRU",
|
||||||
"ougiya": "MRU",
|
"ougiya": "MRU",
|
||||||
|
"روبي موريشي": "MUR",
|
||||||
"mur": "MUR",
|
"mur": "MUR",
|
||||||
"mauritisk rupee": "MUR",
|
"mauritisk rupee": "MUR",
|
||||||
"mauritius rupee": "MUR",
|
"mauritius rupee": "MUR",
|
||||||
|
@ -8161,7 +8161,6 @@
|
||||||
"libra del sudán": "SDG",
|
"libra del sudán": "SDG",
|
||||||
"dinar soudanais": "SDG",
|
"dinar soudanais": "SDG",
|
||||||
"לירה סודאנית": "SDG",
|
"לירה סודאנית": "SDG",
|
||||||
"수단파운드": "SDG",
|
|
||||||
"soedanese pond": "SDG",
|
"soedanese pond": "SDG",
|
||||||
"валюта судана": "SDG",
|
"валюта судана": "SDG",
|
||||||
"sdd": "SDG",
|
"sdd": "SDG",
|
||||||
|
@ -9267,6 +9266,7 @@
|
||||||
"zwl": "ZWL",
|
"zwl": "ZWL",
|
||||||
"zimdollar": "ZWL",
|
"zimdollar": "ZWL",
|
||||||
"fifth zimbabwean dollar": "ZWL",
|
"fifth zimbabwean dollar": "ZWL",
|
||||||
|
"dólar rtgs": "ZWL",
|
||||||
"pesos": [
|
"pesos": [
|
||||||
"MXN"
|
"MXN"
|
||||||
]
|
]
|
||||||
|
@ -9545,9 +9545,9 @@
|
||||||
"ca": "peso argentí",
|
"ca": "peso argentí",
|
||||||
"cs": "Argentinské peso",
|
"cs": "Argentinské peso",
|
||||||
"de": "argentinischer Peso",
|
"de": "argentinischer Peso",
|
||||||
"en": "Argentine peso",
|
"en": "Argentine convertible peso",
|
||||||
"eo": "argentina peso",
|
"eo": "argentina peso",
|
||||||
"es": "peso argentino",
|
"es": "peso argentino convertible",
|
||||||
"et": "Argentina peeso",
|
"et": "Argentina peeso",
|
||||||
"eu": "Argentinar peso",
|
"eu": "Argentinar peso",
|
||||||
"fi": "Argentiinan peso",
|
"fi": "Argentiinan peso",
|
||||||
|
@ -10495,6 +10495,7 @@
|
||||||
"ja": "コロンビア・ペソ",
|
"ja": "コロンビア・ペソ",
|
||||||
"ko": "콜롬비아 페소",
|
"ko": "콜롬비아 페소",
|
||||||
"lt": "Kolumbijos pesas",
|
"lt": "Kolumbijos pesas",
|
||||||
|
"ms": "Peso Colombia",
|
||||||
"nl": "Colombiaanse peso",
|
"nl": "Colombiaanse peso",
|
||||||
"pa": "ਕੋਲੰਬੀਆਈ ਪੇਸੋ",
|
"pa": "ਕੋਲੰਬੀਆਈ ਪੇਸੋ",
|
||||||
"pap": "Peso colombiano",
|
"pap": "Peso colombiano",
|
||||||
|
@ -12238,6 +12239,7 @@
|
||||||
"ja": "リベリア・ドル",
|
"ja": "リベリア・ドル",
|
||||||
"ko": "라이베리아 달러",
|
"ko": "라이베리아 달러",
|
||||||
"lt": "Liberijos doleris",
|
"lt": "Liberijos doleris",
|
||||||
|
"ms": "Dolar Liberia",
|
||||||
"nl": "Liberiaanse dollar",
|
"nl": "Liberiaanse dollar",
|
||||||
"pl": "Dolar liberyjski",
|
"pl": "Dolar liberyjski",
|
||||||
"pt": "Dólar liberiano",
|
"pt": "Dólar liberiano",
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3697,6 +3697,7 @@
|
||||||
"eu",
|
"eu",
|
||||||
"ext",
|
"ext",
|
||||||
"fa",
|
"fa",
|
||||||
|
"fat",
|
||||||
"ff",
|
"ff",
|
||||||
"fi",
|
"fi",
|
||||||
"fiu-vro",
|
"fiu-vro",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"versions": [
|
"versions": [
|
||||||
"111.0",
|
"112.0",
|
||||||
"110.0"
|
"111.0"
|
||||||
],
|
],
|
||||||
"os": [
|
"os": [
|
||||||
"Windows NT 10.0; Win64; x64",
|
"Windows NT 10.0; Win64; x64",
|
||||||
|
|
|
@ -323,6 +323,7 @@
|
||||||
"Q169893": "S",
|
"Q169893": "S",
|
||||||
"Q170804": "Wb",
|
"Q170804": "Wb",
|
||||||
"Q17093295": "m/h",
|
"Q17093295": "m/h",
|
||||||
|
"Q17143051": "Tf",
|
||||||
"Q17255465": "v_P",
|
"Q17255465": "v_P",
|
||||||
"Q173117": "R$",
|
"Q173117": "R$",
|
||||||
"Q1741429": "kpm",
|
"Q1741429": "kpm",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
from urllib.parse import quote_plus
|
from urllib.parse import quote_plus, urlparse
|
||||||
from searx.data import EXTERNAL_BANGS
|
from searx.data import EXTERNAL_BANGS
|
||||||
|
|
||||||
LEAF_KEY = chr(16)
|
LEAF_KEY = chr(16)
|
||||||
|
@ -40,9 +40,15 @@ def get_bang_definition_and_ac(external_bangs_db, bang):
|
||||||
|
|
||||||
def resolve_bang_definition(bang_definition, query):
|
def resolve_bang_definition(bang_definition, query):
|
||||||
url, rank = bang_definition.split(chr(1))
|
url, rank = bang_definition.split(chr(1))
|
||||||
url = url.replace(chr(2), quote_plus(query))
|
|
||||||
if url.startswith('//'):
|
if url.startswith('//'):
|
||||||
url = 'https:' + url
|
url = 'https:' + url
|
||||||
|
if query:
|
||||||
|
url = url.replace(chr(2), quote_plus(query))
|
||||||
|
else:
|
||||||
|
# go to main instead of search page
|
||||||
|
o = urlparse(url)
|
||||||
|
url = o.scheme + '://' + o.netloc
|
||||||
|
|
||||||
rank = int(rank) if len(rank) > 0 else 0
|
rank = int(rank) if len(rank) > 0 else 0
|
||||||
return (url, rank)
|
return (url, rank)
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ block_user_agent = re.compile(
|
||||||
# unmaintained Farside instances
|
# unmaintained Farside instances
|
||||||
+ r'|'
|
+ r'|'
|
||||||
+ re.escape(r'Mozilla/5.0 (compatible; Farside/0.1.0; +https://farside.link)')
|
+ re.escape(r'Mozilla/5.0 (compatible; Farside/0.1.0; +https://farside.link)')
|
||||||
|
+ '|.*PetalBot.*'
|
||||||
+ r')'
|
+ r')'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,10 @@
|
||||||
from base64 import urlsafe_b64encode, urlsafe_b64decode
|
from base64 import urlsafe_b64encode, urlsafe_b64decode
|
||||||
from zlib import compress, decompress
|
from zlib import compress, decompress
|
||||||
from urllib.parse import parse_qs, urlencode
|
from urllib.parse import parse_qs, urlencode
|
||||||
from typing import Iterable, Dict, List
|
from typing import Iterable, Dict, List, Optional
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
import babel
|
||||||
|
|
||||||
from searx import settings, autocomplete
|
from searx import settings, autocomplete
|
||||||
from searx.enginelib import Engine
|
from searx.enginelib import Engine
|
||||||
|
@ -287,10 +288,65 @@ class PluginsSetting(BooleanChoices):
|
||||||
return [item[len('plugin_') :] for item in items]
|
return [item[len('plugin_') :] for item in items]
|
||||||
|
|
||||||
|
|
||||||
|
class ClientPref:
|
||||||
|
"""Container to assemble client prefferences and settings."""
|
||||||
|
|
||||||
|
# hint: searx.webapp.get_client_settings should be moved into this class
|
||||||
|
|
||||||
|
locale: babel.Locale
|
||||||
|
"""Locale prefered by the client."""
|
||||||
|
|
||||||
|
def __init__(self, locale: Optional[babel.Locale] = None):
|
||||||
|
self.locale = locale
|
||||||
|
|
||||||
|
@property
|
||||||
|
def locale_tag(self):
|
||||||
|
if self.locale is None:
|
||||||
|
return None
|
||||||
|
tag = self.locale.language
|
||||||
|
if self.locale.territory:
|
||||||
|
tag += '-' + self.locale.territory
|
||||||
|
return tag
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_http_request(cls, http_request: flask.Request):
|
||||||
|
"""Build ClientPref object from HTTP request.
|
||||||
|
|
||||||
|
- `Accept-Language used for locale setting
|
||||||
|
<https://www.w3.org/International/questions/qa-accept-lang-locales.en>`__
|
||||||
|
|
||||||
|
"""
|
||||||
|
al_header = http_request.headers.get("Accept-Language")
|
||||||
|
if not al_header:
|
||||||
|
return cls(locale=None)
|
||||||
|
|
||||||
|
pairs = []
|
||||||
|
for l in al_header.split(','):
|
||||||
|
# fmt: off
|
||||||
|
lang, qvalue = [_.strip() for _ in (l.split(';') + ['q=1',])[:2]]
|
||||||
|
# fmt: on
|
||||||
|
try:
|
||||||
|
qvalue = float(qvalue.split('=')[-1])
|
||||||
|
locale = babel.Locale.parse(lang, sep='-')
|
||||||
|
except (ValueError, babel.core.UnknownLocaleError):
|
||||||
|
continue
|
||||||
|
pairs.append((locale, qvalue))
|
||||||
|
pairs.sort(reverse=True, key=lambda x: x[1])
|
||||||
|
return cls(locale=pairs[0][0])
|
||||||
|
|
||||||
|
|
||||||
class Preferences:
|
class Preferences:
|
||||||
"""Validates and saves preferences to cookies"""
|
"""Validates and saves preferences to cookies"""
|
||||||
|
|
||||||
def __init__(self, themes: List[str], categories: List[str], engines: Dict[str, Engine], plugins: Iterable[Plugin]):
|
def __init__(
|
||||||
|
self,
|
||||||
|
themes: List[str],
|
||||||
|
categories: List[str],
|
||||||
|
engines: Dict[str, Engine],
|
||||||
|
plugins: Iterable[Plugin],
|
||||||
|
client: Optional[ClientPref] = None,
|
||||||
|
):
|
||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.key_value_settings: Dict[str, Setting] = {
|
self.key_value_settings: Dict[str, Setting] = {
|
||||||
|
@ -414,6 +470,7 @@ class Preferences:
|
||||||
self.engines = EnginesSetting('engines', engines=engines.values())
|
self.engines = EnginesSetting('engines', engines=engines.values())
|
||||||
self.plugins = PluginsSetting('plugins', plugins=plugins)
|
self.plugins = PluginsSetting('plugins', plugins=plugins)
|
||||||
self.tokens = SetSetting('tokens')
|
self.tokens = SetSetting('tokens')
|
||||||
|
self.client = client or ClientPref()
|
||||||
self.unknown_params: Dict[str, str] = {}
|
self.unknown_params: Dict[str, str] = {}
|
||||||
|
|
||||||
def get_as_url_params(self):
|
def get_as_url_params(self):
|
||||||
|
|
|
@ -22,7 +22,6 @@ from searx.network import initialize as initialize_network, check_network_config
|
||||||
from searx.metrics import initialize as initialize_metrics, counter_inc, histogram_observe_time
|
from searx.metrics import initialize as initialize_metrics, counter_inc, histogram_observe_time
|
||||||
from searx.search.processors import PROCESSORS, initialize as initialize_processors
|
from searx.search.processors import PROCESSORS, initialize as initialize_processors
|
||||||
from searx.search.checker import initialize as initialize_checker
|
from searx.search.checker import initialize as initialize_checker
|
||||||
from searx.utils import detect_language
|
|
||||||
|
|
||||||
|
|
||||||
logger = logger.getChild('search')
|
logger = logger.getChild('search')
|
||||||
|
@ -40,57 +39,19 @@ def initialize(settings_engines=None, enable_checker=False, check_network=False,
|
||||||
initialize_checker()
|
initialize_checker()
|
||||||
|
|
||||||
|
|
||||||
def replace_auto_language(search_query: SearchQuery):
|
|
||||||
"""
|
|
||||||
Do nothing except if `search_query.lang` is "auto".
|
|
||||||
In this case:
|
|
||||||
* the value "auto" is replaced by the detected language of the query.
|
|
||||||
The default value is "all" when no language is detected.
|
|
||||||
* `search_query.locale` is updated accordingly
|
|
||||||
|
|
||||||
Use :py:obj:`searx.utils.detect_language` with `only_search_languages=True` to keep
|
|
||||||
only languages supported by the engines.
|
|
||||||
"""
|
|
||||||
if search_query.lang != 'auto':
|
|
||||||
return
|
|
||||||
|
|
||||||
detected_lang = detect_language(search_query.query, threshold=0.3, only_search_languages=True)
|
|
||||||
if detected_lang is None:
|
|
||||||
# fallback to 'all' if no language has been detected
|
|
||||||
search_query.lang = 'all'
|
|
||||||
search_query.locale = None
|
|
||||||
return
|
|
||||||
search_query.lang = detected_lang
|
|
||||||
try:
|
|
||||||
search_query.locale = babel.Locale.parse(search_query.lang)
|
|
||||||
except babel.core.UnknownLocaleError:
|
|
||||||
search_query.locale = None
|
|
||||||
|
|
||||||
|
|
||||||
class Search:
|
class Search:
|
||||||
"""Search information container"""
|
"""Search information container"""
|
||||||
|
|
||||||
__slots__ = "search_query", "result_container", "start_time", "actual_timeout"
|
__slots__ = "search_query", "result_container", "start_time", "actual_timeout"
|
||||||
|
|
||||||
def __init__(self, search_query: SearchQuery):
|
def __init__(self, search_query: SearchQuery):
|
||||||
"""Initialize the Search
|
"""Initialize the Search"""
|
||||||
|
|
||||||
search_query is copied
|
|
||||||
"""
|
|
||||||
# init vars
|
# init vars
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self.search_query = search_query
|
||||||
self.result_container = ResultContainer()
|
self.result_container = ResultContainer()
|
||||||
self.start_time = None
|
self.start_time = None
|
||||||
self.actual_timeout = None
|
self.actual_timeout = None
|
||||||
self.search_query = copy(search_query)
|
|
||||||
self.update_search_query(self.search_query)
|
|
||||||
|
|
||||||
def update_search_query(self, search_query: SearchQuery):
|
|
||||||
"""Update search_query.
|
|
||||||
|
|
||||||
call replace_auto_language to replace the "auto" language
|
|
||||||
"""
|
|
||||||
replace_auto_language(search_query)
|
|
||||||
|
|
||||||
def search_external_bang(self):
|
def search_external_bang(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -31,7 +31,7 @@ search:
|
||||||
autocomplete_min: 4
|
autocomplete_min: 4
|
||||||
# Default search language - leave blank to detect from browser information or
|
# Default search language - leave blank to detect from browser information or
|
||||||
# use codes from 'languages.py'
|
# use codes from 'languages.py'
|
||||||
default_lang: ""
|
default_lang: "auto"
|
||||||
# Available languages
|
# Available languages
|
||||||
# languages:
|
# languages:
|
||||||
# - all
|
# - all
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"eslint": "^8.18.0",
|
"eslint": "^8.18.0",
|
||||||
"grunt": "~1.6.1",
|
"grunt": "~1.6.1",
|
||||||
"grunt-contrib-copy": "^1.0.0",
|
"grunt-contrib-copy": "^1.0.0",
|
||||||
"grunt-contrib-cssmin": "^4.0.0",
|
"grunt-contrib-cssmin": "^5.0.0",
|
||||||
"grunt-contrib-less": "~3.0.0",
|
"grunt-contrib-less": "~3.0.0",
|
||||||
"grunt-contrib-uglify": "~5.2.1",
|
"grunt-contrib-uglify": "~5.2.1",
|
||||||
"grunt-xmlmin": "~0.1.8",
|
"grunt-xmlmin": "~0.1.8",
|
||||||
|
|
Binary file not shown.
|
@ -6,20 +6,22 @@
|
||||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||||
# Sean Botha <seanbotha@gmail.com>, 2022.
|
# Sean Botha <seanbotha@gmail.com>, 2022.
|
||||||
# jestie <jestie@gmail.com>, 2023.
|
# jestie <jestie@gmail.com>, 2023.
|
||||||
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-02-14 09:56+0000\n"
|
"PO-Revision-Date: 2023-04-26 14:37+0000\n"
|
||||||
"Last-Translator: jestie <jestie@gmail.com>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Afrikaans <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/af/>\n"
|
||||||
"Language: af\n"
|
"Language: af\n"
|
||||||
"Language-Team: Afrikaans "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/af/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -390,6 +392,8 @@ msgid ""
|
||||||
"You are using Tor and it looks like you have this external IP address: "
|
"You are using Tor and it looks like you have this external IP address: "
|
||||||
"{ip_address}"
|
"{ip_address}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Jy maak gebruik van Tor en dit lys as of jy hierdie eksterne IP-adres het "
|
||||||
|
":{ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:86
|
#: searx/plugins/tor_check.py:86
|
||||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||||
|
@ -1298,4 +1302,3 @@ msgstr ""
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -17,22 +17,23 @@ 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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-03-13 18:37+0000\n"
|
"PO-Revision-Date: 2023-04-26 14:37+0000\n"
|
||||||
"Last-Translator: Cavemanly <k.adel.2m@protonmail.com>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "بدون تقسيم"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -1572,4 +1573,3 @@ msgstr "إخفاء الفيديو"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -8,20 +8,22 @@
|
||||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||||
# NxOne14 <kiril2315@gmail.com>, 2022.
|
# NxOne14 <kiril2315@gmail.com>, 2022.
|
||||||
# vynaaa <stefanovpower@abv.bg>, 2022.
|
# vynaaa <stefanovpower@abv.bg>, 2022.
|
||||||
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2022-11-11 07:18+0000\n"
|
"PO-Revision-Date: 2023-05-04 19:37+0000\n"
|
||||||
"Last-Translator: vynaaa <stefanovpower@abv.bg>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Bulgarian <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/bg/>\n"
|
||||||
"Language: bg\n"
|
"Language: bg\n"
|
||||||
"Language-Team: Bulgarian "
|
|
||||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/bg/>\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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -112,7 +114,7 @@ msgstr "пакети"
|
||||||
#. CATEGORY_GROUPS['Q_A']
|
#. CATEGORY_GROUPS['Q_A']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "q&a"
|
msgid "q&a"
|
||||||
msgstr "в&о"
|
msgstr "въпроси и отговори"
|
||||||
|
|
||||||
#. CATEGORY_GROUPS['REPOS']
|
#. CATEGORY_GROUPS['REPOS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -1566,4 +1568,3 @@ msgstr "скрий видеото"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -25,7 +25,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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-04-11 16:37+0000\n"
|
"PO-Revision-Date: 2023-04-28 07:08+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
"Language-Team: German <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: German <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/de/>\n"
|
"searxng/de/>\n"
|
||||||
|
@ -34,7 +34,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 4.16.4\n"
|
"X-Generator: Weblate 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -619,9 +619,7 @@ msgstr "Welche Sprache oder Region soll bei der Suche bevorzugt werden?"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:127
|
#: searx/templates/simple/preferences.html:127
|
||||||
msgid "Choose Auto-detect to let SearXNG detect the language of your query."
|
msgid "Choose Auto-detect to let SearXNG detect the language of your query."
|
||||||
msgstr ""
|
msgstr "Mit der Spracherkennung wird die Sprache automatisch erkannt."
|
||||||
"Welche Sprache oder Region soll bei der Suche bevorzugt werden? Mit der "
|
|
||||||
"Spracherkennung wird die Sprache automatisch erkannt."
|
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:133
|
#: searx/templates/simple/preferences.html:133
|
||||||
msgid "Autocomplete"
|
msgid "Autocomplete"
|
||||||
|
@ -629,7 +627,7 @@ msgstr "Autovervollständigung"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:142
|
#: searx/templates/simple/preferences.html:142
|
||||||
msgid "Find stuff as you type"
|
msgid "Find stuff as you type"
|
||||||
msgstr "zeige Vorschläge während der Eingabe an"
|
msgstr "Die Autovervollständigung zeigt Vorschläge während der Eingabe an."
|
||||||
|
|
||||||
#: searx/templates/simple/filters/safesearch.html:1
|
#: searx/templates/simple/filters/safesearch.html:1
|
||||||
#: searx/templates/simple/filters/safesearch.html:2
|
#: searx/templates/simple/filters/safesearch.html:2
|
||||||
|
|
Binary file not shown.
|
@ -25,13 +25,14 @@
|
||||||
# zDylant <dylantfcs@gmail.com>, 2022.
|
# zDylant <dylantfcs@gmail.com>, 2022.
|
||||||
# mester <oscarodriguez56@gmail.com>, 2023.
|
# mester <oscarodriguez56@gmail.com>, 2023.
|
||||||
# gallegonovato <fran-carro@hotmail.es>, 2023.
|
# gallegonovato <fran-carro@hotmail.es>, 2023.
|
||||||
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-04-11 16:37+0000\n"
|
"PO-Revision-Date: 2023-05-04 19:37+0000\n"
|
||||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/es/>\n"
|
"searxng/es/>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
|
@ -39,7 +40,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 4.16.4\n"
|
"X-Generator: Weblate 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -820,7 +821,7 @@ msgstr "Nombre del motor de búsqueda"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:313
|
#: searx/templates/simple/preferences.html:313
|
||||||
msgid "Bang"
|
msgid "Bang"
|
||||||
msgstr "Bang"
|
msgstr "!bang"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:314
|
#: searx/templates/simple/preferences.html:314
|
||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
|
|
Binary file not shown.
|
@ -10,26 +10,28 @@
|
||||||
# Noémi Ványi <sitbackandwait@gmail.com>, 2020
|
# Noémi Ványi <sitbackandwait@gmail.com>, 2020
|
||||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022, 2023.
|
# Markus Heiser <markus.heiser@darmarit.de>, 2022, 2023.
|
||||||
# Babak Ahari <babak.ahari@gmail.com>, 2022.
|
# Babak Ahari <babak.ahari@gmail.com>, 2022.
|
||||||
|
# Parsa Ranjbar <parsa@disr.it>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-01-13 07:14+0000\n"
|
"PO-Revision-Date: 2023-04-24 16:37+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: Parsa Ranjbar <parsa@disr.it>\n"
|
||||||
|
"Language-Team: Persian <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/fa/>\n"
|
||||||
"Language: fa_IR\n"
|
"Language: fa_IR\n"
|
||||||
"Language-Team: Persian "
|
|
||||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/fa/>\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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "بدون زیر گروه بندی بیشتر"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -1566,4 +1568,3 @@ msgstr "پنهانسازی ویدئو"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -7,20 +7,22 @@
|
||||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022, 2023.
|
# Markus Heiser <markus.heiser@darmarit.de>, 2022, 2023.
|
||||||
# Mico Hautaluoma <m@mha.fi>, 2022.
|
# Mico Hautaluoma <m@mha.fi>, 2022.
|
||||||
# return42 <markus.heiser@darmarit.de>, 2023.
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
|
# artnay <jiri.gronroos@iki.fi>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-02-19 11:39+0000\n"
|
"PO-Revision-Date: 2023-05-04 19:37+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: artnay <jiri.gronroos@iki.fi>\n"
|
||||||
|
"Language-Team: Finnish <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/fi/>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"Language-Team: Finnish "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/fi/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -390,10 +392,13 @@ msgid ""
|
||||||
"You are using Tor and it looks like you have this external IP address: "
|
"You are using Tor and it looks like you have this external IP address: "
|
||||||
"{ip_address}"
|
"{ip_address}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Käytät Tor-verkkoa ja vaikuttaa siltä, että sinulla on tämä ulkoinen IP-"
|
||||||
|
"osoite: {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:86
|
#: searx/plugins/tor_check.py:86
|
||||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Et käytä Tor-verkkoa ja sinulla on tämä ulkoinen IP-osoite: {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tracker_url_remover.py:29
|
#: searx/plugins/tracker_url_remover.py:29
|
||||||
msgid "Tracker URL remover"
|
msgid "Tracker URL remover"
|
||||||
|
@ -581,7 +586,7 @@ msgstr "Oletuskieli"
|
||||||
#: searx/templates/simple/filters/languages.html:4
|
#: searx/templates/simple/filters/languages.html:4
|
||||||
#: searx/templates/simple/preferences.html:120
|
#: searx/templates/simple/preferences.html:120
|
||||||
msgid "Auto-detect"
|
msgid "Auto-detect"
|
||||||
msgstr ""
|
msgstr "Havaitse automaattisesti"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:127
|
#: searx/templates/simple/preferences.html:127
|
||||||
msgid "What language do you prefer for search?"
|
msgid "What language do you prefer for search?"
|
||||||
|
@ -590,6 +595,8 @@ msgstr "Millä kielellä haluat etsiä ensisijaisesti?"
|
||||||
#: searx/templates/simple/preferences.html:127
|
#: searx/templates/simple/preferences.html:127
|
||||||
msgid "Choose Auto-detect to let SearXNG detect the language of your query."
|
msgid "Choose Auto-detect to let SearXNG detect the language of your query."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Valitse \"Havaitse automaattisesti\", jotta SearXNG havaitsee haun kielen "
|
||||||
|
"automaattisesti."
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:133
|
#: searx/templates/simple/preferences.html:133
|
||||||
msgid "Autocomplete"
|
msgid "Autocomplete"
|
||||||
|
@ -725,6 +732,9 @@ msgid ""
|
||||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||||
" rel=\"external\">learn more about request methods</a>"
|
" rel=\"external\">learn more about request methods</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Vaihda tapaa miten lomakkeet lähetetään, <a href=\"http://en.wikipedia.org/"
|
||||||
|
"wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\""
|
||||||
|
">lisätietoja eri pyyntömenetelmistä</a>"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:273
|
#: searx/templates/simple/preferences.html:273
|
||||||
msgid "Image proxy"
|
msgid "Image proxy"
|
||||||
|
@ -1143,7 +1153,7 @@ msgstr "Journaali"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:22
|
#: searx/templates/simple/result_templates/paper.html:22
|
||||||
msgid "Editor"
|
msgid "Editor"
|
||||||
msgstr ""
|
msgstr "Editori"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:23
|
#: searx/templates/simple/result_templates/paper.html:23
|
||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
|
@ -1151,7 +1161,7 @@ msgstr "Julkaisija"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:24
|
#: searx/templates/simple/result_templates/paper.html:24
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr "Tyyppi"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/paper.html:25
|
#: searx/templates/simple/result_templates/paper.html:25
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
|
@ -1565,4 +1575,3 @@ msgstr "piilota video"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -21,7 +21,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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-04-14 06:37+0000\n"
|
"PO-Revision-Date: 2023-05-04 19:37+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\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"
|
||||||
|
@ -30,7 +30,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 4.16.4\n"
|
"X-Generator: Weblate 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
|
@ -548,11 +548,11 @@ msgstr "Afficher les journaux d'erreurs et soumettre un rapport de bogue"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:35
|
#: searx/templates/simple/preferences.html:35
|
||||||
msgid "!bang for this engine"
|
msgid "!bang for this engine"
|
||||||
msgstr ""
|
msgstr "!bang pour ce moteur de recherche"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:36
|
#: searx/templates/simple/preferences.html:36
|
||||||
msgid "!bang for its categories"
|
msgid "!bang for its categories"
|
||||||
msgstr ""
|
msgstr "!bang pour ses catégories"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:54
|
#: searx/templates/simple/preferences.html:54
|
||||||
#: searx/templates/simple/stats.html:64
|
#: searx/templates/simple/stats.html:64
|
||||||
|
@ -793,6 +793,8 @@ msgid ""
|
||||||
"This tab dues not exists in the user interface, but you can search in "
|
"This tab dues not exists in the user interface, but you can search in "
|
||||||
"these engines by its !bangs."
|
"these engines by its !bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Cet onglet n'existe pas dans l'interface utilisateur, mais vous pouvez "
|
||||||
|
"effectuer des recherches dans ces moteurs grâce à ses !bangs."
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:311
|
#: searx/templates/simple/preferences.html:311
|
||||||
#: searx/templates/simple/preferences.html:365
|
#: searx/templates/simple/preferences.html:365
|
||||||
|
@ -806,7 +808,7 @@ msgstr "Nom du moteur"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:313
|
#: searx/templates/simple/preferences.html:313
|
||||||
msgid "Bang"
|
msgid "Bang"
|
||||||
msgstr ""
|
msgstr "!bang"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:314
|
#: searx/templates/simple/preferences.html:314
|
||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
|
|
Binary file not shown.
|
@ -16,21 +16,22 @@ 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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-04-03 06:37+0000\n"
|
"PO-Revision-Date: 2023-05-01 07:37+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Hungarian <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/hu/>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"Language-Team: Hungarian "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/hu/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "további alcsoportosítás nélkül"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -1571,4 +1572,3 @@ msgstr "videó elrejtése"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -11,21 +11,22 @@ 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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-04-03 06:37+0000\n"
|
"PO-Revision-Date: 2023-05-02 08:37+0000\n"
|
||||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Norwegian Bokmål <https://translate.codeberg.org/projects/"
|
||||||
|
"searxng/searxng/nb_NO/>\n"
|
||||||
"Language: nb_NO\n"
|
"Language: nb_NO\n"
|
||||||
"Language-Team: Norwegian Bokmål "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/nb_NO/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "uten ytterligere undergruppering"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -1485,4 +1486,3 @@ msgstr "skjul video"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -8,27 +8,29 @@
|
||||||
# jugi1, 2017
|
# jugi1, 2017
|
||||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||||
# SecularSteve <fairfull.playing@gmail.com>, 2022.
|
# SecularSteve <fairfull.playing@gmail.com>, 2022.
|
||||||
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2022-11-19 16:21+0000\n"
|
"PO-Revision-Date: 2023-04-26 14:37+0000\n"
|
||||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||||
|
"Language-Team: Serbian <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/sr/>\n"
|
||||||
"Language: sr\n"
|
"Language: sr\n"
|
||||||
"Language-Team: Serbian "
|
|
||||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/sr/>\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
|
||||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"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=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
|
"X-Generator: Weblate 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "bez daljeg podgrupisanja"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -390,6 +392,7 @@ msgid ""
|
||||||
"You are using Tor and it looks like you have this external IP address: "
|
"You are using Tor and it looks like you have this external IP address: "
|
||||||
"{ip_address}"
|
"{ip_address}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Koristis Tor i izgleda da je ovo tvoja externlana IP addresa : {ip_address}"
|
||||||
|
|
||||||
#: searx/plugins/tor_check.py:86
|
#: searx/plugins/tor_check.py:86
|
||||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||||
|
@ -1564,4 +1567,3 @@ msgstr "сакриј видео"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -14,26 +14,28 @@
|
||||||
# mikni <mikni@proton.me>, 2022.
|
# mikni <mikni@proton.me>, 2022.
|
||||||
# robert <robert.paegelow@gmail.com>, 2022.
|
# robert <robert.paegelow@gmail.com>, 2022.
|
||||||
# tygyh <jonis9898@hotmail.com>, 2023.
|
# tygyh <jonis9898@hotmail.com>, 2023.
|
||||||
|
# return42 <markus.heiser@darmarit.de>, 2023.
|
||||||
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: 2023-04-08 09:24+0000\n"
|
"POT-Creation-Date: 2023-04-08 09:24+0000\n"
|
||||||
"PO-Revision-Date: 2023-02-28 22:04+0000\n"
|
"PO-Revision-Date: 2023-05-01 07:37+0000\n"
|
||||||
"Last-Translator: tygyh <jonis9898@hotmail.com>\n"
|
"Last-Translator: return42 <markus.heiser@darmarit.de>\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 4.17\n"
|
||||||
"Generated-By: Babel 2.12.1\n"
|
"Generated-By: Babel 2.12.1\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "without further subgrouping"
|
msgid "without further subgrouping"
|
||||||
msgstr ""
|
msgstr "utan ytterligare undergruppering"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -73,7 +75,7 @@ msgstr "videor"
|
||||||
#. CATEGORY_NAMES['IT']
|
#. CATEGORY_NAMES['IT']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "it"
|
msgid "it"
|
||||||
msgstr "det"
|
msgstr "it"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['NEWS']
|
#. CATEGORY_NAMES['NEWS']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
|
@ -544,11 +546,11 @@ msgstr "Visa felmeddelande och skicka en bugrapport"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:35
|
#: searx/templates/simple/preferences.html:35
|
||||||
msgid "!bang for this engine"
|
msgid "!bang for this engine"
|
||||||
msgstr ""
|
msgstr "!bang för denna sökmotor"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:36
|
#: searx/templates/simple/preferences.html:36
|
||||||
msgid "!bang for its categories"
|
msgid "!bang for its categories"
|
||||||
msgstr ""
|
msgstr "!bang för deras kategorier"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:54
|
#: searx/templates/simple/preferences.html:54
|
||||||
#: searx/templates/simple/stats.html:64
|
#: searx/templates/simple/stats.html:64
|
||||||
|
@ -787,6 +789,8 @@ msgid ""
|
||||||
"This tab dues not exists in the user interface, but you can search in "
|
"This tab dues not exists in the user interface, but you can search in "
|
||||||
"these engines by its !bangs."
|
"these engines by its !bangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Den här fliken finns inte i gränssnittet, men du kan söka i dessa sökmotorer "
|
||||||
|
"med deras !bangs."
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:311
|
#: searx/templates/simple/preferences.html:311
|
||||||
#: searx/templates/simple/preferences.html:365
|
#: searx/templates/simple/preferences.html:365
|
||||||
|
@ -800,7 +804,7 @@ msgstr "Sökmotorns namn"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:313
|
#: searx/templates/simple/preferences.html:313
|
||||||
msgid "Bang"
|
msgid "Bang"
|
||||||
msgstr ""
|
msgstr "!bang"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:314
|
#: searx/templates/simple/preferences.html:314
|
||||||
msgid "Supports selected language"
|
msgid "Supports selected language"
|
||||||
|
@ -1581,4 +1585,3 @@ msgstr "göm video"
|
||||||
|
|
||||||
#~ msgid "!bang"
|
#~ msgid "!bang"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ from searx.query import RawTextQuery
|
||||||
from searx.engines import categories, engines
|
from searx.engines import categories, engines
|
||||||
from searx.search import SearchQuery, EngineRef
|
from searx.search import SearchQuery, EngineRef
|
||||||
from searx.preferences import Preferences, is_locked
|
from searx.preferences import Preferences, is_locked
|
||||||
|
from searx.utils import detect_language
|
||||||
|
|
||||||
|
|
||||||
# remove duplicate queries.
|
# remove duplicate queries.
|
||||||
|
@ -214,7 +215,27 @@ def parse_engine_data(form):
|
||||||
|
|
||||||
def get_search_query_from_webapp(
|
def get_search_query_from_webapp(
|
||||||
preferences: Preferences, form: Dict[str, str]
|
preferences: Preferences, form: Dict[str, str]
|
||||||
) -> Tuple[SearchQuery, RawTextQuery, List[EngineRef], List[EngineRef]]:
|
) -> Tuple[SearchQuery, RawTextQuery, List[EngineRef], List[EngineRef], str]:
|
||||||
|
"""Assemble data from preferences and request.form (from the HTML form) needed
|
||||||
|
in a search query.
|
||||||
|
|
||||||
|
The returned tuple consits of:
|
||||||
|
|
||||||
|
1. instance of :py:obj:`searx.search.SearchQuery`
|
||||||
|
2. instance of :py:obj:`searx.query.RawTextQuery`
|
||||||
|
3. list of :py:obj:`searx.search.EngineRef` instances
|
||||||
|
4. string with the *selected locale* of the query
|
||||||
|
|
||||||
|
About language/locale: if the client selects the alias ``auto`` the
|
||||||
|
``SearchQuery`` object is build up by the :py:obj:`detected language
|
||||||
|
<searx.utils.detect_language>`. If language recognition does not have a
|
||||||
|
match the language preferred by the :py:obj:`Preferences.client` is used.
|
||||||
|
If client does not have a preference, the default ``all`` is used.
|
||||||
|
|
||||||
|
The *selected locale* in the tuple always represents the selected
|
||||||
|
language/locale and might differ from the language recognition.
|
||||||
|
|
||||||
|
"""
|
||||||
# no text for the query ?
|
# no text for the query ?
|
||||||
if not form.get('q'):
|
if not form.get('q'):
|
||||||
raise SearxParameterException('q', '')
|
raise SearxParameterException('q', '')
|
||||||
|
@ -229,13 +250,19 @@ def get_search_query_from_webapp(
|
||||||
# set query
|
# set query
|
||||||
query = raw_text_query.getQuery()
|
query = raw_text_query.getQuery()
|
||||||
query_pageno = parse_pageno(form)
|
query_pageno = parse_pageno(form)
|
||||||
query_lang = parse_lang(preferences, form, raw_text_query)
|
|
||||||
query_safesearch = parse_safesearch(preferences, form)
|
query_safesearch = parse_safesearch(preferences, form)
|
||||||
query_time_range = parse_time_range(form)
|
query_time_range = parse_time_range(form)
|
||||||
query_timeout = parse_timeout(form, raw_text_query)
|
query_timeout = parse_timeout(form, raw_text_query)
|
||||||
external_bang = raw_text_query.external_bang
|
external_bang = raw_text_query.external_bang
|
||||||
engine_data = parse_engine_data(form)
|
engine_data = parse_engine_data(form)
|
||||||
|
|
||||||
|
query_lang = parse_lang(preferences, form, raw_text_query)
|
||||||
|
selected_locale = query_lang
|
||||||
|
|
||||||
|
if query_lang == 'auto':
|
||||||
|
query_lang = detect_language(query, threshold=0.8, only_search_languages=True)
|
||||||
|
query_lang = query_lang or preferences.client.locale_tag or 'all'
|
||||||
|
|
||||||
if not is_locked('categories') and raw_text_query.specific:
|
if not is_locked('categories') and raw_text_query.specific:
|
||||||
# if engines are calculated from query,
|
# if engines are calculated from query,
|
||||||
# set categories by using that information
|
# set categories by using that information
|
||||||
|
@ -265,4 +292,5 @@ def get_search_query_from_webapp(
|
||||||
raw_text_query,
|
raw_text_query,
|
||||||
query_engineref_list_unknown,
|
query_engineref_list_unknown,
|
||||||
query_engineref_list_notoken,
|
query_engineref_list_notoken,
|
||||||
|
selected_locale,
|
||||||
)
|
)
|
||||||
|
|
|
@ -84,6 +84,7 @@ from searx.webutils import (
|
||||||
from searx.webadapter import (
|
from searx.webadapter import (
|
||||||
get_search_query_from_webapp,
|
get_search_query_from_webapp,
|
||||||
get_selected_categories,
|
get_selected_categories,
|
||||||
|
parse_lang,
|
||||||
)
|
)
|
||||||
from searx.utils import (
|
from searx.utils import (
|
||||||
html_to_text,
|
html_to_text,
|
||||||
|
@ -96,6 +97,7 @@ from searx.plugins import Plugin, plugins, initialize as plugin_initialize
|
||||||
from searx.plugins.oa_doi_rewrite import get_doi_resolver
|
from searx.plugins.oa_doi_rewrite import get_doi_resolver
|
||||||
from searx.preferences import (
|
from searx.preferences import (
|
||||||
Preferences,
|
Preferences,
|
||||||
|
ClientPref,
|
||||||
ValidationException,
|
ValidationException,
|
||||||
)
|
)
|
||||||
from searx.answerers import (
|
from searx.answerers import (
|
||||||
|
@ -221,16 +223,9 @@ babel = Babel(app, locale_selector=get_locale)
|
||||||
|
|
||||||
|
|
||||||
def _get_browser_language(req, lang_list):
|
def _get_browser_language(req, lang_list):
|
||||||
for lang in req.headers.get("Accept-Language", "en").split(","):
|
client = ClientPref.from_http_request(req)
|
||||||
if ';' in lang:
|
locale = match_locale(client.locale_tag, lang_list, fallback='en')
|
||||||
lang = lang.split(';')[0]
|
|
||||||
if '-' in lang:
|
|
||||||
lang_parts = lang.split('-')
|
|
||||||
lang = "{}-{}".format(lang_parts[0], lang_parts[-1].upper())
|
|
||||||
locale = match_locale(lang, lang_list, fallback=None)
|
|
||||||
if locale is not None:
|
|
||||||
return locale
|
return locale
|
||||||
return 'en'
|
|
||||||
|
|
||||||
|
|
||||||
def _get_locale_rfc5646(locale):
|
def _get_locale_rfc5646(locale):
|
||||||
|
@ -446,11 +441,7 @@ def render(template_name: str, **kwargs):
|
||||||
kwargs['rtl'] = True
|
kwargs['rtl'] = True
|
||||||
|
|
||||||
if 'current_language' not in kwargs:
|
if 'current_language' not in kwargs:
|
||||||
_locale = request.preferences.get_value('language')
|
kwargs['current_language'] = parse_lang(request.preferences, {}, RawTextQuery('', []))
|
||||||
if _locale in ('auto', 'all'):
|
|
||||||
kwargs['current_language'] = _locale
|
|
||||||
else:
|
|
||||||
kwargs['current_language'] = match_locale(_locale, settings['search']['languages'])
|
|
||||||
|
|
||||||
# values from settings
|
# values from settings
|
||||||
kwargs['search_formats'] = [x for x in settings['search']['formats'] if x != 'html']
|
kwargs['search_formats'] = [x for x in settings['search']['formats'] if x != 'html']
|
||||||
|
@ -512,7 +503,10 @@ def pre_request():
|
||||||
request.timings = [] # pylint: disable=assigning-non-slot
|
request.timings = [] # pylint: disable=assigning-non-slot
|
||||||
request.errors = [] # pylint: disable=assigning-non-slot
|
request.errors = [] # pylint: disable=assigning-non-slot
|
||||||
|
|
||||||
preferences = Preferences(themes, list(categories.keys()), engines, plugins) # pylint: disable=redefined-outer-name
|
client_pref = ClientPref.from_http_request(request)
|
||||||
|
# pylint: disable=redefined-outer-name
|
||||||
|
preferences = Preferences(themes, list(categories.keys()), engines, plugins, client_pref)
|
||||||
|
|
||||||
user_agent = request.headers.get('User-Agent', '').lower()
|
user_agent = request.headers.get('User-Agent', '').lower()
|
||||||
if 'webkit' in user_agent and 'android' in user_agent:
|
if 'webkit' in user_agent and 'android' in user_agent:
|
||||||
preferences.key_value_settings['method'].value = 'GET'
|
preferences.key_value_settings['method'].value = 'GET'
|
||||||
|
@ -681,7 +675,9 @@ def search():
|
||||||
raw_text_query = None
|
raw_text_query = None
|
||||||
result_container = None
|
result_container = None
|
||||||
try:
|
try:
|
||||||
search_query, raw_text_query, _, _ = get_search_query_from_webapp(request.preferences, request.form)
|
search_query, raw_text_query, _, _, selected_locale = get_search_query_from_webapp(
|
||||||
|
request.preferences, request.form
|
||||||
|
)
|
||||||
# search = Search(search_query) # without plugins
|
# search = Search(search_query) # without plugins
|
||||||
search = SearchWithPlugins(search_query, request.user_plugins, request) # pylint: disable=redefined-outer-name
|
search = SearchWithPlugins(search_query, request.user_plugins, request) # pylint: disable=redefined-outer-name
|
||||||
|
|
||||||
|
@ -812,13 +808,6 @@ def search():
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if search_query.lang in ('auto', 'all'):
|
|
||||||
current_language = search_query.lang
|
|
||||||
else:
|
|
||||||
current_language = match_locale(
|
|
||||||
search_query.lang, settings['search']['languages'], fallback=request.preferences.get_value("language")
|
|
||||||
)
|
|
||||||
|
|
||||||
# search_query.lang contains the user choice (all, auto, en, ...)
|
# search_query.lang contains the user choice (all, auto, en, ...)
|
||||||
# when the user choice is "auto", search.search_query.lang contains the detected language
|
# when the user choice is "auto", search.search_query.lang contains the detected language
|
||||||
# otherwise it is equals to search_query.lang
|
# otherwise it is equals to search_query.lang
|
||||||
|
@ -841,7 +830,7 @@ def search():
|
||||||
result_container.unresponsive_engines
|
result_container.unresponsive_engines
|
||||||
),
|
),
|
||||||
current_locale = request.preferences.get_value("locale"),
|
current_locale = request.preferences.get_value("locale"),
|
||||||
current_language = current_language,
|
current_language = selected_locale,
|
||||||
search_language = match_locale(
|
search_language = match_locale(
|
||||||
search.search_query.lang,
|
search.search_query.lang,
|
||||||
settings['search']['languages'],
|
settings['search']['languages'],
|
||||||
|
|
Loading…
Reference in a new issue