forked from Ponysearch/Ponysearch
Merge branch 'searxng:master' into master
This commit is contained in:
commit
fb33b6219d
46 changed files with 3506 additions and 632 deletions
|
@ -2,10 +2,9 @@ mock==4.0.3
|
|||
nose2[coverage_plugin]==0.12.0
|
||||
cov-core==1.15.0
|
||||
black==22.6.0
|
||||
pycodestyle==2.8.0
|
||||
pylint==2.14.5
|
||||
splinter==0.18.1
|
||||
selenium==4.3.0
|
||||
selenium==4.4.0
|
||||
twine==4.0.1
|
||||
Pallets-Sphinx-Themes==2.0.2
|
||||
Sphinx==5.1.1
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
certifi==2022.6.15
|
||||
babel==2.10.3
|
||||
flask-babel==2.0.0
|
||||
flask==2.1.3
|
||||
flask==2.2.2
|
||||
jinja2==3.1.2
|
||||
lxml==4.9.1
|
||||
pygments==2.12.0
|
||||
|
@ -12,7 +12,7 @@ Brotli==1.0.9
|
|||
uvloop==0.16.0
|
||||
httpx-socks[asyncio]==0.7.2
|
||||
langdetect==1.0.9
|
||||
setproctitle==1.3.0
|
||||
setproctitle==1.3.2
|
||||
redis==4.3.4
|
||||
markdown-it-py==2.1.0
|
||||
typing_extensions==4.3.0
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1396,170 +1396,155 @@
|
|||
"sv",
|
||||
"zh"
|
||||
],
|
||||
"qwant": [
|
||||
"bg-BG",
|
||||
"ca-ES",
|
||||
"cs-CZ",
|
||||
"da-DK",
|
||||
"de-AT",
|
||||
"de-CH",
|
||||
"de-DE",
|
||||
"el-GR",
|
||||
"en-AU",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"en-IE",
|
||||
"en-MY",
|
||||
"en-NZ",
|
||||
"en-US",
|
||||
"es-AR",
|
||||
"es-CL",
|
||||
"es-ES",
|
||||
"es-MX",
|
||||
"et-EE",
|
||||
"fi-FI",
|
||||
"fr-BE",
|
||||
"fr-CA",
|
||||
"fr-CH",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"it-CH",
|
||||
"it-IT",
|
||||
"ko-KR",
|
||||
"nb-NO",
|
||||
"nl-BE",
|
||||
"nl-NL",
|
||||
"pl-PL",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"sv-SE",
|
||||
"th-TH",
|
||||
"zh-CN",
|
||||
"zh-HK"
|
||||
],
|
||||
"qwant images": [
|
||||
"bg-BG",
|
||||
"ca-ES",
|
||||
"cs-CZ",
|
||||
"da-DK",
|
||||
"de-AT",
|
||||
"de-CH",
|
||||
"de-DE",
|
||||
"el-GR",
|
||||
"en-AU",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"en-IE",
|
||||
"en-MY",
|
||||
"en-NZ",
|
||||
"en-US",
|
||||
"es-AR",
|
||||
"es-CL",
|
||||
"es-ES",
|
||||
"es-MX",
|
||||
"et-EE",
|
||||
"fi-FI",
|
||||
"fr-BE",
|
||||
"fr-CA",
|
||||
"fr-CH",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"it-CH",
|
||||
"it-IT",
|
||||
"ko-KR",
|
||||
"nb-NO",
|
||||
"nl-BE",
|
||||
"nl-NL",
|
||||
"pl-PL",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"sv-SE",
|
||||
"th-TH",
|
||||
"zh-CN",
|
||||
"zh-HK"
|
||||
],
|
||||
"qwant news": [
|
||||
"bg-BG",
|
||||
"ca-ES",
|
||||
"cs-CZ",
|
||||
"da-DK",
|
||||
"de-AT",
|
||||
"de-CH",
|
||||
"de-DE",
|
||||
"el-GR",
|
||||
"en-AU",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"en-IE",
|
||||
"en-MY",
|
||||
"en-NZ",
|
||||
"en-US",
|
||||
"es-AR",
|
||||
"es-CL",
|
||||
"es-ES",
|
||||
"es-MX",
|
||||
"et-EE",
|
||||
"fi-FI",
|
||||
"fr-BE",
|
||||
"fr-CA",
|
||||
"fr-CH",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"it-CH",
|
||||
"it-IT",
|
||||
"ko-KR",
|
||||
"nb-NO",
|
||||
"nl-BE",
|
||||
"nl-NL",
|
||||
"pl-PL",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"sv-SE",
|
||||
"th-TH",
|
||||
"zh-CN",
|
||||
"zh-HK"
|
||||
],
|
||||
"qwant videos": [
|
||||
"bg-BG",
|
||||
"ca-ES",
|
||||
"cs-CZ",
|
||||
"da-DK",
|
||||
"de-AT",
|
||||
"de-CH",
|
||||
"de-DE",
|
||||
"el-GR",
|
||||
"en-AU",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"en-IE",
|
||||
"en-MY",
|
||||
"en-NZ",
|
||||
"en-US",
|
||||
"es-AR",
|
||||
"es-CL",
|
||||
"es-ES",
|
||||
"es-MX",
|
||||
"et-EE",
|
||||
"fi-FI",
|
||||
"fr-BE",
|
||||
"fr-CA",
|
||||
"fr-CH",
|
||||
"fr-FR",
|
||||
"hu-HU",
|
||||
"it-CH",
|
||||
"it-IT",
|
||||
"ko-KR",
|
||||
"nb-NO",
|
||||
"nl-BE",
|
||||
"nl-NL",
|
||||
"pl-PL",
|
||||
"pt-PT",
|
||||
"ro-RO",
|
||||
"sv-SE",
|
||||
"th-TH",
|
||||
"zh-CN",
|
||||
"zh-HK"
|
||||
],
|
||||
"qwant": {
|
||||
"bg-BG": "bg_BG",
|
||||
"ca-ES": "ca_ES",
|
||||
"cs-CZ": "cs_CZ",
|
||||
"da-DK": "da_DK",
|
||||
"de-AT": "de_AT",
|
||||
"de-CH": "de_CH",
|
||||
"de-DE": "de_DE",
|
||||
"el-GR": "el_GR",
|
||||
"en-AU": "en_AU",
|
||||
"en-CA": "en_CA",
|
||||
"en-GB": "en_GB",
|
||||
"en-IE": "en_IE",
|
||||
"en-MY": "en_MY",
|
||||
"en-NZ": "en_NZ",
|
||||
"en-US": "en_US",
|
||||
"es-AR": "es_AR",
|
||||
"es-CL": "es_CL",
|
||||
"es-ES": "es_ES",
|
||||
"es-MX": "es_MX",
|
||||
"et-EE": "et_EE",
|
||||
"fi-FI": "fi_FI",
|
||||
"fr-BE": "fr_BE",
|
||||
"fr-CA": "fr_CA",
|
||||
"fr-CH": "fr_CH",
|
||||
"fr-FR": "fr_FR",
|
||||
"hu-HU": "hu_HU",
|
||||
"it-CH": "it_CH",
|
||||
"it-IT": "it_IT",
|
||||
"ko-KR": "ko_KR",
|
||||
"nb-NO": "nb_NO",
|
||||
"nl-BE": "nl_BE",
|
||||
"nl-NL": "nl_NL",
|
||||
"pl-PL": "pl_PL",
|
||||
"pt-PT": "pt_PT",
|
||||
"ro-RO": "ro_RO",
|
||||
"sv-SE": "sv_SE",
|
||||
"th-TH": "th_TH",
|
||||
"zh-CN": "zh_CN",
|
||||
"zh-HK": "zh_HK"
|
||||
},
|
||||
"qwant images": {
|
||||
"bg-BG": "bg_BG",
|
||||
"ca-ES": "ca_ES",
|
||||
"cs-CZ": "cs_CZ",
|
||||
"da-DK": "da_DK",
|
||||
"de-AT": "de_AT",
|
||||
"de-CH": "de_CH",
|
||||
"de-DE": "de_DE",
|
||||
"el-GR": "el_GR",
|
||||
"en-AU": "en_AU",
|
||||
"en-CA": "en_CA",
|
||||
"en-GB": "en_GB",
|
||||
"en-IE": "en_IE",
|
||||
"en-MY": "en_MY",
|
||||
"en-NZ": "en_NZ",
|
||||
"en-US": "en_US",
|
||||
"es-AR": "es_AR",
|
||||
"es-CL": "es_CL",
|
||||
"es-ES": "es_ES",
|
||||
"es-MX": "es_MX",
|
||||
"et-EE": "et_EE",
|
||||
"fi-FI": "fi_FI",
|
||||
"fr-BE": "fr_BE",
|
||||
"fr-CA": "fr_CA",
|
||||
"fr-CH": "fr_CH",
|
||||
"fr-FR": "fr_FR",
|
||||
"hu-HU": "hu_HU",
|
||||
"it-CH": "it_CH",
|
||||
"it-IT": "it_IT",
|
||||
"ko-KR": "ko_KR",
|
||||
"nb-NO": "nb_NO",
|
||||
"nl-BE": "nl_BE",
|
||||
"nl-NL": "nl_NL",
|
||||
"pl-PL": "pl_PL",
|
||||
"pt-PT": "pt_PT",
|
||||
"ro-RO": "ro_RO",
|
||||
"sv-SE": "sv_SE",
|
||||
"th-TH": "th_TH",
|
||||
"zh-CN": "zh_CN",
|
||||
"zh-HK": "zh_HK"
|
||||
},
|
||||
"qwant news": {
|
||||
"ca-ES": "ca_ES",
|
||||
"de-AT": "de_AT",
|
||||
"de-CH": "de_CH",
|
||||
"de-DE": "de_DE",
|
||||
"en-AU": "en_AU",
|
||||
"en-CA": "en_CA",
|
||||
"en-GB": "en_GB",
|
||||
"en-IE": "en_IE",
|
||||
"en-MY": "en_MY",
|
||||
"en-NZ": "en_NZ",
|
||||
"en-US": "en_US",
|
||||
"es-AR": "es_AR",
|
||||
"es-CL": "es_CL",
|
||||
"es-ES": "es_ES",
|
||||
"es-MX": "es_MX",
|
||||
"fr-BE": "fr_BE",
|
||||
"fr-CA": "fr_CA",
|
||||
"fr-CH": "fr_CH",
|
||||
"fr-FR": "fr_FR",
|
||||
"it-CH": "it_CH",
|
||||
"it-IT": "it_IT",
|
||||
"nl-BE": "nl_BE",
|
||||
"nl-NL": "nl_NL",
|
||||
"pt-PT": "pt_PT"
|
||||
},
|
||||
"qwant videos": {
|
||||
"bg-BG": "bg_BG",
|
||||
"ca-ES": "ca_ES",
|
||||
"cs-CZ": "cs_CZ",
|
||||
"da-DK": "da_DK",
|
||||
"de-AT": "de_AT",
|
||||
"de-CH": "de_CH",
|
||||
"de-DE": "de_DE",
|
||||
"el-GR": "el_GR",
|
||||
"en-AU": "en_AU",
|
||||
"en-CA": "en_CA",
|
||||
"en-GB": "en_GB",
|
||||
"en-IE": "en_IE",
|
||||
"en-MY": "en_MY",
|
||||
"en-NZ": "en_NZ",
|
||||
"en-US": "en_US",
|
||||
"es-AR": "es_AR",
|
||||
"es-CL": "es_CL",
|
||||
"es-ES": "es_ES",
|
||||
"es-MX": "es_MX",
|
||||
"et-EE": "et_EE",
|
||||
"fi-FI": "fi_FI",
|
||||
"fr-BE": "fr_BE",
|
||||
"fr-CA": "fr_CA",
|
||||
"fr-CH": "fr_CH",
|
||||
"fr-FR": "fr_FR",
|
||||
"hu-HU": "hu_HU",
|
||||
"it-CH": "it_CH",
|
||||
"it-IT": "it_IT",
|
||||
"ko-KR": "ko_KR",
|
||||
"nb-NO": "nb_NO",
|
||||
"nl-BE": "nl_BE",
|
||||
"nl-NL": "nl_NL",
|
||||
"pl-PL": "pl_PL",
|
||||
"pt-PT": "pt_PT",
|
||||
"ro-RO": "ro_RO",
|
||||
"sv-SE": "sv_SE",
|
||||
"th-TH": "th_TH",
|
||||
"zh-CN": "zh_CN",
|
||||
"zh-HK": "zh_HK"
|
||||
},
|
||||
"startpage": {
|
||||
"af": {
|
||||
"alias": "afrikaans"
|
||||
|
|
|
@ -112,21 +112,14 @@ filter_mapping = {0: 'off', 1: 'medium', 2: 'high'}
|
|||
# specific xpath variables
|
||||
# ------------------------
|
||||
|
||||
# google results are grouped into <div class="jtfYYd ..." ../>
|
||||
results_xpath = '//div[contains(@class, "jtfYYd")]'
|
||||
results_xpath = '//div[contains(@class, "MjjYud")]'
|
||||
title_xpath = './/h3[1]'
|
||||
href_xpath = './/a/@href'
|
||||
content_xpath = './/div[@data-content-feature=1]'
|
||||
|
||||
# google *sections* are no usual *results*, we ignore them
|
||||
g_section_with_header = './g-section-with-header'
|
||||
|
||||
# the title is a h3 tag relative to the result group
|
||||
title_xpath = './/h3[1]'
|
||||
|
||||
# in the result group there is <div class="yuRUbf" ../> it's first child is a <a
|
||||
# href=...>
|
||||
href_xpath = './/div[@class="yuRUbf"]//a/@href'
|
||||
|
||||
# in the result group there is <div class="VwiC3b ..." ../> containing the *content*
|
||||
content_xpath = './/div[contains(@class, "VwiC3b")]'
|
||||
|
||||
# Suggestions are links placed in a *card-section*, we extract only the text
|
||||
# from the links not the links itself.
|
||||
|
@ -261,7 +254,7 @@ def request(query, params):
|
|||
if use_mobile_ui:
|
||||
additional_parameters = {
|
||||
'asearch': 'arc',
|
||||
'async': 'use_ac:true,_fmt:pc',
|
||||
'async': 'use_ac:true,_fmt:html',
|
||||
}
|
||||
|
||||
# https://www.google.de/search?q=corona&hl=de&lr=lang_de&start=0&tbs=qdr%3Ad&safe=medium
|
||||
|
|
|
@ -9,16 +9,16 @@ https://www.qwant.com/ queries.
|
|||
This implementation is used by different qwant engines in the settings.yml::
|
||||
|
||||
- name: qwant
|
||||
categories: general
|
||||
qwant_categ: web
|
||||
...
|
||||
- name: qwant news
|
||||
categories: news
|
||||
qwant_categ: news
|
||||
...
|
||||
- name: qwant images
|
||||
categories: images
|
||||
qwant_categ: images
|
||||
...
|
||||
- name: qwant videos
|
||||
categories: videos
|
||||
qwant_categ: videos
|
||||
...
|
||||
|
||||
"""
|
||||
|
@ -30,11 +30,11 @@ from datetime import (
|
|||
from json import loads
|
||||
from urllib.parse import urlencode
|
||||
from flask_babel import gettext
|
||||
import babel
|
||||
|
||||
from searx.utils import match_language
|
||||
from searx.exceptions import SearxEngineAPIException
|
||||
from searx.network import raise_for_httperror
|
||||
|
||||
from searx.locales import get_engine_locale
|
||||
|
||||
# about
|
||||
about = {
|
||||
|
@ -50,13 +50,20 @@ about = {
|
|||
categories = []
|
||||
paging = True
|
||||
supported_languages_url = about['website']
|
||||
qwant_categ = None # web|news|inages|videos
|
||||
|
||||
category_to_keyword = {
|
||||
'general': 'web',
|
||||
'news': 'news',
|
||||
'images': 'images',
|
||||
'videos': 'videos',
|
||||
}
|
||||
safesearch = True
|
||||
safe_search_map = {0: '&safesearch=0', 1: '&safesearch=1', 2: '&safesearch=2'}
|
||||
|
||||
# fmt: off
|
||||
qwant_news_locales = [
|
||||
'ca_ad', 'ca_es', 'ca_fr', 'co_fr', 'de_at', 'de_ch', 'de_de', 'en_au',
|
||||
'en_ca', 'en_gb', 'en_ie', 'en_my', 'en_nz', 'en_us', 'es_ad', 'es_ar',
|
||||
'es_cl', 'es_co', 'es_es', 'es_mx', 'es_pe', 'eu_es', 'eu_fr', 'fc_ca',
|
||||
'fr_ad', 'fr_be', 'fr_ca', 'fr_ch', 'fr_fr', 'it_ch', 'it_it', 'nl_be',
|
||||
'nl_nl', 'pt_ad', 'pt_pt',
|
||||
]
|
||||
# fmt: on
|
||||
|
||||
# search-url
|
||||
url = 'https://api.qwant.com/v3/search/{keyword}?{query}&count={count}&offset={offset}'
|
||||
|
@ -64,10 +71,13 @@ url = 'https://api.qwant.com/v3/search/{keyword}?{query}&count={count}&offset={o
|
|||
|
||||
def request(query, params):
|
||||
"""Qwant search request"""
|
||||
keyword = category_to_keyword[categories[0]]
|
||||
|
||||
if not query:
|
||||
return None
|
||||
|
||||
count = 10 # web: count must be equal to 10
|
||||
|
||||
if keyword == 'images':
|
||||
if qwant_categ == 'images':
|
||||
count = 50
|
||||
offset = (params['pageno'] - 1) * count
|
||||
# count + offset must be lower than 250
|
||||
|
@ -78,22 +88,18 @@ def request(query, params):
|
|||
offset = min(offset, 40)
|
||||
|
||||
params['url'] = url.format(
|
||||
keyword=keyword,
|
||||
keyword=qwant_categ,
|
||||
query=urlencode({'q': query}),
|
||||
offset=offset,
|
||||
count=count,
|
||||
)
|
||||
|
||||
# add language tag
|
||||
if params['language'] == 'all':
|
||||
params['url'] += '&locale=en_US'
|
||||
else:
|
||||
language = match_language(
|
||||
params['language'],
|
||||
supported_languages,
|
||||
language_aliases,
|
||||
)
|
||||
params['url'] += '&locale=' + language.replace('-', '_')
|
||||
# add quant's locale
|
||||
q_locale = get_engine_locale(params['language'], supported_languages, default='en_US')
|
||||
params['url'] += '&locale=' + q_locale
|
||||
|
||||
# add safesearch option
|
||||
params['url'] += safe_search_map.get(params['safesearch'], '')
|
||||
|
||||
params['raise_for_httperror'] = False
|
||||
return params
|
||||
|
@ -103,7 +109,6 @@ def response(resp):
|
|||
"""Get response from Qwant's search request"""
|
||||
# pylint: disable=too-many-locals, too-many-branches, too-many-statements
|
||||
|
||||
keyword = category_to_keyword[categories[0]]
|
||||
results = []
|
||||
|
||||
# load JSON result
|
||||
|
@ -125,7 +130,7 @@ def response(resp):
|
|||
# raise for other errors
|
||||
raise_for_httperror(resp)
|
||||
|
||||
if keyword == 'web':
|
||||
if qwant_categ == 'web':
|
||||
# The WEB query contains a list named 'mainline'. This list can contain
|
||||
# different result types (e.g. mainline[0]['type'] returns type of the
|
||||
# result items in mainline[0]['items']
|
||||
|
@ -136,7 +141,7 @@ def response(resp):
|
|||
# result['items'].
|
||||
mainline = data.get('result', {}).get('items', [])
|
||||
mainline = [
|
||||
{'type': keyword, 'items': mainline},
|
||||
{'type': qwant_categ, 'items': mainline},
|
||||
]
|
||||
|
||||
# return empty array if there are no results
|
||||
|
@ -146,7 +151,7 @@ def response(resp):
|
|||
for row in mainline:
|
||||
|
||||
mainline_type = row.get('type', 'web')
|
||||
if mainline_type != keyword:
|
||||
if mainline_type != qwant_categ:
|
||||
continue
|
||||
|
||||
if mainline_type == 'ads':
|
||||
|
@ -238,19 +243,43 @@ def response(resp):
|
|||
return results
|
||||
|
||||
|
||||
# get supported languages from their site
|
||||
def _fetch_supported_languages(resp):
|
||||
# list of regions is embedded in page as a js object
|
||||
response_text = resp.text
|
||||
response_text = response_text[response_text.find('INITIAL_PROPS') :]
|
||||
response_text = response_text[response_text.find('{') : response_text.find('</script>')]
|
||||
|
||||
regions_json = loads(response_text)
|
||||
text = resp.text
|
||||
text = text[text.find('INITIAL_PROPS') :]
|
||||
text = text[text.find('{') : text.find('</script>')]
|
||||
|
||||
supported_languages = []
|
||||
for country, langs in regions_json['locales'].items():
|
||||
for lang in langs['langs']:
|
||||
lang_code = "{lang}-{country}".format(lang=lang, country=country)
|
||||
supported_languages.append(lang_code)
|
||||
q_initial_props = loads(text)
|
||||
q_locales = q_initial_props.get('locales')
|
||||
q_valid_locales = []
|
||||
|
||||
for country, v in q_locales.items():
|
||||
for lang in v['langs']:
|
||||
_locale = "{lang}_{country}".format(lang=lang, country=country)
|
||||
|
||||
if qwant_categ == 'news' and _locale.lower() not in qwant_news_locales:
|
||||
# qwant-news does not support all locales from qwant-web:
|
||||
continue
|
||||
|
||||
q_valid_locales.append(_locale)
|
||||
|
||||
supported_languages = {}
|
||||
|
||||
for q_locale in q_valid_locales:
|
||||
try:
|
||||
locale = babel.Locale.parse(q_locale, sep='_')
|
||||
except babel.core.UnknownLocaleError:
|
||||
print("ERROR: can't determine babel locale of quant's locale %s" % q_locale)
|
||||
continue
|
||||
|
||||
# note: supported_languages (dict)
|
||||
#
|
||||
# dict's key is a string build up from a babel.Locale object / the
|
||||
# notation 'xx-XX' (and 'xx') conforms to SearXNG's locale (and
|
||||
# language) notation and dict's values are the locale strings used by
|
||||
# the engine.
|
||||
|
||||
searxng_locale = locale.language + '-' + locale.territory # --> params['language']
|
||||
supported_languages[searxng_locale] = q_locale
|
||||
|
||||
return supported_languages
|
||||
|
|
143
searx/locales.py
143
searx/locales.py
|
@ -10,6 +10,8 @@ import pathlib
|
|||
|
||||
from babel import Locale
|
||||
from babel.support import Translations
|
||||
import babel.languages
|
||||
import babel.core
|
||||
import flask_babel
|
||||
import flask
|
||||
from flask.ctx import has_request_context
|
||||
|
@ -150,3 +152,144 @@ def locales_initialize(directory=None):
|
|||
LOCALE_NAMES[tag] = get_locale_descr(locale, dirname)
|
||||
if locale.text_direction == 'rtl':
|
||||
RTL_LOCALES.add(tag)
|
||||
|
||||
|
||||
def get_engine_locale(searxng_locale, engine_locales, default=None):
|
||||
"""Return engine's language (aka locale) string that best fits to argument
|
||||
``searxng_locale``.
|
||||
|
||||
Argument ``engine_locales`` is a python dict that maps *SearXNG locales* to
|
||||
corresponding *engine locales*:
|
||||
|
||||
<engine>: {
|
||||
# SearXNG string : engine-string
|
||||
'ca-ES' : 'ca_ES',
|
||||
'fr-BE' : 'fr_BE',
|
||||
'fr-CA' : 'fr_CA',
|
||||
'fr-CH' : 'fr_CH',
|
||||
'fr' : 'fr_FR',
|
||||
...
|
||||
'pl-PL' : 'pl_PL',
|
||||
'pt-PT' : 'pt_PT'
|
||||
}
|
||||
|
||||
.. hint::
|
||||
|
||||
The *SearXNG locale* string has to be known by babel!
|
||||
|
||||
If there is no direct 1:1 mapping, this functions tries to narrow down
|
||||
engine's language (locale). If no value can be determined by these
|
||||
approximation attempts the ``default`` value is returned.
|
||||
|
||||
Assumptions:
|
||||
|
||||
A. When user select a language the results should be optimized according to
|
||||
the selected language.
|
||||
|
||||
B. When user select a language and a territory the results should be
|
||||
optimized with first priority on terrirtory and second on language.
|
||||
|
||||
First approximation rule (*by territory*):
|
||||
|
||||
When the user selects a locale with terrirtory (and a language), the
|
||||
territory has priority over the language. If any of the offical languages
|
||||
in the terrirtory is supported by the engine (``engine_locales``) it will
|
||||
be used.
|
||||
|
||||
Second approximation rule (*by language*):
|
||||
|
||||
If "First approximation rule" brings no result or the user selects only a
|
||||
language without a terrirtory. Check in which territories the language
|
||||
has an offical status and if one of these territories is supported by the
|
||||
engine.
|
||||
|
||||
"""
|
||||
# pylint: disable=too-many-branches
|
||||
|
||||
engine_locale = engine_locales.get(searxng_locale)
|
||||
|
||||
if engine_locale is not None:
|
||||
# There was a 1:1 mapping (e.g. "fr-BE --> fr_BE" or "fr --> fr_FR"), no
|
||||
# need to narrow language nor territory.
|
||||
return engine_locale
|
||||
|
||||
try:
|
||||
locale = babel.Locale.parse(searxng_locale, sep='-')
|
||||
except babel.core.UnknownLocaleError:
|
||||
try:
|
||||
locale = babel.Locale.parse(searxng_locale.split('-')[1])
|
||||
except babel.core.UnknownLocaleError:
|
||||
return default
|
||||
|
||||
# SearXNG's selected locale is not supported by the engine ..
|
||||
|
||||
if locale.territory:
|
||||
# Try to narrow by *offical* languages in the territory (??-XX).
|
||||
|
||||
for official_language in babel.languages.get_official_languages(locale.territory, de_facto=True):
|
||||
searxng_locale = official_language + '-' + locale.territory
|
||||
engine_locale = engine_locales.get(searxng_locale)
|
||||
if engine_locale is not None:
|
||||
return engine_locale
|
||||
|
||||
# Engine does not support one of the offical languages in the territory or
|
||||
# there is only a language selected without a territory.
|
||||
|
||||
# Now lets have a look if the searxng_lang (the language selected by the
|
||||
# user) is a offical language in other territories. If so, check if
|
||||
# engine does support the searxng_lang in this other territory.
|
||||
|
||||
if locale.language:
|
||||
|
||||
searxng_lang = locale.language
|
||||
if locale.script:
|
||||
searxng_lang += '_' + locale.script
|
||||
|
||||
terr_lang_dict = {}
|
||||
for territory, langs in babel.core.get_global("territory_languages").items():
|
||||
if not langs.get(searxng_lang, {}).get('official_status'):
|
||||
continue
|
||||
terr_lang_dict[territory] = langs.get(searxng_lang)
|
||||
|
||||
# first: check fr-FR, de-DE .. is supported by the engine
|
||||
|
||||
territory = locale.language.upper()
|
||||
if terr_lang_dict.get(territory):
|
||||
searxng_locale = locale.language + '-' + territory
|
||||
engine_locale = engine_locales.get(searxng_locale)
|
||||
if engine_locale is not None:
|
||||
return engine_locale
|
||||
|
||||
# second: sort by population_percent and take first match
|
||||
|
||||
# drawback of "population percent": if there is a terrirtory with a
|
||||
# small number of people (e.g 100) but the majority speaks the
|
||||
# language, then the percentage migth be 100% (--> 100 people) but in
|
||||
# a different terrirtory with more people (e.g. 10.000) where only 10%
|
||||
# speak the language the total amount of speaker is higher (--> 200
|
||||
# people).
|
||||
#
|
||||
# By example: The population of Saint-Martin is 33.000, of which 100%
|
||||
# speak French, but this is less than the 30% of the approximately 2.5
|
||||
# million Belgian citizens
|
||||
#
|
||||
# - 'fr-MF', 'population_percent': 100.0, 'official_status': 'official'
|
||||
# - 'fr-BE', 'population_percent': 38.0, 'official_status': 'official'
|
||||
|
||||
terr_lang_list = []
|
||||
for k, v in terr_lang_dict.items():
|
||||
terr_lang_list.append((k, v))
|
||||
|
||||
for territory, _lang in sorted(terr_lang_list, key=lambda item: item[1]['population_percent'], reverse=True):
|
||||
searxng_locale = locale.language + '-' + territory
|
||||
engine_locale = engine_locales.get(searxng_locale)
|
||||
if engine_locale is not None:
|
||||
return engine_locale
|
||||
|
||||
# No luck: narrow by "language from territory" and "territory from language"
|
||||
# does not fit to a locale supported by the engine.
|
||||
|
||||
if engine_locale is None:
|
||||
engine_locale = default
|
||||
|
||||
return default
|
||||
|
|
|
@ -210,7 +210,7 @@ checker:
|
|||
|
||||
# to activate the scheduler:
|
||||
# * uncomment "scheduling" section
|
||||
# * add "cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1"
|
||||
# * add "cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1"
|
||||
# to your uwsgi.ini
|
||||
|
||||
# scheduling:
|
||||
|
@ -422,18 +422,13 @@ engines:
|
|||
categories: general
|
||||
disabled: true
|
||||
paging: false
|
||||
page_size: 10
|
||||
content_html_to_text: true
|
||||
title_html_to_text: true
|
||||
search_url: https://api.yep.com/fs/1/?type=web&q={query}&no_correct=false
|
||||
search_url: https://api.yep.com/fs/1/?type=web&q={query}&no_correct=false&limit=100
|
||||
results_query: 1/results
|
||||
title_query: title
|
||||
url_query: url
|
||||
content_query: snippet
|
||||
timeout: 12.0
|
||||
headers:
|
||||
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
|
||||
'Sec-Fetch-Dest': 'document'
|
||||
about:
|
||||
website: https://yep.com
|
||||
use_official_api: false
|
||||
|
@ -965,6 +960,38 @@ engines:
|
|||
# collection: 'reviews' # name of the db collection
|
||||
# key: 'name' # key in the collection to search for
|
||||
|
||||
- name: neeva
|
||||
engine: xpath
|
||||
shortcut: nv
|
||||
time_range_support: true
|
||||
time_range_url: '&alf%5Bfreshness%5D={time_range_val}'
|
||||
time_range_map:
|
||||
day: 'Day'
|
||||
week: 'Week'
|
||||
month: 'Month'
|
||||
year: 'Year'
|
||||
search_url: https://neeva.com/search?q={query}&c=All&src=Pagination&page={pageno}{time_range}
|
||||
results_xpath: //div[@class="web-index__component-2rKiM"] | //li[@class="web-rich-deep-links__deepLink-SIbD4"]
|
||||
url_xpath: .//a[@class="lib-doc-title__link-1b9rC"]/@href | ./h2/a/@href
|
||||
title_xpath: .//a[@class="lib-doc-title__link-1b9rC"] | ./h2/a
|
||||
content_xpath: >
|
||||
.//div[@class="lib-doc-snippet__component-3ewW6"]/text() |
|
||||
.//div[@class="lib-doc-snippet__component-3ewW6"]/*[not(self::a)] |
|
||||
./p
|
||||
content_html_to_text: true
|
||||
suggestion_xpath: //span[@class="result-related-searches__link-2ho_u"]
|
||||
paging: true
|
||||
disabled: true
|
||||
categories: [general, web]
|
||||
timeout: 5.0
|
||||
soft_max_redirects: 2
|
||||
about:
|
||||
website: https://neeva.com
|
||||
official_api_documentation:
|
||||
use_official_api: false
|
||||
require_api_key: false
|
||||
results: HTML
|
||||
|
||||
- name: npm
|
||||
engine: json_engine
|
||||
paging: true
|
||||
|
@ -1171,6 +1198,7 @@ engines:
|
|||
results: HTML
|
||||
|
||||
- name: qwant
|
||||
qwant_categ: web
|
||||
engine: qwant
|
||||
shortcut: qw
|
||||
categories: [general, web]
|
||||
|
@ -1179,6 +1207,7 @@ engines:
|
|||
rosebud: *test_rosebud
|
||||
|
||||
- name: qwant news
|
||||
qwant_categ: news
|
||||
engine: qwant
|
||||
shortcut: qwn
|
||||
categories: news
|
||||
|
@ -1186,6 +1215,7 @@ engines:
|
|||
network: qwant
|
||||
|
||||
- name: qwant images
|
||||
qwant_categ: images
|
||||
engine: qwant
|
||||
shortcut: qwi
|
||||
categories: [images, web]
|
||||
|
@ -1193,6 +1223,7 @@ engines:
|
|||
network: qwant
|
||||
|
||||
- name: qwant videos
|
||||
qwant_categ: videos
|
||||
engine: qwant
|
||||
shortcut: qwv
|
||||
categories: [videos, web]
|
||||
|
@ -1458,6 +1489,27 @@ engines:
|
|||
about:
|
||||
website: https://wiby.me/
|
||||
|
||||
- name: marginalia
|
||||
engine: json_engine
|
||||
shortcut: mar
|
||||
categories: general
|
||||
paging: false
|
||||
# index: {"0": "popular", "1": "blogs", "2": "big_sites",
|
||||
# "3": "default", "4": experimental"}
|
||||
search_url: https://api.marginalia.nu/public/search/{query}?index=4&count=20
|
||||
results_query: results
|
||||
url_query: url
|
||||
title_query: title
|
||||
content_query: description
|
||||
timeout: 1.5
|
||||
disabled: true
|
||||
about:
|
||||
website: https://www.marginalia.nu/
|
||||
official_api_documentation: https://api.marginalia.nu/
|
||||
use_official_api: true
|
||||
require_api_key: true
|
||||
results: JSON
|
||||
|
||||
- name: alexandria
|
||||
engine: json_engine
|
||||
shortcut: alx
|
||||
|
@ -1768,12 +1820,19 @@ engines:
|
|||
shortcut: brave
|
||||
engine: xpath
|
||||
paging: true
|
||||
time_range_support: true
|
||||
first_page_num: 0
|
||||
search_url: https://search.brave.com/search?q={query}&offset={pageno}&spellcheck=1
|
||||
time_range_url: "&tf={time_range_val}"
|
||||
search_url: https://search.brave.com/search?q={query}&offset={pageno}&spellcheck=1{time_range}
|
||||
url_xpath: //a[@class="result-header"]/@href
|
||||
title_xpath: //span[@class="snippet-title"]
|
||||
content_xpath: //p[1][@class="snippet-description"]
|
||||
suggestion_xpath: //div[@class="text-gray h6"]/a
|
||||
time_range_map:
|
||||
day: 'pd'
|
||||
week: 'pw'
|
||||
month: 'pm'
|
||||
year: 'py'
|
||||
categories: [general, web]
|
||||
about:
|
||||
website: https://brave.com/search/
|
||||
|
@ -1827,6 +1886,43 @@ engines:
|
|||
require_api_key: false
|
||||
results: HTML
|
||||
|
||||
- name: lib.rs
|
||||
shortcut: lrs
|
||||
engine: xpath
|
||||
search_url: https://lib.rs/search?q={query}
|
||||
results_xpath: /html/body/main/div/ol/li/a
|
||||
url_xpath: ./@href
|
||||
title_xpath: ./div[@class="h"]/h4
|
||||
content_xpath: ./div[@class="h"]/p
|
||||
categories: [it, packages]
|
||||
disabled: true
|
||||
about:
|
||||
website: https://lib.rs
|
||||
wikidata_id: Q113486010
|
||||
use_official_api: false
|
||||
require_api_key: false
|
||||
results: HTML
|
||||
|
||||
- name: sourcehut
|
||||
shortcut: srht
|
||||
engine: xpath
|
||||
paging: true
|
||||
search_url: https://sr.ht/projects?page={pageno}&search={query}
|
||||
results_xpath: (//div[@class="event-list"])[1]/div[@class="event"]
|
||||
url_xpath: ./h4/a[2]/@href
|
||||
title_xpath: ./h4/a[2]
|
||||
content_xpath: ./p
|
||||
first_page_num: 1
|
||||
categories: [it, repos]
|
||||
disabled: true
|
||||
about:
|
||||
website: https://sr.ht
|
||||
wikidata_id: Q78514485
|
||||
official_api_documentation: https://man.sr.ht/
|
||||
use_official_api: false
|
||||
require_api_key: false
|
||||
results: HTML
|
||||
|
||||
# Doku engine lets you access to any Doku wiki instance:
|
||||
# A public one or a privete/corporate one.
|
||||
# - name: ubuntuwiki
|
||||
|
|
|
@ -23,7 +23,7 @@ else:
|
|||
# uwsgi.ini configuration problem: disable all scheduling
|
||||
logger.error(
|
||||
'uwsgi.ini configuration error, add this line to your uwsgi.ini\n'
|
||||
'cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1'
|
||||
'cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1'
|
||||
)
|
||||
from .shared_simple import SimpleSharedDict as SharedDict
|
||||
|
||||
|
|
|
@ -1,22 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
||||
<ShortName>{{ instance_name }}</ShortName>
|
||||
<Description>a privacy-respecting, hackable metasearch engine</Description>
|
||||
<LongName>SearXNG metasearch</LongName>
|
||||
<Description>SearXNG is a metasearch engine that respects your privacy.</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image>{{ url_for('static', filename='img/favicon.png', _external=True) }}</Image>
|
||||
<LongName>searx metasearch</LongName>
|
||||
{% if opensearch_method == 'get' %}
|
||||
<Url rel="results" type="text/html" method="get" template="{{ url_for('search', _external=True) }}?q={searchTerms}"/>
|
||||
<Image type="image/png">{{ url_for('static', filename='img/favicon.png', _external=True) }}</Image>
|
||||
{% if opensearch_method == 'GET' %}
|
||||
<Url rel="results" type="text/html" method="{{ opensearch_method }}" template="{{ url_for('search', _external=True) }}?q={searchTerms}"/>
|
||||
{% else %}
|
||||
<Url rel="results" type="text/html" method="post" template="{{ url_for('search', _external=True) }}">
|
||||
<Param name="q" value="{searchTerms}" />
|
||||
</Url>
|
||||
<Url rel="results" type="text/html" method="{{ opensearch_method }}" template="{{ url_for('search', _external=True) }}">
|
||||
<Param name="q" value="{searchTerms}" />
|
||||
</Url>
|
||||
{% endif %}
|
||||
{% if autocomplete %}
|
||||
<Url rel="suggestions" type="application/x-suggestions+json" template="{{ url_for('autocompleter', _external=True) }}?q={searchTerms}"/>
|
||||
<Url rel="suggestions" type="application/x-suggestions+json" method="{{ opensearch_method }}" template="{{ url_for('autocompleter', _external=True) }}?q={searchTerms}"/>
|
||||
{% endif %}
|
||||
|
||||
<Url type="application/opensearchdescription+xml"
|
||||
rel="self"
|
||||
template="{{ opensearch_url }}" />
|
||||
<Url rel="self" type="application/opensearchdescription+xml" method="{{ opensearch_method }}" template="{{ opensearch_url }}" />
|
||||
<Query role="example" searchTerms="SearXNG" />
|
||||
<moz:SearchForm>{{ url_for('search', _external=True) }}</moz:SearchForm>
|
||||
</OpenSearchDescription>
|
||||
|
|
BIN
searx/translations/af/LC_MESSAGES/messages.mo
Normal file
BIN
searx/translations/af/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
1128
searx/translations/af/LC_MESSAGES/messages.po
Normal file
1128
searx/translations/af/LC_MESSAGES/messages.po
Normal file
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -3,20 +3,22 @@
|
|||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
# PRATYAY MUSTAFI <pratyaymustafi@gmail.com>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-19 05:46+0000\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Bengali <https://weblate.bubu1.eu/projects/searxng/searxng/bn/"
|
||||
">\n"
|
||||
"Language: bn\n"
|
||||
"Language-Team: Bengali "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/bn/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -181,7 +183,7 @@ msgstr "অনেক বেশি অনুরোধ"
|
|||
|
||||
#: searx/webapp.py:187
|
||||
msgid "access denied"
|
||||
msgstr "অ্যাক্সেস অস্বীকৃত"
|
||||
msgstr "অ্যাক্সেস অমান্য"
|
||||
|
||||
#: searx/webapp.py:188
|
||||
msgid "server API error"
|
||||
|
@ -266,16 +268,20 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"ছবির url টি পড়তে পারা যাচ্ছে না । এটি হতে পারে ফাইল ফরম্যাট এর পড়তে না পারা"
|
||||
"র জন্যে। TinEye কেবল JPEG, PNG, GIF, BMP, TIFF আর WebP ফরম্যাট কে পড়তে পারে।"
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"এই ছবিটি খুবই সাধারণ হওয়ায় কোন মিল পাওয়া যাচ্ছে না। TinEye এর একটু চাক্ষু"
|
||||
"ষ বিস্তর প্রয়োজন সফল ভাবে মিল পাওয়ার জন্যে ।"
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "ছবিটি ডাউনলোড করা যায়নি ।"
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -295,27 +301,31 @@ msgstr "ফলাফল হোস্টনাম পুনরায় লিখ
|
|||
|
||||
#: searx/plugins/oa_doi_rewrite.py:9
|
||||
msgid "Open Access DOI rewrite"
|
||||
msgstr ""
|
||||
msgstr "Open Access DOI পুনর্লিখন"
|
||||
|
||||
#: searx/plugins/oa_doi_rewrite.py:10
|
||||
msgid ""
|
||||
"Avoid paywalls by redirecting to open-access versions of publications "
|
||||
"when available"
|
||||
msgstr ""
|
||||
"Paywall এড়িয়ে চলতে প্রকাশন গুলির open-access সংস্করণে রিডাইরেক্ট করুন উপলব্"
|
||||
"ধ থাকলে"
|
||||
|
||||
#: searx/plugins/search_on_category_select.py:19
|
||||
msgid "Search on category select"
|
||||
msgstr ""
|
||||
msgstr "বিভাগ নির্বাচন খুঁজে দেখুন"
|
||||
|
||||
#: searx/plugins/search_on_category_select.py:20
|
||||
msgid ""
|
||||
"Perform search immediately if a category selected. Disable to select "
|
||||
"multiple categories. (JavaScript required)"
|
||||
msgstr ""
|
||||
"যখন একটি বিভাগ নির্বাচন করা হয়, অনুসন্ধান অবিলম্বে সঞ্চালিত হয়. একাধিক বিভা"
|
||||
"গ নির্বাচন করতে অক্ষম করুন। (জাভাস্ক্রিপ্ট প্রয়োজন)"
|
||||
|
||||
#: searx/plugins/self_info.py:20
|
||||
msgid "Self Informations"
|
||||
msgstr ""
|
||||
msgstr "নিজের তথ্য"
|
||||
|
||||
#: searx/plugins/self_info.py:21
|
||||
msgid ""
|
||||
|
@ -325,7 +335,7 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/tor_check.py:25
|
||||
msgid "Tor check plugin"
|
||||
msgstr ""
|
||||
msgstr "টর চেক প্লাগইন"
|
||||
|
||||
#: searx/plugins/tor_check.py:28
|
||||
msgid ""
|
||||
|
@ -1110,4 +1120,3 @@ msgstr ""
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "পছন্দসমূহ"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -25,8 +25,8 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"Last-Translator: alexfs2015 <alex04fs@gmail.com>\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Spanish <https://weblate.bubu1.eu/projects/searxng/searxng/es/"
|
||||
">\n"
|
||||
"Language: es\n"
|
||||
|
@ -284,16 +284,22 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"No se pudo leer la URL de esa imagen. Esto puede deberse a un formato de "
|
||||
"archivo no compatible. TinEye solo admite imágenes JPEG, PNG, GIF, BMP, TIFF "
|
||||
"o WebP."
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"La imagen es demasiado simple para encontrar coincidencias. TinEye requiere "
|
||||
"un nivel básico de detalle visual para identificar con éxito las "
|
||||
"coincidencias."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "No se pudo descargar la imagen."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
|
Binary file not shown.
|
@ -5,20 +5,22 @@
|
|||
# Translators:
|
||||
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2017
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
# Mico Hautaluoma <m@mha.fi>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-06 00:21+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Mico Hautaluoma <m@mha.fi>\n"
|
||||
"Language-Team: Finnish <https://weblate.bubu1.eu/projects/searxng/searxng/fi/"
|
||||
">\n"
|
||||
"Language: fi\n"
|
||||
"Language-Team: Finnish "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/fi/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -268,16 +270,21 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"Kuvan url-osoitetta ei voitu lukea. Tämä saattaa johtua tiedostomuodosta, "
|
||||
"jota ei tueta. TinEye tukee vain kuvia, jotka ovat JPEG, PNG, GIF, BMP, TIFF "
|
||||
"tai WebP."
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"Kuva on liian yksinkertainen löytääkseen osumia. TinEye vaatii visuaalisen "
|
||||
"tarkkuuden perustason, jotta osumien tunnistaminen onnistuu."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "Tätä kuvaa ei voida ladata."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -335,27 +342,32 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/tor_check.py:25
|
||||
msgid "Tor check plugin"
|
||||
msgstr ""
|
||||
msgstr "Tor-verkon tarkistus lisäosa"
|
||||
|
||||
#: searx/plugins/tor_check.py:28
|
||||
msgid ""
|
||||
"This plugin checks if the address of the request is a TOR exit node, and "
|
||||
"informs the user if it is, like check.torproject.org but from searxng."
|
||||
msgstr ""
|
||||
"Tämä lisäosa tarkistaa, tuleeko pyyntö TOR exit nodesta, ja ilmoittaa "
|
||||
"käyttäjälle, jos se on, samalla tavalla kuin check.torproject.org, mutta "
|
||||
"searxngista."
|
||||
|
||||
#: searx/plugins/tor_check.py:62
|
||||
msgid ""
|
||||
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
|
||||
"unreachable."
|
||||
msgstr ""
|
||||
"TOR exit node listaan (https://check.torproject.org/exit-addresses) ei saada "
|
||||
"yhteyttä."
|
||||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Sinä käytät TOR:ia. Sinun IP-osoitteesi näyttää olevan: {ip_address}."
|
||||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Sinä et käytä TOR:ia. Sinun IP-osoitteesi näyttää olevan: {ip_address}."
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
@ -392,11 +404,11 @@ msgstr "hakusivulle"
|
|||
|
||||
#: searx/templates/simple/base.html:46
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
msgstr "Tietoa SearXNG:stä"
|
||||
|
||||
#: searx/templates/simple/base.html:50
|
||||
msgid "Donate"
|
||||
msgstr ""
|
||||
msgstr "Lahjoita"
|
||||
|
||||
#: searx/templates/simple/base.html:54
|
||||
#: searx/templates/simple/preferences.html:99
|
||||
|
@ -430,7 +442,7 @@ msgstr "Julkiset palvelimet"
|
|||
|
||||
#: searx/templates/simple/base.html:72
|
||||
msgid "Privacy policy"
|
||||
msgstr ""
|
||||
msgstr "Tietosuojakäytäntö"
|
||||
|
||||
#: searx/templates/simple/base.html:75
|
||||
msgid "Contact instance maintainer"
|
||||
|
@ -459,19 +471,20 @@ msgstr "välityspalvelimella"
|
|||
|
||||
#: searx/templates/simple/new_issue.html:64
|
||||
msgid "Start submiting a new issue on GitHub"
|
||||
msgstr ""
|
||||
msgstr "Avaa uusi issue GitHubissa"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:66
|
||||
msgid "Please check for existing bugs about this engine on GitHub"
|
||||
msgstr ""
|
||||
msgstr "Tarkista tämän hakukoneen tämänhetkiset ongelmat GitHubista"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:69
|
||||
msgid "I confirm there is no existing bug about the issue I encounter"
|
||||
msgstr ""
|
||||
msgstr "Vahvistan, että tästä bugista ei ole olemassaolevaa issue:ta"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:71
|
||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||
msgstr ""
|
||||
"Jos kyseessä on julkinen instanssi, määritä sen URL-osoite vikailmoituksessa"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:72
|
||||
msgid "Submit a new issue on Github including the above information"
|
||||
|
@ -619,7 +632,7 @@ msgstr "Valitse auto seurataksesi selaimesi asetuksia"
|
|||
|
||||
#: searx/templates/simple/preferences.html:217
|
||||
msgid "Center Alignment"
|
||||
msgstr ""
|
||||
msgstr "Keskipisteen kohdistus"
|
||||
|
||||
#: searx/templates/simple/preferences.html:220
|
||||
#: searx/templates/simple/preferences.html:232
|
||||
|
@ -635,7 +648,7 @@ msgstr "Pois"
|
|||
|
||||
#: searx/templates/simple/preferences.html:224
|
||||
msgid "Displays results in the center of the page (Oscar layout)."
|
||||
msgstr ""
|
||||
msgstr "Näyttää tulokset sivun keskellä (Oscar-asettelu)."
|
||||
|
||||
#: searx/templates/simple/preferences.html:229
|
||||
msgid "Results on new tabs"
|
||||
|
@ -821,13 +834,15 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/preferences.html:419
|
||||
msgid "URL to restore your preferences in another browser"
|
||||
msgstr ""
|
||||
msgstr "URL-osoite asetusten palauttamiseksi toisessa selaimessa"
|
||||
|
||||
#: searx/templates/simple/preferences.html:423
|
||||
msgid ""
|
||||
"Specifying custom settings in the preferences URL can be used to sync "
|
||||
"preferences across devices."
|
||||
msgstr ""
|
||||
"Määrittämällä mukautettuja asetuksia asetusten URL-osoitteessa voidaan "
|
||||
"käyttää synkronoimiseen asetuksia eri laitteissa."
|
||||
|
||||
#: searx/templates/simple/preferences.html:428
|
||||
msgid ""
|
||||
|
@ -1381,4 +1396,3 @@ msgstr "piilota video"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "asetukset"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -10,21 +10,23 @@
|
|||
# rike, 2014
|
||||
# stf <stefan.marsiske@gmail.com>, 2014
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
# Shopimisrel <shopisrael12@gmail.com>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-06 00:21+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"PO-Revision-Date: 2022-08-12 07:18+0000\n"
|
||||
"Last-Translator: Shopimisrel <shopisrael12@gmail.com>\n"
|
||||
"Language-Team: Hebrew <https://weblate.bubu1.eu/projects/searxng/searxng/he/>"
|
||||
"\n"
|
||||
"Language: he\n"
|
||||
"Language-Team: Hebrew "
|
||||
"<https://weblate.bubu1.eu/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"
|
||||
"Content-Type: text/plain; charset=utf-8\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 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -274,16 +276,20 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"לא ניתן היה לקרוא את כתובת האתר של התמונה. ייתכן שהסיבה לכך היא פורמט קובץ "
|
||||
"שאינו נתמך. TinEye תומך רק בתמונות שהן JPEG, PNG, GIF, BMP, TIFF או WebP."
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"התמונה הזו הינה יותר מידי פשוטה מכדי למצוא התאמות. TinEye צריך רמה בסיסית של "
|
||||
"פרטים חזותיים כדי להצליח למצוא התאמות."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "אי אפשר להוריד את תמונה זו."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -339,27 +345,31 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/tor_check.py:25
|
||||
msgid "Tor check plugin"
|
||||
msgstr ""
|
||||
msgstr "טור בודק תוסף"
|
||||
|
||||
#: searx/plugins/tor_check.py:28
|
||||
msgid ""
|
||||
"This plugin checks if the address of the request is a TOR exit node, and "
|
||||
"informs the user if it is, like check.torproject.org but from searxng."
|
||||
msgstr ""
|
||||
"תוסף זה בודק אם הכתובת של הבקשה היא צומת יציאה של TOR, ומודיע למשתמש אם כן, "
|
||||
"כמו check.torproject.org אבל מ-searxng."
|
||||
|
||||
#: searx/plugins/tor_check.py:62
|
||||
msgid ""
|
||||
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
|
||||
"unreachable."
|
||||
msgstr ""
|
||||
"רשימת צומת היציאה של TOR (https://check.torproject.org/exit-addresses) אינה "
|
||||
"ניתנת לגישה."
|
||||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "אתה משתמש ב-TOR. נראה שכתובת ה-IP שלך היא: {ip_address}."
|
||||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "אתה לא משתמש ב-TOR. נראה שכתובת ה-IP שלך היא: {ip_address}."
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
@ -463,19 +473,19 @@ msgstr "פרוקסי"
|
|||
|
||||
#: searx/templates/simple/new_issue.html:64
|
||||
msgid "Start submiting a new issue on GitHub"
|
||||
msgstr ""
|
||||
msgstr "התחל להגיש גיליון חדש ב- GitHub"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:66
|
||||
msgid "Please check for existing bugs about this engine on GitHub"
|
||||
msgstr ""
|
||||
msgstr "בדוק אם קיימים באגים לגבי מנוע זה ב-GitHub"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:69
|
||||
msgid "I confirm there is no existing bug about the issue I encounter"
|
||||
msgstr ""
|
||||
msgstr "אני מאשר שאין באג קיים לגבי הבעיה שאני נתקל בה"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:71
|
||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||
msgstr ""
|
||||
msgstr "אם זה מופע ציבורי, אנא ציין את כתובת האתר בדוח הבאג"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:72
|
||||
msgid "Submit a new issue on Github including the above information"
|
||||
|
@ -621,7 +631,7 @@ msgstr "בחר אוטומטית כדי לשמור על התאמה עם הגדר
|
|||
|
||||
#: searx/templates/simple/preferences.html:217
|
||||
msgid "Center Alignment"
|
||||
msgstr ""
|
||||
msgstr "יישור מרכז"
|
||||
|
||||
#: searx/templates/simple/preferences.html:220
|
||||
#: searx/templates/simple/preferences.html:232
|
||||
|
@ -637,7 +647,7 @@ msgstr "כבוי"
|
|||
|
||||
#: searx/templates/simple/preferences.html:224
|
||||
msgid "Displays results in the center of the page (Oscar layout)."
|
||||
msgstr ""
|
||||
msgstr "מציג תוצאות במרכז העמוד (פריסת אוסקר)."
|
||||
|
||||
#: searx/templates/simple/preferences.html:229
|
||||
msgid "Results on new tabs"
|
||||
|
@ -820,13 +830,15 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/preferences.html:419
|
||||
msgid "URL to restore your preferences in another browser"
|
||||
msgstr ""
|
||||
msgstr "כתובת אתר לשחזור ההעדפות שלך בדפדפן אחר"
|
||||
|
||||
#: searx/templates/simple/preferences.html:423
|
||||
msgid ""
|
||||
"Specifying custom settings in the preferences URL can be used to sync "
|
||||
"preferences across devices."
|
||||
msgstr ""
|
||||
"ניתן להשתמש בציון הגדרות מותאמות אישית בכתובת ההעדפות כדי לסנכרן העדפות בין "
|
||||
"מכשירים."
|
||||
|
||||
#: searx/templates/simple/preferences.html:428
|
||||
msgid ""
|
||||
|
@ -1374,4 +1386,3 @@ msgstr "הסתר וידאו"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "העדפות"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -9,20 +9,22 @@
|
|||
# Noémi Ványi <sitbackandwait@gmail.com>, 2016-2017
|
||||
# Kuka Manó <dumpster@perjel.hu>, 2022.
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
# Lakatos Tamás <tomimost@gmail.com>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-21 21:02+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Lakatos Tamás <tomimost@gmail.com>\n"
|
||||
"Language-Team: Hungarian <https://weblate.bubu1.eu/projects/searxng/searxng/"
|
||||
"hu/>\n"
|
||||
"Language: hu\n"
|
||||
"Language-Team: Hungarian "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/hu/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -68,7 +70,7 @@ msgstr "videók"
|
|||
#. CATEGORY_NAMES['IT']
|
||||
#: searx/searxng.msg
|
||||
msgid "it"
|
||||
msgstr "az"
|
||||
msgstr "IT"
|
||||
|
||||
#. CATEGORY_NAMES['NEWS']
|
||||
#: searx/searxng.msg
|
||||
|
@ -272,16 +274,21 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"Ennek a képnek az url-je nem olvasható. Ennek oka lehet egy nem támogatott "
|
||||
"fájl formátum. A TinEye által támogatott formátumok: JPEG, PNG, GIF, BMP, "
|
||||
"TIFF or WebP."
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"A kép túl egyszerű a kereséshez. A TinEye-nek szüksége van egy minimális "
|
||||
"vizuális részletességre a sikeres kereséshez."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "A kép nem tölthető le."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -469,19 +476,20 @@ msgstr "proxy nézet"
|
|||
|
||||
#: searx/templates/simple/new_issue.html:64
|
||||
msgid "Start submiting a new issue on GitHub"
|
||||
msgstr ""
|
||||
msgstr "Probléma bejelentése GitHubon"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:66
|
||||
msgid "Please check for existing bugs about this engine on GitHub"
|
||||
msgstr ""
|
||||
msgstr "Kérlek ellenőrizd a GitHubon bejelentett hibákat"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:69
|
||||
msgid "I confirm there is no existing bug about the issue I encounter"
|
||||
msgstr "Megerősítem, hogy nincs már meglévő bejelentés a problémámról."
|
||||
msgstr "Megerősítem, hogy nincs meglévő bejelentés a problémámról"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:71
|
||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||
msgstr "Ha ez egy nyilvános példány, kérlek add meg az URL-t a hibabejelntésben."
|
||||
msgstr ""
|
||||
"Ha ez egy nyilvános példány, kérlek add meg az URL-t a hiba bejelentésben"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:72
|
||||
msgid "Submit a new issue on Github including the above information"
|
||||
|
@ -1388,4 +1396,3 @@ msgstr "videó elrejtése"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "beállítások"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -19,7 +19,7 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Italian <https://weblate.bubu1.eu/projects/searxng/searxng/it/"
|
||||
">\n"
|
||||
|
@ -290,7 +290,7 @@ msgstr ""
|
|||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "L'immagine non può essere scaricata."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -362,6 +362,8 @@ msgid ""
|
|||
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
|
||||
"unreachable."
|
||||
msgstr ""
|
||||
"La lista dei nodi d'uscita TOR non è raggiungibile (https://check.torproject."
|
||||
"org/exit-addresses)."
|
||||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
|
@ -369,7 +371,7 @@ msgstr "Stai usando TOR. Il tuo indirizzo IP risulta essere : {ip_address}."
|
|||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Non stai usando TOR. Il tuo indirizzo IP sembra essere: {ip_address}."
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
|
BIN
searx/translations/ml/LC_MESSAGES/messages.mo
Normal file
BIN
searx/translations/ml/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
1106
searx/translations/ml/LC_MESSAGES/messages.po
Normal file
1106
searx/translations/ml/LC_MESSAGES/messages.po
Normal file
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -3,20 +3,22 @@
|
|||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||
# Morten R. Bjørklund <mortenrb@live.no>, 2022.
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-06 00:21+0000\n"
|
||||
"Last-Translator: Morten R. Bjørklund <mortenrb@live.no>\n"
|
||||
"PO-Revision-Date: 2022-08-12 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Norwegian Bokmål <https://weblate.bubu1.eu/projects/searxng/"
|
||||
"searxng/nb_NO/>\n"
|
||||
"Language: nb_NO\n"
|
||||
"Language-Team: Norwegian Bokmål "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/nb_NO/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -266,16 +268,21 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"Kunne ikke lese bilde-lenken. Dette kan være fordi bildet er i et format som "
|
||||
"ikke er støttet. TinEye støtter bare JPEG, PNG, GIF, BMP, TIFF eller WebP "
|
||||
"formater."
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"Bildet har for få særskilte detaljer for at TinEye kan finne like eller "
|
||||
"lignende bilder."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "Bildet kunne ikke lastes ned."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -347,11 +354,11 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Du bruker TOR. Din ip-adresse er: {ip_address}."
|
||||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Du bruker ikke TOR. Din ip adresse er: {ip_address}."
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
@ -1300,4 +1307,3 @@ msgstr "skjul video"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "innstillinger"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -14,7 +14,7 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Dutch <https://weblate.bubu1.eu/projects/searxng/searxng/nl/>"
|
||||
"\n"
|
||||
|
@ -288,7 +288,7 @@ msgstr ""
|
|||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "De afbeelding kon niet worden gedownload."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
|
Binary file not shown.
|
@ -7,20 +7,21 @@
|
|||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-23 14:09+0000\n"
|
||||
"PO-Revision-Date: 2022-08-12 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Polish <https://weblate.bubu1.eu/projects/searxng/searxng/pl/>"
|
||||
"\n"
|
||||
"Language: pl\n"
|
||||
"Language-Team: Polish "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/pl/>\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
|
||||
"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
|
||||
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
|
||||
"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
|
||||
"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -270,6 +271,9 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"Nie można odczytać obrazu z tego adresu URL. Może być to spowodowane "
|
||||
"nieobsługiwanym formatem pliku. TinEye obsługuje jedynie obrazy w formatach "
|
||||
"JPEG, PNG, GIF, BMP, TIFF i WebP."
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
|
@ -279,7 +283,7 @@ msgstr ""
|
|||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "Nie można pobrać obrazu."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -351,7 +355,7 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Używasz sieci TOR. Twoje IP widoczne z zewnątrz to {ip_address}."
|
||||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
|
@ -1387,4 +1391,3 @@ msgstr "ukryj wideo"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "preferencje"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -12,8 +12,8 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"Last-Translator: Miguel Silva <miguelcabeca.dev@gmail.com>\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Portuguese <https://weblate.bubu1.eu/projects/searxng/searxng/"
|
||||
"pt/>\n"
|
||||
"Language: pt\n"
|
||||
|
@ -283,7 +283,7 @@ msgstr ""
|
|||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "Não é possível fazer download da imagem."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
|
Binary file not shown.
|
@ -16,7 +16,7 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Russian <https://weblate.bubu1.eu/projects/searxng/searxng/ru/"
|
||||
">\n"
|
||||
|
@ -286,6 +286,8 @@ msgid ""
|
|||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"Изображение слишком простое для нахождения похожих. TinEye требует базовый "
|
||||
"уровень визуальных деталей для успешной идентификации совпадений."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
|
@ -343,27 +345,32 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/tor_check.py:25
|
||||
msgid "Tor check plugin"
|
||||
msgstr ""
|
||||
msgstr "Плагин проверки Tor'a"
|
||||
|
||||
#: searx/plugins/tor_check.py:28
|
||||
msgid ""
|
||||
"This plugin checks if the address of the request is a TOR exit node, and "
|
||||
"informs the user if it is, like check.torproject.org but from searxng."
|
||||
msgstr ""
|
||||
"Этот плагин проверяет не является ли запрошенный адрес выходным узлом Tor'a, "
|
||||
"и информирует пользователя если это так, как check.torproject.org, но от "
|
||||
"searxng."
|
||||
|
||||
#: searx/plugins/tor_check.py:62
|
||||
msgid ""
|
||||
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
|
||||
"unreachable."
|
||||
msgstr ""
|
||||
"Список выходных узлов Tor'a (https://check.torproject.org/exit-addresses) "
|
||||
"недоступен."
|
||||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Вы используете Tor. Ваш IP адрес может быть: {ip_address}."
|
||||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "Вы не используете Tor. Ваш IP адрес может быть: {ip_address}."
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
@ -482,7 +489,7 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/new_issue.html:71
|
||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||
msgstr ""
|
||||
msgstr "Если это публичное зеркало, пожалуйста, укажите ссылку в баг-репорте"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:72
|
||||
msgid "Submit a new issue on Github including the above information"
|
||||
|
|
Binary file not shown.
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Slovenian <https://weblate.bubu1.eu/projects/searxng/searxng/"
|
||||
"sl/>\n"
|
||||
|
@ -126,7 +126,7 @@ msgstr ""
|
|||
#. CATEGORY_GROUPS['WEB']
|
||||
#: searx/searxng.msg
|
||||
msgid "web"
|
||||
msgstr ""
|
||||
msgstr "splet"
|
||||
|
||||
#. STYLE_NAMES['AUTO']
|
||||
#: searx/searxng.msg
|
||||
|
@ -279,7 +279,7 @@ msgstr ""
|
|||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "Slike ni bilo mogoče prevesti."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -604,7 +604,7 @@ msgstr "Spremeni jezik vmesnika"
|
|||
|
||||
#: searx/templates/simple/preferences.html:195
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
msgstr "Tema"
|
||||
|
||||
#: searx/templates/simple/preferences.html:203
|
||||
msgid "Change SearXNG layout"
|
||||
|
@ -1056,7 +1056,7 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/result_templates/images.html:21
|
||||
msgid "Engine"
|
||||
msgstr ""
|
||||
msgstr "Pogon"
|
||||
|
||||
#: searx/templates/simple/result_templates/images.html:22
|
||||
msgid "View source"
|
||||
|
|
Binary file not shown.
|
@ -15,7 +15,7 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-29 07:17+0000\n"
|
||||
"PO-Revision-Date: 2022-08-12 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Turkish <https://weblate.bubu1.eu/projects/searxng/searxng/tr/"
|
||||
">\n"
|
||||
|
@ -283,6 +283,8 @@ msgid ""
|
|||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
"Fotoğraf aranmak için fazla basit. TinEye 'ın başarılı şekilde çalışması "
|
||||
"için basit detaylar gereklidir."
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
|
|
Binary file not shown.
|
@ -13,20 +13,22 @@
|
|||
# WhiredPlanck <fungdaat31@outlook.com>, 2020
|
||||
# wordpure <wordlesspure@gmail.com>, 2022.
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
# Academic tyro <y13593582403@gmail.com>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-01 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"PO-Revision-Date: 2022-08-12 07:18+0000\n"
|
||||
"Last-Translator: wordpure <wordlesspure@gmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://weblate.bubu1.eu/projects/"
|
||||
"searxng/searxng/zh_Hans/>\n"
|
||||
"Language: zh_Hans_CN\n"
|
||||
"Language-Team: Chinese (Simplified) "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/zh_Hans/>\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -276,16 +278,19 @@ msgid ""
|
|||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
"无法读取该图片网址。这可能是由于文件格式不受支持。 TinEye 仅支持 "
|
||||
"JPEG、PNG、GIF、BMP、TIFF 或 WebP 格式的图像。"
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
msgstr "图像过于简单,无法找到匹配项。 TinEye "
|
||||
"需要基本级别的视觉细节才能成功识别匹配项。"
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "无法下载该图像."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -335,27 +340,29 @@ msgstr "当您搜索「ip」时,这将会显示您的 IP 地址;同理,在
|
|||
|
||||
#: searx/plugins/tor_check.py:25
|
||||
msgid "Tor check plugin"
|
||||
msgstr ""
|
||||
msgstr "Tor检查插件"
|
||||
|
||||
#: searx/plugins/tor_check.py:28
|
||||
msgid ""
|
||||
"This plugin checks if the address of the request is a TOR exit node, and "
|
||||
"informs the user if it is, like check.torproject.org but from searxng."
|
||||
msgstr ""
|
||||
"该插件检查请求的 IP 地址是否为 TOR 出口节点,是的话就通知用户,可视为 "
|
||||
"searxng 中的 check.torproject.org 。"
|
||||
|
||||
#: searx/plugins/tor_check.py:62
|
||||
msgid ""
|
||||
"The TOR exit node list (https://check.torproject.org/exit-addresses) is "
|
||||
"unreachable."
|
||||
msgstr ""
|
||||
msgstr "TOR出口节点(https://check.torproject.org/exit-addresses)不可达。"
|
||||
|
||||
#: searx/plugins/tor_check.py:78
|
||||
msgid "You are using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "你在使用TOR。你的IP地址应该是{ip_address}."
|
||||
|
||||
#: searx/plugins/tor_check.py:84
|
||||
msgid "You are not using TOR. Your IP address seems to be: {ip_address}."
|
||||
msgstr ""
|
||||
msgstr "你没有在使用Tor。你的IP地址应该是{ip_address}."
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
@ -457,19 +464,19 @@ msgstr "代理"
|
|||
|
||||
#: searx/templates/simple/new_issue.html:64
|
||||
msgid "Start submiting a new issue on GitHub"
|
||||
msgstr ""
|
||||
msgstr "在GitHub上提交一个新问题"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:66
|
||||
msgid "Please check for existing bugs about this engine on GitHub"
|
||||
msgstr ""
|
||||
msgstr "请在 GitHub 上检查有关此引擎的现有错误"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:69
|
||||
msgid "I confirm there is no existing bug about the issue I encounter"
|
||||
msgstr ""
|
||||
msgstr "我确定已知 bug 中没有我遇到的问题"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:71
|
||||
msgid "If this is a public instance, please specify the URL in the bug report"
|
||||
msgstr ""
|
||||
msgstr "如果这是一个公共问题,请在Bug报告页面提交URL"
|
||||
|
||||
#: searx/templates/simple/new_issue.html:72
|
||||
msgid "Submit a new issue on Github including the above information"
|
||||
|
@ -1352,4 +1359,3 @@ msgstr "隐藏视频"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "首选项"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -9,20 +9,22 @@
|
|||
# Mingye Wang <arthur200126@gmail.com>, 2018
|
||||
# 黃柏諺 <s8321414@gmail.com>, 2020
|
||||
# Markus Heiser <markus.heiser@darmarit.de>, 2022.
|
||||
# GooGuJiang <gu@gmoe.cc>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-23 14:08+0000\n"
|
||||
"PO-Revision-Date: 2022-07-23 14:09+0000\n"
|
||||
"PO-Revision-Date: 2022-08-05 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Chinese (Traditional) <https://weblate.bubu1.eu/projects/"
|
||||
"searxng/searxng/zh_Hant/>\n"
|
||||
"Language: zh_Hant_TW\n"
|
||||
"Language-Team: Chinese (Traditional) "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/zh_Hant/>\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -271,17 +273,19 @@ msgid ""
|
|||
"Could not read that image url. This may be due to an unsupported file "
|
||||
"format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or"
|
||||
" WebP."
|
||||
msgstr ""
|
||||
msgstr "無法存取該圖像網址。這可能是因為不支援的文件格式造成的。TinEye只支持JPEG、PNG"
|
||||
"、GIF、BMP、TIFF或WebP的圖像。"
|
||||
|
||||
#: searx/engines/tineye.py:46
|
||||
msgid ""
|
||||
"The image is too simple to find matches. TinEye requires a basic level of"
|
||||
" visual detail to successfully identify matches."
|
||||
msgstr ""
|
||||
msgstr "圖片訊息量過少,無法找到相符的結果。TinEye需要一個更基礎的圖片細節以成功辨識"
|
||||
"相符的結果。"
|
||||
|
||||
#: searx/engines/tineye.py:52
|
||||
msgid "The image could not be downloaded."
|
||||
msgstr ""
|
||||
msgstr "圖片無法下載。。"
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
|
@ -297,7 +301,7 @@ msgstr "主機名替換"
|
|||
|
||||
#: searx/plugins/hostname_replace.py:10
|
||||
msgid "Rewrite result hostnames or remove results based on the hostname"
|
||||
msgstr "重寫結果的主機名或基於主機名移除結果"
|
||||
msgstr "重寫結果的主機名或在此主機名移除結果"
|
||||
|
||||
#: searx/plugins/oa_doi_rewrite.py:9
|
||||
msgid "Open Access DOI rewrite"
|
||||
|
@ -321,7 +325,7 @@ msgstr "若分類被選取時立刻執行搜尋。停用以選取多個分類。
|
|||
|
||||
#: searx/plugins/self_info.py:20
|
||||
msgid "Self Informations"
|
||||
msgstr "自身信息"
|
||||
msgstr "自身訊息"
|
||||
|
||||
#: searx/plugins/self_info.py:21
|
||||
msgid ""
|
||||
|
@ -331,7 +335,7 @@ msgstr "若搜尋字串爲「ip」則顯示您的 IP,而若是「user agent」
|
|||
|
||||
#: searx/plugins/tor_check.py:25
|
||||
msgid "Tor check plugin"
|
||||
msgstr "Tor 網絡檢測"
|
||||
msgstr "Tor 網路檢測"
|
||||
|
||||
#: searx/plugins/tor_check.py:28
|
||||
msgid ""
|
||||
|
@ -1348,4 +1352,3 @@ msgstr "隱藏影片"
|
|||
|
||||
#~ msgid "preferences"
|
||||
#~ msgstr "偏好設定"
|
||||
|
||||
|
|
|
@ -1282,19 +1282,17 @@ Disallow: /*?*q=*
|
|||
|
||||
@app.route('/opensearch.xml', methods=['GET'])
|
||||
def opensearch():
|
||||
method = 'post'
|
||||
|
||||
if request.preferences.get_value('method') == 'GET':
|
||||
method = 'get'
|
||||
method = request.preferences.get_value('method')
|
||||
autocomplete = request.preferences.get_value('autocomplete')
|
||||
|
||||
# chrome/chromium only supports HTTP GET....
|
||||
if request.headers.get('User-Agent', '').lower().find('webkit') >= 0:
|
||||
method = 'get'
|
||||
method = 'GET'
|
||||
|
||||
autocomplete = request.preferences.get_value('autocomplete')
|
||||
if method not in ('POST', 'GET'):
|
||||
method = 'POST'
|
||||
|
||||
ret = render('opensearch.xml', opensearch_method=method, autocomplete=autocomplete)
|
||||
|
||||
resp = Response(response=ret, status=200, mimetype="application/opensearchdescription+xml")
|
||||
return resp
|
||||
|
||||
|
|
|
@ -244,7 +244,9 @@ class ViewsTestCase(SearxTestCase):
|
|||
def test_opensearch_xml(self):
|
||||
result = self.app.get('/opensearch.xml')
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertIn(b'<Description>a privacy-respecting, hackable metasearch engine</Description>', result.data)
|
||||
self.assertIn(
|
||||
b'<Description>SearXNG is a metasearch engine that respects your privacy.</Description>', result.data
|
||||
)
|
||||
|
||||
def test_favicon(self):
|
||||
result = self.app.get('/favicon.ico')
|
||||
|
|
Loading…
Reference in a new issue