mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
upd
This commit is contained in:
parent
44e942827e
commit
92aa12c131
28 changed files with 388 additions and 195 deletions
|
@ -126,6 +126,10 @@ extensions = [
|
|||
'notfound.extension', # https://github.com/readthedocs/sphinx-notfound-page
|
||||
]
|
||||
|
||||
myst_enable_extensions = [
|
||||
"replacements", "smartquotes"
|
||||
]
|
||||
|
||||
suppress_warnings = ['myst.domains']
|
||||
|
||||
intersphinx_mapping = {
|
||||
|
|
|
@ -3,7 +3,7 @@ nose2[coverage_plugin]==0.11.0
|
|||
cov-core==1.15.0
|
||||
black==22.3.0
|
||||
pycodestyle==2.8.0
|
||||
pylint==2.13.4
|
||||
pylint==2.13.5
|
||||
splinter==0.17.0
|
||||
selenium==4.1.3
|
||||
twine==4.0.0
|
||||
|
|
|
@ -13,6 +13,6 @@ uvloop==0.16.0
|
|||
httpx-socks[asyncio]==0.7.2
|
||||
langdetect==1.0.9
|
||||
setproctitle==1.2.2
|
||||
redis==4.2.0
|
||||
mistletoe==0.8.2
|
||||
redis==4.2.2
|
||||
markdown-it-py==2.0.1
|
||||
typing_extensions==4.1.1
|
||||
|
|
136
searx/engines/jisho.py
Normal file
136
searx/engines/jisho.py
Normal file
|
@ -0,0 +1,136 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
"""
|
||||
Jisho (the Japanese-English dictionary)
|
||||
"""
|
||||
|
||||
from urllib.parse import urlencode, urljoin
|
||||
|
||||
# about
|
||||
about = {
|
||||
"website": 'https://jisho.org',
|
||||
"wikidata_id": 'Q24568389',
|
||||
"official_api_documentation": "https://jisho.org/forum/54fefc1f6e73340b1f160000-is-there-any-kind-of-search-api",
|
||||
"use_official_api": True,
|
||||
"require_api_key": False,
|
||||
"results": 'JSON',
|
||||
"language": 'ja',
|
||||
}
|
||||
|
||||
categories = ['dictionaries']
|
||||
paging = False
|
||||
|
||||
URL = 'https://jisho.org'
|
||||
BASE_URL = 'https://jisho.org/word/'
|
||||
SEARCH_URL = URL + '/api/v1/search/words?{query}'
|
||||
|
||||
|
||||
def request(query, params):
|
||||
query = urlencode({'keyword': query})
|
||||
params['url'] = SEARCH_URL.format(query=query)
|
||||
logger.debug(f"query_url --> {params['url']}")
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
results = []
|
||||
first_result = True
|
||||
|
||||
search_results = resp.json()
|
||||
|
||||
for page in search_results.get('data', []):
|
||||
# Entries that are purely from Wikipedia are excluded.
|
||||
parts_of_speech = page.get('senses') and page['senses'][0].get('parts_of_speech')
|
||||
if parts_of_speech and parts_of_speech[0] == 'Wikipedia definition':
|
||||
pass
|
||||
|
||||
# Process alternative forms
|
||||
alt_forms = []
|
||||
for title_raw in page['japanese']:
|
||||
if 'word' not in title_raw:
|
||||
alt_forms.append(title_raw['reading'])
|
||||
else:
|
||||
title = title_raw['word']
|
||||
if 'reading' in title_raw:
|
||||
title += ' (' + title_raw['reading'] + ')'
|
||||
alt_forms.append(title)
|
||||
|
||||
#
|
||||
result_url = urljoin(BASE_URL, page['slug'])
|
||||
definitions = get_definitions(page)
|
||||
|
||||
# For results, we'll return the URL, all alternative forms (as title),
|
||||
# and all definitions (as description) truncated to 300 characters.
|
||||
content = " ".join(f"{engdef}." for _, engdef, _ in definitions)
|
||||
results.append({
|
||||
'url': result_url,
|
||||
'title': ", ".join(alt_forms),
|
||||
'content': content[:300] + (content[300:] and '...')
|
||||
})
|
||||
|
||||
# Like Wordnik, we'll return the first result in an infobox too.
|
||||
if first_result:
|
||||
first_result = False
|
||||
results.append(get_infobox(alt_forms, result_url, definitions))
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def get_definitions(page):
|
||||
# Process definitions
|
||||
definitions = []
|
||||
for defn_raw in page['senses']:
|
||||
extra = []
|
||||
# Extra data. Since they're not documented, this implementation is based solely by the author's assumptions.
|
||||
if defn_raw.get('tags'):
|
||||
if defn_raw.get('info'):
|
||||
# "usually written as kana: <kana>"
|
||||
extra.append(defn_raw['tags'][0] + ', ' + defn_raw['info'][0] + '. ')
|
||||
else:
|
||||
# abbreviation, archaism, etc.
|
||||
extra.append(', '.join(defn_raw['tags']) + '. ')
|
||||
elif defn_raw.get('info'):
|
||||
# inconsistent
|
||||
extra.append(', '.join(defn_raw['info']).capitalize() + '. ')
|
||||
if defn_raw.get('restrictions'):
|
||||
extra.append('Only applies to: ' + ', '.join(defn_raw['restrictions']) + '. ')
|
||||
definitions.append((
|
||||
', '.join(defn_raw['parts_of_speech']),
|
||||
'; '.join(defn_raw['english_definitions']),
|
||||
''.join(extra)[:-1],
|
||||
))
|
||||
return definitions
|
||||
|
||||
|
||||
def get_infobox(alt_forms, result_url, definitions):
|
||||
infobox_content = []
|
||||
# title & alt_forms
|
||||
infobox_title = alt_forms[0]
|
||||
if len(alt_forms) > 1:
|
||||
infobox_content.append(f'<p><i>Other forms:</i> {", ".join(alt_forms[1:])}</p>')
|
||||
|
||||
# definitions
|
||||
infobox_content.append('''
|
||||
<small><a href="https://www.edrdg.org/wiki/index.php/JMdict-EDICT_Dictionary_Project">JMdict</a>
|
||||
and <a href="https://www.edrdg.org/enamdict/enamdict_doc.html">JMnedict</a>
|
||||
by <a href="https://www.edrdg.org/edrdg/licence.html">EDRDG</a>, CC BY-SA 3.0.</small>
|
||||
<ul>
|
||||
''')
|
||||
for pos, engdef, extra in definitions:
|
||||
if pos == 'Wikipedia definition':
|
||||
infobox_content.append('</ul><small>Wikipedia, CC BY-SA 3.0.</small><ul>')
|
||||
pos = f'<i>{pos}</i>: ' if pos else ''
|
||||
extra = f' ({extra})' if extra else ''
|
||||
infobox_content.append(f'<li>{pos}{engdef}{extra}</li>')
|
||||
infobox_content.append('</ul>')
|
||||
|
||||
#
|
||||
return {
|
||||
'infobox': infobox_title,
|
||||
'content': ''.join(infobox_content),
|
||||
'urls': [
|
||||
{
|
||||
'title': 'Jisho.org',
|
||||
'url': result_url,
|
||||
}
|
||||
]
|
||||
}
|
|
@ -123,7 +123,7 @@ def response(resp):
|
|||
if not result_chunks:
|
||||
return []
|
||||
|
||||
title = "Wolfram|Alpha (%s)" % infobox_title
|
||||
title = "Wolfram Alpha (%s)" % infobox_title
|
||||
|
||||
# append infobox
|
||||
results.append(
|
||||
|
|
|
@ -29,7 +29,7 @@ import typing
|
|||
import urllib.parse
|
||||
import jinja2
|
||||
from flask.helpers import url_for
|
||||
import mistletoe
|
||||
from markdown_it import MarkdownIt
|
||||
|
||||
from .. import get_setting
|
||||
from ..compat import cached_property
|
||||
|
@ -71,13 +71,17 @@ class InfoPage:
|
|||
|
||||
@cached_property
|
||||
def html(self):
|
||||
"""Render Markdown (CommonMark_) to HTML by using mistletoe_.
|
||||
"""Render Markdown (CommonMark_) to HTML by using markdown-it-py_.
|
||||
|
||||
.. _CommonMark: https://commonmark.org/
|
||||
.. _mistletoe: https://github.com/miyuchina/mistletoe
|
||||
.. _markdown-it-py: https://github.com/executablebooks/markdown-it-py
|
||||
|
||||
"""
|
||||
return mistletoe.markdown(self.content)
|
||||
return MarkdownIt(
|
||||
"commonmark", {"typographer": True}
|
||||
).enable(
|
||||
["replacements", "smartquotes"]
|
||||
).render(self.content)
|
||||
|
||||
def get_ctx(self): # pylint: disable=no-self-use
|
||||
"""Jinja context to render :py:obj:`InfoPage.content`"""
|
||||
|
|
|
@ -1,55 +1,42 @@
|
|||
# About MAGI
|
||||
# About Search
|
||||
|
||||
MAGI is a fork from the well-known metasearch engine searx, aggregating
|
||||
Search is a fork from the well-known metasearch engine searx, aggregating
|
||||
the results of other {{link('search engines', 'preferences')}} while not
|
||||
storing information about its users.
|
||||
|
||||
More about MAGI ...
|
||||
|
||||
More about Search ...
|
||||
|
||||
## Why use it?
|
||||
|
||||
* MAGI may not offer you as personalised results as Google, but it doesn't
|
||||
* Search may not offer you as personalised results as Google, but it doesn't
|
||||
generate a profile about you.
|
||||
|
||||
* MAGI doesn't care about what you search for, never shares anything with a
|
||||
* Search doesn't care about what you search for, never shares anything with a
|
||||
third party, and it can't be used to compromise you.
|
||||
|
||||
* MAGI is free software, the code is 100% open and you can help to make it
|
||||
better.
|
||||
|
||||
If you do care about privacy, want to be a conscious user, or otherwise believe
|
||||
in digital freedom, make SearXNG your default search engine or run it on your
|
||||
own server
|
||||
|
||||
## Technical details - How does it work?
|
||||
|
||||
MAGI is a [metasearch engine], inspired by the [seeks project]. It provides
|
||||
Search is a [metasearch engine], inspired by the [seeks project]. It provides
|
||||
basic privacy by mixing your queries with searches on other platforms without
|
||||
storing search data. Queries are made using a POST request on every browser
|
||||
(except Chromium-based browsers*). Therefore they show up in neither our logs,
|
||||
nor your url history. In the case of Chromium-based browser users there is an
|
||||
exception: MAGI uses the search bar to perform GET requests. MAGI can be
|
||||
exception: Search uses the search bar to perform GET requests. Search can be
|
||||
added to your browser's search bar; moreover, it can be set as the default
|
||||
search engine.
|
||||
|
||||
## How to set as the default search engine?
|
||||
## How do I set it as the default search engine?
|
||||
|
||||
MAGI supports [OpenSearch]. For more information on changing your default
|
||||
Search supports [OpenSearch]. For more information on changing your default
|
||||
search engine, see your browser's documentation:
|
||||
|
||||
* [Firefox]
|
||||
* [Microsoft Edge]
|
||||
* Chromium-based browsers [only add websites that the user navigates to without
|
||||
a path.](https://www.chromium.org/tab-to-search)
|
||||
|
||||
## Where to find anonymous usage statistics of this instance ?
|
||||
|
||||
{{link('Stats page', 'stats')}} contains some useful data about the engines
|
||||
used.
|
||||
- [Firefox]
|
||||
- [Microsoft Edge] - Behind the link, you will also find some useful instructions
|
||||
for Chrome and Safari.
|
||||
- [Chromium]-based browsers only add websites that the user navigates to without
|
||||
a path.
|
||||
|
||||
[metasearch engine]: https://en.wikipedia.org/wiki/Metasearch_engine
|
||||
[seeks project]: https://beniz.github.io/seeks/
|
||||
[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md
|
||||
[Firefox]: https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox
|
||||
[Microsoft Edge]: https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine
|
||||
[Chromium]: https://www.chromium.org/tab-to-search
|
||||
|
|
|
@ -1,35 +1,69 @@
|
|||
# Search syntax
|
||||
|
||||
MAGI allows you to modify the default categories, engines and search language
|
||||
Search allows you to modify the default categories, engines and search language
|
||||
via the search query.
|
||||
|
||||
Prefix `!` to set category and engine names.
|
||||
## `!` select engine and category
|
||||
|
||||
Prefix: `:` to set the language.
|
||||
To set category and/or engine names use a `!` prefix. To give a few examples:
|
||||
|
||||
Abbrevations of the engines and languages are also accepted. Engine/category
|
||||
modifiers are chainable and inclusive. E.g. with {{search('!map !ddg !wp paris')}}
|
||||
search in map category **and** duckduckgo **and** wikipedia for
|
||||
`paris`.
|
||||
- search in wikipedia for **paris**
|
||||
|
||||
See the {{link('preferences', 'preferences')}} for the list of engines,
|
||||
categories and languages.
|
||||
- {{search('!wp paris')}}
|
||||
- {{search('!wikipedia paris')}}
|
||||
|
||||
## Examples
|
||||
- search in category **map** for **paris**
|
||||
|
||||
Search in wikipedia for `paris`:
|
||||
- {{search('!map paris')}}
|
||||
|
||||
* {{search('!wp paris')}}
|
||||
* {{search('!wikipedia paris')}}
|
||||
- image search
|
||||
|
||||
Search in category `map` for `paris`:
|
||||
- {{search('!images Wau Holland')}}
|
||||
|
||||
* {{search('!map paris')}}
|
||||
Abbreviations of the engines and languages are also accepted. Engine/category
|
||||
modifiers are chain able and inclusive. E.g. with {{search('!map !ddg !wp
|
||||
paris')}} search in map category and duckduckgo and wikipedia for **paris**.
|
||||
|
||||
Image search:
|
||||
## `:` select language
|
||||
|
||||
* {{search('!images Wau Holland')}}
|
||||
To select language filter use a `:` prefix. To give an example:
|
||||
|
||||
Custom language in wikipedia:
|
||||
- search wikipedia by a custom language
|
||||
|
||||
* {{search(':fr !wp Wau Holland')}}
|
||||
- {{search(':fr !wp Wau Holland')}}
|
||||
|
||||
## `!!` external bangs
|
||||
|
||||
SearXNG supports the external bangs from [ddg]. To directly jump to a external
|
||||
search page use the `!!` prefix. To give an example:
|
||||
|
||||
- search wikipedia by a custom language
|
||||
|
||||
- {{search('!!wfr Wau Holland')}}
|
||||
|
||||
Please note, your search will be performed directly in the external search
|
||||
engine, SearXNG cannot protect your privacy on this.
|
||||
|
||||
[ddg]: https://duckduckgo.com/bang
|
||||
|
||||
## Special Queries
|
||||
|
||||
In the {{link('preferences', 'preferences')}} page you find keywords for
|
||||
_special queries_. To give a few examples:
|
||||
|
||||
- generate a random UUID
|
||||
|
||||
- {{search('random uuid')}}
|
||||
|
||||
- find the average
|
||||
|
||||
- {{search('avg 123 548 2.04 24.2')}}
|
||||
|
||||
- show _user agent_ of your browser (needs to be activated)
|
||||
|
||||
- {{search('user-agent')}}
|
||||
|
||||
- convert strings to different hash digests (needs to be activated)
|
||||
|
||||
- {{search('md5 lorem ipsum')}}
|
||||
- {{search('sha512 lorem ipsum')}}
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
# list of language codes
|
||||
# this file is generated automatically by utils/fetch_languages.py
|
||||
language_codes = (
|
||||
('af-ZA', 'Afrikaans', '', 'Afrikaans', '\U0001f1ff\U0001f1e6'),
|
||||
('ar-EG', 'العربية', '', 'Arabic', '\U0001f1ea\U0001f1ec'),
|
||||
('be-BY', 'Беларуская', '', 'Belarusian', '\U0001f1e7\U0001f1fe'),
|
||||
('af-ZA', 'Afrikaans', 'Suid-Afrika', 'Afrikaans', '\U0001f1ff\U0001f1e6'),
|
||||
('ar-EG', 'العربية', 'مصر', 'Arabic', '\U0001f1ea\U0001f1ec'),
|
||||
('be-BY', 'Беларуская', 'Беларусь', 'Belarusian', '\U0001f1e7\U0001f1fe'),
|
||||
('bg-BG', 'Български', 'България', 'Bulgarian', '\U0001f1e7\U0001f1ec'),
|
||||
('ca-ES', 'Català', '', 'Catalan', '\U0001f1ea\U0001f1f8'),
|
||||
('ca-ES', 'Català', 'Espanya', 'Catalan', '\U0001f1ea\U0001f1f8'),
|
||||
('cs-CZ', 'Čeština', 'Česko', 'Czech', '\U0001f1e8\U0001f1ff'),
|
||||
('da-DK', 'Dansk', 'Danmark', 'Danish', '\U0001f1e9\U0001f1f0'),
|
||||
('de', 'Deutsch', '', 'German', '\U0001f310'),
|
||||
|
@ -28,26 +28,30 @@ language_codes = (
|
|||
('es-ES', 'Español', 'España', 'Spanish', '\U0001f1ea\U0001f1f8'),
|
||||
('es-MX', 'Español', 'México', 'Spanish', '\U0001f1f2\U0001f1fd'),
|
||||
('et-EE', 'Eesti', 'Eesti', 'Estonian', '\U0001f1ea\U0001f1ea'),
|
||||
('fa-IR', 'فارسی', '', 'Persian', '\U0001f1ee\U0001f1f7'),
|
||||
('fa-IR', 'فارسی', 'ایران', 'Persian', '\U0001f1ee\U0001f1f7'),
|
||||
('fi-FI', 'Suomi', 'Suomi', 'Finnish', '\U0001f1eb\U0001f1ee'),
|
||||
('fil-PH', 'Filipino', '', 'Filipino', '\U0001f1f5\U0001f1ed'),
|
||||
('fil-PH', 'Filipino', 'Pilipinas', 'Filipino', '\U0001f1f5\U0001f1ed'),
|
||||
('fr', 'Français', '', 'French', '\U0001f310'),
|
||||
('fr-BE', 'Français', 'Belgique', 'French', '\U0001f1e7\U0001f1ea'),
|
||||
('fr-CA', 'Français', 'Canada', 'French', '\U0001f1e8\U0001f1e6'),
|
||||
('fr-CH', 'Français', 'Suisse', 'French', '\U0001f1e8\U0001f1ed'),
|
||||
('fr-FR', 'Français', 'France', 'French', '\U0001f1eb\U0001f1f7'),
|
||||
('he-IL', 'עברית', '', 'Hebrew', '\U0001f1ee\U0001f1f1'),
|
||||
('hi-IN', 'हिन्दी', '', 'Hindi', '\U0001f1ee\U0001f1f3'),
|
||||
('hr-HR', 'Hrvatski', '', 'Croatian', '\U0001f1ed\U0001f1f7'),
|
||||
('he-IL', 'עברית', 'ישראל', 'Hebrew', '\U0001f1ee\U0001f1f1'),
|
||||
('hi-IN', 'हिन्दी', 'भारत', 'Hindi', '\U0001f1ee\U0001f1f3'),
|
||||
('hr-HR', 'Hrvatski', 'Hrvatska', 'Croatian', '\U0001f1ed\U0001f1f7'),
|
||||
('hu-HU', 'Magyar', 'Magyarország', 'Hungarian', '\U0001f1ed\U0001f1fa'),
|
||||
('id-ID', 'Indonesia', '', 'Indonesian', '\U0001f1ee\U0001f1e9'),
|
||||
('is-IS', 'Íslenska', '', 'Icelandic', '\U0001f1ee\U0001f1f8'),
|
||||
('id-ID', 'Indonesia', 'Indonesia', 'Indonesian', '\U0001f1ee\U0001f1e9'),
|
||||
('is-IS', 'Íslenska', 'Ísland', 'Icelandic', '\U0001f1ee\U0001f1f8'),
|
||||
('it-IT', 'Italiano', 'Italia', 'Italian', '\U0001f1ee\U0001f1f9'),
|
||||
('ja-JP', '日本語', '', 'Japanese', '\U0001f1ef\U0001f1f5'),
|
||||
('ko-KR', '한국어', '', 'Korean', '\U0001f1f0\U0001f1f7'),
|
||||
('lt-LT', 'Lietuvių', '', 'Lithuanian', '\U0001f1f1\U0001f1f9'),
|
||||
('lv-LV', 'Latviešu', '', 'Latvian', '\U0001f1f1\U0001f1fb'),
|
||||
('nb-NO', 'Norsk Bokmål', '', 'Norwegian Bokmål', '\U0001f1f3\U0001f1f4'),
|
||||
('ja-JP', '日本語', '日本', 'Japanese', '\U0001f1ef\U0001f1f5'),
|
||||
('ko-KR', '한국어', '대한민국', 'Korean', '\U0001f1f0\U0001f1f7'),
|
||||
('lt-LT', 'Lietuvių', 'Lietuva', 'Lithuanian', '\U0001f1f1\U0001f1f9'),
|
||||
('lv-LV', 'Latviešu', 'Latvija', 'Latvian', '\U0001f1f1\U0001f1fb'),
|
||||
( 'nb-NO',
|
||||
'Norsk Bokmål',
|
||||
'Norge',
|
||||
'Norwegian Bokmål',
|
||||
'\U0001f1f3\U0001f1f4'),
|
||||
('nl', 'Nederlands', '', 'Dutch', '\U0001f310'),
|
||||
('nl-BE', 'Nederlands', 'België', 'Dutch', '\U0001f1e7\U0001f1ea'),
|
||||
('nl-NL', 'Nederlands', 'Nederland', 'Dutch', '\U0001f1f3\U0001f1f1'),
|
||||
|
@ -56,16 +60,16 @@ language_codes = (
|
|||
('pt-BR', 'Português', 'Brasil', 'Portuguese', '\U0001f1e7\U0001f1f7'),
|
||||
('pt-PT', 'Português', 'Portugal', 'Portuguese', '\U0001f1f5\U0001f1f9'),
|
||||
('ro-RO', 'Română', 'România', 'Romanian', '\U0001f1f7\U0001f1f4'),
|
||||
('ru-RU', 'Русский', '', 'Russian', '\U0001f1f7\U0001f1fa'),
|
||||
('sk-SK', 'Slovenčina', '', 'Slovak', '\U0001f1f8\U0001f1f0'),
|
||||
('sl-SI', 'Slovenščina', '', 'Slovenian', '\U0001f1f8\U0001f1ee'),
|
||||
('sr-RS', 'Српски', '', 'Serbian', '\U0001f1f7\U0001f1f8'),
|
||||
('ru-RU', 'Русский', 'Россия', 'Russian', '\U0001f1f7\U0001f1fa'),
|
||||
('sk-SK', 'Slovenčina', 'Slovensko', 'Slovak', '\U0001f1f8\U0001f1f0'),
|
||||
('sl-SI', 'Slovenščina', 'Slovenija', 'Slovenian', '\U0001f1f8\U0001f1ee'),
|
||||
('sr-RS', 'Српски', 'Србија', 'Serbian', '\U0001f1f7\U0001f1f8'),
|
||||
('sv-SE', 'Svenska', 'Sverige', 'Swedish', '\U0001f1f8\U0001f1ea'),
|
||||
('sw-TZ', 'Kiswahili', '', 'Swahili', '\U0001f1f9\U0001f1ff'),
|
||||
('th-TH', 'ไทย', '', 'Thai', '\U0001f1f9\U0001f1ed'),
|
||||
('tr-TR', 'Türkçe', '', 'Turkish', '\U0001f1f9\U0001f1f7'),
|
||||
('uk-UA', 'Українська', '', 'Ukrainian', '\U0001f1fa\U0001f1e6'),
|
||||
('vi-VN', 'Tiếng Việt', '', 'Vietnamese', '\U0001f1fb\U0001f1f3'),
|
||||
('sw-TZ', 'Kiswahili', 'Tanzania', 'Swahili', '\U0001f1f9\U0001f1ff'),
|
||||
('th-TH', 'ไทย', 'ไทย', 'Thai', '\U0001f1f9\U0001f1ed'),
|
||||
('tr-TR', 'Türkçe', 'Türkiye', 'Turkish', '\U0001f1f9\U0001f1f7'),
|
||||
('uk-UA', 'Українська', 'Україна', 'Ukrainian', '\U0001f1fa\U0001f1e6'),
|
||||
('vi-VN', 'Tiếng Việt', 'Việt Nam', 'Vietnamese', '\U0001f1fb\U0001f1f3'),
|
||||
('zh', '中文', '', 'Chinese', '\U0001f310'),
|
||||
('zh-CN', '中文', '中国', 'Chinese', '\U0001f1e8\U0001f1f3'),
|
||||
('zh-HK', '中文', '中國香港特別行政區', 'Chinese', '\U0001f1ed\U0001f1f0'),
|
||||
|
|
|
@ -798,6 +798,12 @@ engines:
|
|||
timeout: 3.0
|
||||
disabled: true
|
||||
|
||||
- name: jisho
|
||||
engine: jisho
|
||||
shortcut: js
|
||||
timeout: 3.0
|
||||
disabled: true
|
||||
|
||||
- name: kickass
|
||||
engine: kickass
|
||||
shortcut: kc
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -145,7 +145,8 @@ article.result-images[data-vim-selected] {
|
|||
filter: opacity(60%);
|
||||
}
|
||||
|
||||
span.title {
|
||||
span.title,
|
||||
span.source {
|
||||
color: var(--color-result-image-span-font-selected);
|
||||
}
|
||||
}
|
||||
|
@ -373,7 +374,7 @@ article[data-vim-selected].category-social {
|
|||
|
||||
.result-images {
|
||||
flex-grow: 1;
|
||||
padding: 0.5rem 0.5rem 2rem 0.5rem;
|
||||
padding: 0.5rem 0.5rem 3rem 0.5rem;
|
||||
margin: 0.25rem;
|
||||
border: none !important;
|
||||
height: @results-image-row-height;
|
||||
|
@ -393,7 +394,8 @@ article[data-vim-selected].category-social {
|
|||
background: var(--color-result-image-background);
|
||||
}
|
||||
|
||||
span.title {
|
||||
span.title,
|
||||
span.source {
|
||||
display: block;
|
||||
position: absolute;
|
||||
|
||||
|
@ -405,6 +407,11 @@ article[data-vim-selected].category-social {
|
|||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
span.source {
|
||||
padding: 1.8rem 0 0 0;
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
}
|
||||
|
||||
.result-map {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<!-- Draw favicon -->
|
||||
{% macro draw_favicon(favicon) -%}
|
||||
<img width="32" height="32" class="favicon" src="{{ url_for('static', filename='img/icons/' + favicon + '.png') }}" alt="{{ favicon }}" />
|
||||
<img width="32" height="32" class="favicon" src="{{ url_for('static', filename='themes/oscar/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}" />
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro result_link(url, title, classes='', id='') -%}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<a {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} href="{{ result.img_src }}">{{- "" -}}
|
||||
<img class="image_thumbnail" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" alt="{{ result.title|striptags }}" loading="lazy" width="200" height="200">{{- "" -}}
|
||||
<span class="title">{{ result.title|striptags }}</span>{{- "" -}}
|
||||
<span class="source">{{ result.parsed_url.netloc }}</span>{{- "" -}}
|
||||
</a>{{- "" -}}
|
||||
<div class="detail">{{- "" -}}
|
||||
<a class="result-detail-close" href="#">{{ icon('close') }}</a>{{- "" -}}
|
||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-03-20 07:34+0000\n"
|
||||
"PO-Revision-Date: 2022-03-27 13:40+0000\n"
|
||||
"PO-Revision-Date: 2022-04-07 09:24+0000\n"
|
||||
"Last-Translator: Linerly <linerly@protonmail.com>\n"
|
||||
"Language-Team: Indonesian <https://weblate.bubu1.eu/projects/searxng/searxng/"
|
||||
"id/>\n"
|
||||
|
@ -365,7 +365,7 @@ msgstr "Tutup"
|
|||
#: searx/templates/simple/messages/no_results.html:6
|
||||
#: searx/templates/simple/results.html:46
|
||||
msgid "Error!"
|
||||
msgstr "Kesalahan!"
|
||||
msgstr "Terjadi kesalahan!"
|
||||
|
||||
#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:61
|
||||
msgid "Powered by"
|
||||
|
@ -429,7 +429,7 @@ msgstr "di-cache"
|
|||
#: searx/templates/oscar/macros.html:79 searx/templates/oscar/macros.html:93
|
||||
#: searx/templates/simple/macros.html:43
|
||||
msgid "proxied"
|
||||
msgstr "di-proksi"
|
||||
msgstr "diproksi"
|
||||
|
||||
#: searx/templates/oscar/macros.html:133
|
||||
#: searx/templates/oscar/preferences.html:344
|
||||
|
@ -550,7 +550,7 @@ msgstr "Pencarian Khusus"
|
|||
#: searx/templates/oscar/preferences.html:465
|
||||
#: searx/templates/simple/preferences.html:383
|
||||
msgid "Cookies"
|
||||
msgstr "Cookie"
|
||||
msgstr "Kuki"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:123
|
||||
#: searx/templates/oscar/preferences.html:125
|
||||
|
@ -726,9 +726,9 @@ msgid ""
|
|||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||
" rel=\"external\">learn more about request methods</a>"
|
||||
msgstr ""
|
||||
"Ubah bagaimana formulir dikirimkan, <a "
|
||||
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
|
||||
" rel=\"external\">pelajari lebih lanjut tentang metode permintaan</a>"
|
||||
"Ubah bagaimana formulir dikirimkan, <a href=\"https://id.wikipedia.org/wiki/"
|
||||
"Hypertext_Transfer_Protocol#Metode_permintaan\" rel=\"external\">pelajari "
|
||||
"lebih lanjut tentang metode permintaan</a>"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:284
|
||||
#: searx/templates/simple/preferences.html:259
|
||||
|
@ -874,7 +874,7 @@ msgid ""
|
|||
"This is the list of cookies and their values SearXNG is storing on your "
|
||||
"computer."
|
||||
msgstr ""
|
||||
"Ini adalah daftar cookie dan nilai-nilai mereka yang SearXNG simpan di "
|
||||
"Ini adalah daftar kuki dan nilai-nilai mereka yang SearXNG simpan di "
|
||||
"komputer Anda."
|
||||
|
||||
#: searx/templates/oscar/preferences.html:469
|
||||
|
@ -885,7 +885,7 @@ msgstr "Dengan daftar itu, Anda dapat menilai transparansi SearXNG."
|
|||
#: searx/templates/oscar/preferences.html:474
|
||||
#: searx/templates/simple/preferences.html:391
|
||||
msgid "Cookie name"
|
||||
msgstr "Nama cookie"
|
||||
msgstr "Nama kuki"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:475
|
||||
#: searx/templates/simple/preferences.html:392
|
||||
|
@ -898,7 +898,7 @@ msgid ""
|
|||
"These settings are stored in your cookies, this allows us not to store "
|
||||
"this data about you."
|
||||
msgstr ""
|
||||
"Pengaturan ini disimpan di cookie Anda, ini memungkinkan kami untuk tidak"
|
||||
"Pengaturan ini disimpan di kuki Anda, ini memungkinkan kami untuk tidak "
|
||||
"menyimpan data ini tentang Anda."
|
||||
|
||||
#: searx/templates/oscar/preferences.html:493
|
||||
|
@ -907,8 +907,8 @@ msgid ""
|
|||
"These cookies serve your sole convenience, we don't use these cookies to "
|
||||
"track you."
|
||||
msgstr ""
|
||||
"Cookie ini hanya untuk kenyamanan Anda, kami tidak menggunakan cookie ini"
|
||||
" untuk melacak Anda."
|
||||
"Kuki ini hanya untuk kenyamanan Anda, kami tidak menggunakan kuki ini untuk "
|
||||
"melacak Anda."
|
||||
|
||||
#: searx/templates/oscar/preferences.html:497
|
||||
#: searx/templates/simple/preferences.html:404
|
||||
|
@ -1118,7 +1118,7 @@ msgstr "Informasi!"
|
|||
|
||||
#: searx/templates/oscar/messages/no_cookies.html:4
|
||||
msgid "currently, there are no cookies defined."
|
||||
msgstr "saat ini, tidak ada cookie yang didefinisikan"
|
||||
msgstr "saat ini, tidak ada kuki yang didefinisikan"
|
||||
|
||||
#: searx/templates/oscar/messages/no_data_available.html:4
|
||||
#: searx/templates/simple/stats.html:21
|
||||
|
|
Binary file not shown.
|
@ -9,28 +9,29 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-03-20 07:34+0000\n"
|
||||
"PO-Revision-Date: 2021-12-10 07:17+0000\n"
|
||||
"PO-Revision-Date: 2022-04-07 09:24+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Lithuanian <https://weblate.bubu1.eu/projects/searxng/searxng/"
|
||||
"lt/>\n"
|
||||
"Language: lt\n"
|
||||
"Language-Team: Lithuanian "
|
||||
"<https://weblate.bubu1.eu/projects/searxng/searxng/lt/>\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100"
|
||||
" < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < "
|
||||
"11) ? 1 : n % 1 != 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 % 10 == 1 && (n % 100 > 19 || n % 100 < "
|
||||
"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 :"
|
||||
" n % 1 != 0 ? 2: 3);\n"
|
||||
"X-Generator: Weblate 4.11\n"
|
||||
"Generated-By: Babel 2.9.1\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
#: searx/searxng.msg
|
||||
msgid "others"
|
||||
msgstr ""
|
||||
msgstr "kiti"
|
||||
|
||||
#. CONSTANT_NAMES['OTHER_CATEGORY']
|
||||
#: searx/searxng.msg
|
||||
msgid "other"
|
||||
msgstr ""
|
||||
msgstr "kitas"
|
||||
|
||||
#. CATEGORY_NAMES['FILES']
|
||||
#: searx/searxng.msg
|
||||
|
@ -80,7 +81,7 @@ msgstr "žemėlapis"
|
|||
#. CATEGORY_NAMES['ONIONS']
|
||||
#: searx/searxng.msg
|
||||
msgid "onions"
|
||||
msgstr ""
|
||||
msgstr "svogūnai"
|
||||
|
||||
#. CATEGORY_NAMES['SCIENCE']
|
||||
#: searx/searxng.msg
|
||||
|
@ -90,105 +91,105 @@ msgstr "mokslas"
|
|||
#. CATEGORY_GROUPS['APPS']
|
||||
#: searx/searxng.msg
|
||||
msgid "apps"
|
||||
msgstr ""
|
||||
msgstr "programėlėles"
|
||||
|
||||
#. CATEGORY_GROUPS['DICTIONARIES']
|
||||
#: searx/searxng.msg
|
||||
msgid "dictionaries"
|
||||
msgstr ""
|
||||
msgstr "žodynai"
|
||||
|
||||
#. CATEGORY_GROUPS['LYRICS']
|
||||
#: searx/searxng.msg
|
||||
msgid "lyrics"
|
||||
msgstr ""
|
||||
msgstr "dainų žodžiai"
|
||||
|
||||
#. CATEGORY_GROUPS['PACKAGES']
|
||||
#: searx/searxng.msg
|
||||
msgid "packages"
|
||||
msgstr ""
|
||||
msgstr "paketai"
|
||||
|
||||
#. CATEGORY_GROUPS['Q_A']
|
||||
#: searx/searxng.msg
|
||||
msgid "q&a"
|
||||
msgstr ""
|
||||
msgstr "klausimai ir atsakymai"
|
||||
|
||||
#. CATEGORY_GROUPS['REPOS']
|
||||
#: searx/searxng.msg
|
||||
msgid "repos"
|
||||
msgstr ""
|
||||
msgstr "saugyklos"
|
||||
|
||||
#. CATEGORY_GROUPS['SOFTWARE_WIKIS']
|
||||
#: searx/searxng.msg
|
||||
msgid "software wikis"
|
||||
msgstr ""
|
||||
msgstr "programų žinynas"
|
||||
|
||||
#. CATEGORY_GROUPS['WEB']
|
||||
#: searx/searxng.msg
|
||||
msgid "web"
|
||||
msgstr ""
|
||||
msgstr "internetas"
|
||||
|
||||
#. STYLE_NAMES['AUTO']
|
||||
#: searx/searxng.msg
|
||||
msgid "auto"
|
||||
msgstr ""
|
||||
msgstr "automatinis"
|
||||
|
||||
#. STYLE_NAMES['LIGHT']
|
||||
#: searx/searxng.msg
|
||||
msgid "light"
|
||||
msgstr ""
|
||||
msgstr "lengvas"
|
||||
|
||||
#. STYLE_NAMES['DARK']
|
||||
#: searx/searxng.msg
|
||||
msgid "dark"
|
||||
msgstr ""
|
||||
msgstr "tamsus"
|
||||
|
||||
#: searx/webapp.py:169
|
||||
msgid "timeout"
|
||||
msgstr ""
|
||||
msgstr "laikas baigėsi"
|
||||
|
||||
#: searx/webapp.py:170
|
||||
msgid "parsing error"
|
||||
msgstr ""
|
||||
msgstr "parsavymo klaida"
|
||||
|
||||
#: searx/webapp.py:171
|
||||
msgid "HTTP protocol error"
|
||||
msgstr ""
|
||||
msgstr "HTTP protokolo klaida"
|
||||
|
||||
#: searx/webapp.py:172
|
||||
msgid "network error"
|
||||
msgstr ""
|
||||
msgstr "tinklo klaida"
|
||||
|
||||
#: searx/webapp.py:174
|
||||
msgid "unexpected crash"
|
||||
msgstr ""
|
||||
msgstr "netikėta klaida"
|
||||
|
||||
#: searx/webapp.py:181
|
||||
msgid "HTTP error"
|
||||
msgstr ""
|
||||
msgstr "HTTP klaida"
|
||||
|
||||
#: searx/webapp.py:182
|
||||
msgid "HTTP connection error"
|
||||
msgstr ""
|
||||
msgstr "HTTP prisijungimo klaida"
|
||||
|
||||
#: searx/webapp.py:188
|
||||
msgid "proxy error"
|
||||
msgstr ""
|
||||
msgstr "tarpinio serverio klaida"
|
||||
|
||||
#: searx/webapp.py:189
|
||||
msgid "CAPTCHA"
|
||||
msgstr ""
|
||||
msgstr "CAPTCHA"
|
||||
|
||||
#: searx/webapp.py:190
|
||||
msgid "too many requests"
|
||||
msgstr ""
|
||||
msgstr "Per daug užklausų"
|
||||
|
||||
#: searx/webapp.py:191
|
||||
msgid "access denied"
|
||||
msgstr ""
|
||||
msgstr "prieiga uždrausta"
|
||||
|
||||
#: searx/webapp.py:192
|
||||
msgid "server API error"
|
||||
msgstr ""
|
||||
msgstr "serverio API klaida"
|
||||
|
||||
#: searx/webapp.py:410
|
||||
msgid "No item found"
|
||||
|
@ -197,11 +198,11 @@ msgstr "Elementų nerasta"
|
|||
#: searx/engines/qwant.py:212
|
||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:412
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Šaltinis"
|
||||
|
||||
#: searx/webapp.py:414
|
||||
msgid "Error loading the next page"
|
||||
msgstr ""
|
||||
msgstr "Klaida keliant ateinantį puslapį"
|
||||
|
||||
#: searx/webapp.py:526 searx/webapp.py:967
|
||||
msgid "Invalid settings, please edit your preferences"
|
||||
|
@ -225,7 +226,7 @@ msgstr "prieš {hours} val., {minutes} min"
|
|||
|
||||
#: searx/webapp.py:871
|
||||
msgid "Suspended"
|
||||
msgstr ""
|
||||
msgstr "Sustabdytas"
|
||||
|
||||
#: searx/answerers/random/answerer.py:67
|
||||
msgid "Random value generator"
|
||||
|
@ -261,15 +262,15 @@ msgstr "Šiai publikacijai nėra prieinama jokia santrauka."
|
|||
|
||||
#: searx/engines/qwant.py:214
|
||||
msgid "Channel"
|
||||
msgstr ""
|
||||
msgstr "Kanalas"
|
||||
|
||||
#: searx/plugins/hash_plugin.py:24
|
||||
msgid "Converts strings to different hash digests."
|
||||
msgstr ""
|
||||
msgstr "Konvertuoja eilutes į skirtingas maišos santraukas."
|
||||
|
||||
#: searx/plugins/hash_plugin.py:52
|
||||
msgid "hash digest"
|
||||
msgstr ""
|
||||
msgstr "maišos santrauka"
|
||||
|
||||
#: searx/plugins/hostname_replace.py:9
|
||||
msgid "Hostname replace"
|
||||
|
@ -305,7 +306,7 @@ msgstr ""
|
|||
|
||||
#: searx/plugins/self_info.py:20
|
||||
msgid "Self Informations"
|
||||
msgstr ""
|
||||
msgstr "Informacija apie save"
|
||||
|
||||
#: searx/plugins/self_info.py:21
|
||||
msgid ""
|
||||
|
@ -397,7 +398,7 @@ msgstr "Viešieji egzemplioriai"
|
|||
|
||||
#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:66
|
||||
msgid "Contact instance maintainer"
|
||||
msgstr ""
|
||||
msgstr "Susisiekite su instancijos prižiūrėtoju"
|
||||
|
||||
#: searx/templates/oscar/languages.html:2
|
||||
msgid "Language"
|
||||
|
@ -442,7 +443,7 @@ msgstr "Leisti"
|
|||
|
||||
#: searx/templates/oscar/macros.html:139
|
||||
msgid "broken"
|
||||
msgstr ""
|
||||
msgstr "nutrūkęs"
|
||||
|
||||
#: searx/templates/oscar/macros.html:141
|
||||
msgid "supported"
|
||||
|
@ -465,7 +466,7 @@ msgstr "nuostatos"
|
|||
#: searx/templates/oscar/preferences.html:12
|
||||
#: searx/templates/simple/preferences.html:29
|
||||
msgid "No HTTPS"
|
||||
msgstr ""
|
||||
msgstr "Nėra HTTPS"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:14
|
||||
#: searx/templates/oscar/results.html:27 searx/templates/simple/results.html:39
|
||||
|
@ -474,7 +475,7 @@ msgstr "Rezultatų skaičius"
|
|||
|
||||
#: searx/templates/oscar/preferences.html:14
|
||||
msgid "Avg."
|
||||
msgstr ""
|
||||
msgstr "Vid."
|
||||
|
||||
#: searx/templates/oscar/messages/no_results.html:8
|
||||
#: searx/templates/oscar/preferences.html:17
|
||||
|
@ -485,33 +486,33 @@ msgstr ""
|
|||
#: searx/templates/simple/preferences.html:32
|
||||
#: searx/templates/simple/results.html:49
|
||||
msgid "View error logs and submit a bug report"
|
||||
msgstr ""
|
||||
msgstr "Peržiūrėkite klaidų žurnalus ir pateikite klaidų ataskaitą"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:38
|
||||
#: searx/templates/oscar/stats.html:70
|
||||
#: searx/templates/simple/preferences.html:53
|
||||
#: searx/templates/simple/stats.html:67
|
||||
msgid "Median"
|
||||
msgstr ""
|
||||
msgstr "Mediana"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:39
|
||||
#: searx/templates/oscar/stats.html:76
|
||||
#: searx/templates/simple/preferences.html:54
|
||||
#: searx/templates/simple/stats.html:73
|
||||
msgid "P80"
|
||||
msgstr ""
|
||||
msgstr "P80"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:40
|
||||
#: searx/templates/oscar/stats.html:82
|
||||
#: searx/templates/simple/preferences.html:55
|
||||
#: searx/templates/simple/stats.html:79
|
||||
msgid "P95"
|
||||
msgstr ""
|
||||
msgstr "P95"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:68
|
||||
#: searx/templates/simple/preferences.html:83
|
||||
msgid "Failed checker test(s): "
|
||||
msgstr ""
|
||||
msgstr "Nepavykęs tikrintojo testas (-ai): "
|
||||
|
||||
#: searx/templates/oscar/preferences.html:96
|
||||
#: searx/templates/simple/preferences.html:99
|
||||
|
@ -527,7 +528,7 @@ msgstr "Bendra"
|
|||
#: searx/templates/oscar/preferences.html:102
|
||||
#: searx/templates/oscar/preferences.html:193
|
||||
msgid "User Interface"
|
||||
msgstr ""
|
||||
msgstr "Vartotojo sąsaja"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:103
|
||||
#: searx/templates/oscar/preferences.html:268
|
||||
|
@ -1478,4 +1479,3 @@ msgstr ""
|
|||
#~ "search results but you can search "
|
||||
#~ "the engines listed here via bangs."
|
||||
#~ msgstr ""
|
||||
|
||||
|
|
Binary file not shown.
|
@ -11,16 +11,17 @@ msgstr ""
|
|||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-03-20 07:34+0000\n"
|
||||
"PO-Revision-Date: 2020-07-09 13:10+0000\n"
|
||||
"Last-Translator: Daniel Șerbănescu <daniel@serbanescu.dk>\n"
|
||||
"PO-Revision-Date: 2022-04-08 07:18+0000\n"
|
||||
"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Romanian <https://weblate.bubu1.eu/projects/searxng/searxng/"
|
||||
"ro/>\n"
|
||||
"Language: ro\n"
|
||||
"Language-Team: Romanian "
|
||||
"(http://www.transifex.com/asciimoo/searx/language/ro/)\n"
|
||||
"Plural-Forms: nplurals=3; "
|
||||
"plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.11\n"
|
||||
"Generated-By: Babel 2.9.1\n"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_GROUP_NAME']
|
||||
|
@ -91,57 +92,57 @@ msgstr "știință"
|
|||
#. CATEGORY_GROUPS['APPS']
|
||||
#: searx/searxng.msg
|
||||
msgid "apps"
|
||||
msgstr ""
|
||||
msgstr "aplicații"
|
||||
|
||||
#. CATEGORY_GROUPS['DICTIONARIES']
|
||||
#: searx/searxng.msg
|
||||
msgid "dictionaries"
|
||||
msgstr ""
|
||||
msgstr "dicționare"
|
||||
|
||||
#. CATEGORY_GROUPS['LYRICS']
|
||||
#: searx/searxng.msg
|
||||
msgid "lyrics"
|
||||
msgstr ""
|
||||
msgstr "versuri"
|
||||
|
||||
#. CATEGORY_GROUPS['PACKAGES']
|
||||
#: searx/searxng.msg
|
||||
msgid "packages"
|
||||
msgstr ""
|
||||
msgstr "pachete"
|
||||
|
||||
#. CATEGORY_GROUPS['Q_A']
|
||||
#: searx/searxng.msg
|
||||
msgid "q&a"
|
||||
msgstr ""
|
||||
msgstr "î&r"
|
||||
|
||||
#. CATEGORY_GROUPS['REPOS']
|
||||
#: searx/searxng.msg
|
||||
msgid "repos"
|
||||
msgstr ""
|
||||
msgstr "arhive digitale"
|
||||
|
||||
#. CATEGORY_GROUPS['SOFTWARE_WIKIS']
|
||||
#: searx/searxng.msg
|
||||
msgid "software wikis"
|
||||
msgstr ""
|
||||
msgstr "enciclopedii de programe"
|
||||
|
||||
#. CATEGORY_GROUPS['WEB']
|
||||
#: searx/searxng.msg
|
||||
msgid "web"
|
||||
msgstr ""
|
||||
msgstr "rețea"
|
||||
|
||||
#. STYLE_NAMES['AUTO']
|
||||
#: searx/searxng.msg
|
||||
msgid "auto"
|
||||
msgstr ""
|
||||
msgstr "automat"
|
||||
|
||||
#. STYLE_NAMES['LIGHT']
|
||||
#: searx/searxng.msg
|
||||
msgid "light"
|
||||
msgstr ""
|
||||
msgstr "luminos"
|
||||
|
||||
#. STYLE_NAMES['DARK']
|
||||
#: searx/searxng.msg
|
||||
msgid "dark"
|
||||
msgstr ""
|
||||
msgstr "întunecat"
|
||||
|
||||
#: searx/webapp.py:169
|
||||
msgid "timeout"
|
||||
|
@ -149,27 +150,27 @@ msgstr ""
|
|||
|
||||
#: searx/webapp.py:170
|
||||
msgid "parsing error"
|
||||
msgstr ""
|
||||
msgstr "examinare eșuată"
|
||||
|
||||
#: searx/webapp.py:171
|
||||
msgid "HTTP protocol error"
|
||||
msgstr ""
|
||||
msgstr "eroare protocol HTTP"
|
||||
|
||||
#: searx/webapp.py:172
|
||||
msgid "network error"
|
||||
msgstr ""
|
||||
msgstr "eraore rețea"
|
||||
|
||||
#: searx/webapp.py:174
|
||||
msgid "unexpected crash"
|
||||
msgstr ""
|
||||
msgstr "defecțiune neașteptată"
|
||||
|
||||
#: searx/webapp.py:181
|
||||
msgid "HTTP error"
|
||||
msgstr ""
|
||||
msgstr "eroare HTTP"
|
||||
|
||||
#: searx/webapp.py:182
|
||||
msgid "HTTP connection error"
|
||||
msgstr ""
|
||||
msgstr "eroare conexiune HTTP"
|
||||
|
||||
#: searx/webapp.py:188
|
||||
msgid "proxy error"
|
||||
|
@ -181,11 +182,11 @@ msgstr ""
|
|||
|
||||
#: searx/webapp.py:190
|
||||
msgid "too many requests"
|
||||
msgstr ""
|
||||
msgstr "Prea multe solicitări"
|
||||
|
||||
#: searx/webapp.py:191
|
||||
msgid "access denied"
|
||||
msgstr ""
|
||||
msgstr "Acces interzis"
|
||||
|
||||
#: searx/webapp.py:192
|
||||
msgid "server API error"
|
||||
|
@ -198,15 +199,15 @@ msgstr "Niciun element găsit"
|
|||
#: searx/engines/qwant.py:212
|
||||
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:412
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Sursă"
|
||||
|
||||
#: searx/webapp.py:414
|
||||
msgid "Error loading the next page"
|
||||
msgstr ""
|
||||
msgstr "Eroare la încărcarea paginii următoare"
|
||||
|
||||
#: searx/webapp.py:526 searx/webapp.py:967
|
||||
msgid "Invalid settings, please edit your preferences"
|
||||
msgstr "Configurări nevalide, editați preferințele"
|
||||
msgstr "Configurări nevalide, modificați preferințele"
|
||||
|
||||
#: searx/webapp.py:542
|
||||
msgid "Invalid settings"
|
||||
|
@ -226,7 +227,7 @@ msgstr "{hours} oră(e), {minutes} minut(e) în urmă"
|
|||
|
||||
#: searx/webapp.py:871
|
||||
msgid "Suspended"
|
||||
msgstr ""
|
||||
msgstr "Întrerupt"
|
||||
|
||||
#: searx/answerers/random/answerer.py:67
|
||||
msgid "Random value generator"
|
||||
|
@ -344,7 +345,7 @@ msgstr "Pagină negăsită"
|
|||
#: searx/templates/oscar/404.html:6 searx/templates/simple/404.html:6
|
||||
#, python-format
|
||||
msgid "Go to %(search_page)s."
|
||||
msgstr "Navighează la %(search_page)s"
|
||||
msgstr "Navighează la %(search_page)s."
|
||||
|
||||
#: searx/templates/oscar/404.html:6 searx/templates/simple/404.html:6
|
||||
msgid "search page"
|
||||
|
@ -652,7 +653,7 @@ msgstr "Schimbă limba aspectului"
|
|||
#: searx/templates/oscar/preferences.html:210
|
||||
#: searx/templates/simple/preferences.html:195
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
msgstr "Temă"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:211
|
||||
#: searx/templates/simple/preferences.html:203
|
||||
|
@ -716,7 +717,7 @@ msgstr "Încarcă automat pagina următoare când se derulează la baza paginii
|
|||
#: searx/templates/oscar/preferences.html:273
|
||||
#: searx/templates/simple/preferences.html:247
|
||||
msgid "HTTP Method"
|
||||
msgstr ""
|
||||
msgstr "Metodă HTTP"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:274
|
||||
#: searx/templates/simple/preferences.html:254
|
||||
|
@ -767,7 +768,7 @@ msgstr ""
|
|||
|
||||
#: searx/templates/oscar/preferences.html:326
|
||||
msgid "Allow all"
|
||||
msgstr ""
|
||||
msgstr "Permite toate"
|
||||
|
||||
#: searx/templates/oscar/preferences.html:327
|
||||
msgid "Disable all"
|
||||
|
@ -1121,7 +1122,7 @@ msgstr "Deocamdată nu există date disponibile."
|
|||
#: searx/templates/oscar/messages/no_results.html:4
|
||||
#: searx/templates/simple/messages/no_results.html:6
|
||||
msgid "Engines cannot retrieve results."
|
||||
msgstr "Motoarele nu pot obține rezultate"
|
||||
msgstr "Motoarele nu pot obține rezultate."
|
||||
|
||||
#: searx/templates/oscar/messages/no_results.html:13
|
||||
#: searx/templates/simple/messages/no_results.html:15
|
||||
|
@ -1479,4 +1480,3 @@ msgstr ""
|
|||
#~ "search results but you can search "
|
||||
#~ "the engines listed here via bangs."
|
||||
#~ msgstr ""
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ from typing import List, Dict, Iterable, Optional
|
|||
|
||||
import urllib
|
||||
import urllib.parse
|
||||
from urllib.parse import urlencode
|
||||
from urllib.parse import urlencode, unquote
|
||||
|
||||
import httpx
|
||||
|
||||
|
@ -434,7 +434,7 @@ def _get_enable_categories(all_categories: Iterable[str]):
|
|||
def get_pretty_url(parsed_url: urllib.parse.ParseResult):
|
||||
path = parsed_url.path
|
||||
path = path[:-1] if len(path) > 0 and path[-1] == '/' else path
|
||||
path = path.replace("/", " › ")
|
||||
path = unquote(path.replace("/", " › "))
|
||||
return [parsed_url.scheme + "://" + parsed_url.netloc, path]
|
||||
|
||||
|
||||
|
|
|
@ -113,6 +113,16 @@ def get_unicode_flag(lang_code):
|
|||
return c1 + c2
|
||||
|
||||
|
||||
def get_territory_name(lang_code):
|
||||
country_name = None
|
||||
locale = get_locale(lang_code)
|
||||
try:
|
||||
country_name = locale.get_territory_name()
|
||||
except FileNotFoundError as exc:
|
||||
print("ERROR: %s --> %s" % (locale, exc))
|
||||
return country_name
|
||||
|
||||
|
||||
# Join all language lists.
|
||||
def join_language_lists(engines_languages):
|
||||
language_list = {}
|
||||
|
@ -274,7 +284,7 @@ def write_languages_file(languages):
|
|||
item = (
|
||||
code,
|
||||
languages[code]['name'].split(' (')[0],
|
||||
languages[code].get('country_name') or '',
|
||||
get_territory_name(code) or '',
|
||||
languages[code].get('english_name') or '',
|
||||
UnicodeEscape(flag),
|
||||
)
|
||||
|
|
|
@ -130,7 +130,7 @@ class TestLanguageParser(SearxTestCase):
|
|||
self.assertEqual(query.autocomplete_list, [":hu-hu"])
|
||||
|
||||
query = RawTextQuery(':v', [])
|
||||
self.assertEqual(query.autocomplete_list, [":vi", ":tiếng việt"])
|
||||
self.assertEqual(query.autocomplete_list, [':vi', ':tiếng việt', ':việt_nam'])
|
||||
|
||||
|
||||
class TestTimeoutParser(SearxTestCase):
|
||||
|
|
|
@ -1535,7 +1535,7 @@ pkg_install() {
|
|||
;;
|
||||
arch)
|
||||
# shellcheck disable=SC2068
|
||||
pacman --noprogressbar -Sy --noconfirm $@
|
||||
pacman --noprogressbar -Sy --noconfirm --needed $@
|
||||
;;
|
||||
fedora)
|
||||
# shellcheck disable=SC2068
|
||||
|
|
|
@ -69,7 +69,7 @@ nvm.min_node() {
|
|||
local higher_v
|
||||
|
||||
if ! command -v node >/dev/null; then
|
||||
wanr_msg "Node.js is not yet installed"
|
||||
warn_msg "Node.js is not yet installed"
|
||||
return 42
|
||||
fi
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue