mirror of
https://github.com/searxng/searxng.git
synced 2024-05-19 20:08:04 +00:00
Merge remote-tracking branch 'searxng/master'
This commit is contained in:
commit
0f0a17f5d9
|
@ -172,3 +172,4 @@ features or generally made searx better:
|
|||
- Bernie Huang `<https://github.com/BernieHuang2008>`
|
||||
- Austin Olacsi `<https://github.com/Austin-Olacsi>`
|
||||
- Valentin Rieß `<https://github.com/v411e>`
|
||||
- @micsthepick
|
||||
|
|
3
Makefile
3
Makefile
|
@ -75,14 +75,13 @@ test.shell:
|
|||
# wrap ./manage script
|
||||
|
||||
MANAGE += weblate.translations.commit weblate.push.translations
|
||||
MANAGE += data.all data.traits data.useragents
|
||||
MANAGE += data.all data.traits data.useragents data.locales
|
||||
MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean
|
||||
MANAGE += docker.build docker.push docker.buildx
|
||||
MANAGE += gecko.driver
|
||||
MANAGE += node.env node.env.dev node.clean
|
||||
MANAGE += py.build py.clean
|
||||
MANAGE += pyenv pyenv.install pyenv.uninstall
|
||||
MANAGE += pypi.upload pypi.upload.test
|
||||
MANAGE += format.python
|
||||
MANAGE += test.yamllint test.pylint test.pyright test.black test.pybabel test.unit test.coverage test.robot test.rst test.clean
|
||||
MANAGE += themes.all themes.simple themes.simple.test pygments.less
|
||||
|
|
|
@ -271,22 +271,54 @@ type.
|
|||
``images``
|
||||
----------
|
||||
|
||||
.. table:: Parameter of the **images** media type:
|
||||
.. list-table:: Parameter of the **images** media type
|
||||
:header-rows: 2
|
||||
:width: 100%
|
||||
|
||||
========================= =====================================================
|
||||
result-parameter information
|
||||
------------------------- -----------------------------------------------------
|
||||
template is set to ``images.html``
|
||||
========================= =====================================================
|
||||
url string, url to the result site
|
||||
title string, title of the result *(partly implemented)*
|
||||
content *(partly implemented)*
|
||||
publishedDate :py:class:`datetime.datetime`,
|
||||
time of publish *(partly implemented)*
|
||||
img\_src string, url to the result image
|
||||
thumbnail\_src string, url to a small-preview image
|
||||
========================= =====================================================
|
||||
* - result-parameter
|
||||
- Python type
|
||||
- information
|
||||
|
||||
* - template
|
||||
- :py:class:`str`
|
||||
- is set to ``images.html``
|
||||
|
||||
* - url
|
||||
- :py:class:`str`
|
||||
- url to the result site
|
||||
|
||||
* - title
|
||||
- :py:class:`str`
|
||||
- title of the result
|
||||
|
||||
* - content
|
||||
- :py:class:`str`
|
||||
- description of the image
|
||||
|
||||
* - publishedDate
|
||||
- :py:class:`datetime <datetime.datetime>`
|
||||
- time of publish
|
||||
|
||||
* - img_src
|
||||
- :py:class:`str`
|
||||
- url to the result image
|
||||
|
||||
* - thumbnail_src
|
||||
- :py:class:`str`
|
||||
- url to a small-preview image
|
||||
|
||||
* - resolution
|
||||
- :py:class:`str`
|
||||
- the resolution of the image (e.g. ``1920 x 1080`` pixel)
|
||||
|
||||
* - img_format
|
||||
- :py:class:`str`
|
||||
- the format of the image (e.g. ``png``)
|
||||
|
||||
* - filesize
|
||||
- :py:class:`str`
|
||||
- size of bytes in :py:obj:`human readable <searx.humanize_bytes>` notation
|
||||
(e.g. ``MB`` for 1024 \* 1024 Bytes filesize).
|
||||
|
||||
|
||||
.. _template videos:
|
||||
|
@ -466,3 +498,68 @@ type.
|
|||
- :py:class:`str`
|
||||
- URL to full article, HTML version
|
||||
|
||||
|
||||
.. _template packages:
|
||||
|
||||
``packages``
|
||||
------------
|
||||
|
||||
.. list-table:: Parameter of the **packages** media type
|
||||
:header-rows: 2
|
||||
:width: 100%
|
||||
|
||||
* - result-parameter
|
||||
- Python type
|
||||
- information
|
||||
|
||||
* - template
|
||||
- :py:class:`str`
|
||||
- is set to ``packages.html``
|
||||
|
||||
* - title
|
||||
- :py:class:`str`
|
||||
- title of the result
|
||||
|
||||
* - content
|
||||
- :py:class:`str`
|
||||
- abstract
|
||||
|
||||
* - package_name
|
||||
- :py:class:`str`
|
||||
- the name of the package
|
||||
|
||||
* - version
|
||||
- :py:class:`str`
|
||||
- the current version of the package
|
||||
|
||||
* - maintainer
|
||||
- :py:class:`str`
|
||||
- the maintainer or author of the project
|
||||
|
||||
* - publishedDate
|
||||
- :py:class:`datetime <datetime.datetime>`
|
||||
- date of latest update or release
|
||||
|
||||
* - tags
|
||||
- :py:class:`List <list>`\ [\ :py:class:`str`\ ]
|
||||
- free tag list
|
||||
|
||||
* - popularity
|
||||
- :py:class:`str`
|
||||
- the popularity of the package, e.g. rating or download count
|
||||
|
||||
* - license_name
|
||||
- :py:class:`str`
|
||||
- the name of the license
|
||||
|
||||
* - license_url
|
||||
- :py:class:`str`
|
||||
- the web location of a license copy
|
||||
|
||||
* - homepage
|
||||
- :py:class:`str`
|
||||
- the url of the project's homepage
|
||||
|
||||
* - source_code_url
|
||||
- :py:class:`str`
|
||||
- the location of the project's source code
|
||||
|
|
13
docs/dev/engines/online/void.rst
Normal file
13
docs/dev/engines/online/void.rst
Normal file
|
@ -0,0 +1,13 @@
|
|||
.. _voidlinux engine:
|
||||
|
||||
==========================
|
||||
Void Linux binary packages
|
||||
==========================
|
||||
|
||||
.. contents:: Contents
|
||||
:depth: 2
|
||||
:local:
|
||||
:backlinks: entry
|
||||
|
||||
.. automodule:: searx.engines.voidlinux
|
||||
:members:
|
|
@ -292,7 +292,7 @@ content becomes smart.
|
|||
files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst```
|
||||
pull request :pull:`4` ``:pull:`4```
|
||||
patch :patch:`af2cae6` ``:patch:`af2cae6```
|
||||
PyPi package :pypi:`searx` ``:pypi:`searx```
|
||||
PyPi package :pypi:`httpx` ``:pypi:`httpx```
|
||||
manual page man :man:`bash` ``:man:`bash```
|
||||
intersphinx_
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -78,6 +78,16 @@ Scripts to update static data in :origin:`searx/data/`
|
|||
.. automodule:: searxng_extra.update.update_pygments
|
||||
:members:
|
||||
|
||||
.. _update_locales.py:
|
||||
|
||||
``update_locales.py``
|
||||
=====================
|
||||
|
||||
:origin:`[source] <searxng_extra/update/update_locales.py>`
|
||||
|
||||
.. automodule:: searxng_extra.update.update_locales
|
||||
:members:
|
||||
|
||||
|
||||
``update_wikidata_units.py``
|
||||
============================
|
||||
|
|
|
@ -10,11 +10,6 @@ Locales
|
|||
:backlinks: entry
|
||||
|
||||
.. automodule:: searx.locales
|
||||
:members:
|
||||
:members:
|
||||
|
||||
|
||||
SearXNG's locale codes
|
||||
======================
|
||||
|
||||
.. automodule:: searx.sxng_locales
|
||||
:members:
|
||||
|
|
15
manage
15
manage
|
@ -109,8 +109,6 @@ pyenv.:
|
|||
uninstall : uninstall developer installation
|
||||
cmd ... : run command ... in virtualenv
|
||||
OK : test if virtualenv is OK
|
||||
pypi.upload:
|
||||
Upload python packages to PyPi (to test use pypi.upload.test)
|
||||
format.:
|
||||
python : format Python code source using black
|
||||
pygments.:
|
||||
|
@ -334,19 +332,6 @@ pyenv.uninstall() {
|
|||
|
||||
}
|
||||
|
||||
pypi.upload() {
|
||||
py.clean
|
||||
py.build
|
||||
# https://github.com/pypa/twine
|
||||
pyenv.cmd twine upload "${PYDIST}"/*
|
||||
}
|
||||
|
||||
pypi.upload.test() {
|
||||
py.clean
|
||||
py.build
|
||||
pyenv.cmd twine upload -r testpypi "${PYDIST}"/*
|
||||
}
|
||||
|
||||
format.python() {
|
||||
build_msg TEST "[format.python] black \$BLACK_TARGETS"
|
||||
pyenv.cmd black "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}"
|
||||
|
|
|
@ -4,8 +4,7 @@ cov-core==1.15.0
|
|||
black==22.12.0
|
||||
pylint==3.0.3
|
||||
splinter==0.21.0
|
||||
selenium==4.17.2
|
||||
twine==4.0.2
|
||||
selenium==4.18.1
|
||||
Pallets-Sphinx-Themes==2.1.1
|
||||
Sphinx<=7.1.2; python_version == '3.8'
|
||||
Sphinx==7.2.6; python_version > '3.8'
|
||||
|
@ -18,6 +17,6 @@ sphinx-notfound-page==1.0.0
|
|||
myst-parser==2.0.0
|
||||
linuxdoc==20231020
|
||||
aiounittest==1.4.2
|
||||
yamllint==1.34.0
|
||||
yamllint==1.35.1
|
||||
wlc==1.13
|
||||
coloredlogs==15.0.1
|
||||
|
|
|
@ -15,6 +15,7 @@ __all__ = [
|
|||
'EXTERNAL_BANGS',
|
||||
'OSM_KEYS_TAGS',
|
||||
'ENGINE_DESCRIPTIONS',
|
||||
'LOCALES',
|
||||
'ahmia_blacklist_loader',
|
||||
]
|
||||
|
||||
|
@ -50,3 +51,4 @@ EXTERNAL_BANGS = _load('external_bangs.json')
|
|||
OSM_KEYS_TAGS = _load('osm_keys_tags.json')
|
||||
ENGINE_DESCRIPTIONS = _load('engine_descriptions.json')
|
||||
ENGINE_TRAITS = _load('engine_traits.json')
|
||||
LOCALES = _load('locales.json')
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -372,7 +372,7 @@
|
|||
"đô la barbados": "BBD",
|
||||
"تاكا بنغلاديشي": "BDT",
|
||||
"бангладешка така": "BDT",
|
||||
"বাংলাদেশী টাকা": "BDT",
|
||||
"টাকা": "BDT",
|
||||
"taka": [
|
||||
"INR",
|
||||
"BDT"
|
||||
|
@ -523,7 +523,7 @@
|
|||
"דולר ברוניי": "BND",
|
||||
"brunejski dolar": "BND",
|
||||
"brunei dollár": "BND",
|
||||
"dolar brunei darussalam": "BND",
|
||||
"dolar brunei": "BND",
|
||||
"dollaro del brunei": "BND",
|
||||
"ブルネイ・ドル": "BND",
|
||||
"브루나이 달러": "BND",
|
||||
|
@ -1486,6 +1486,7 @@
|
|||
"기니 프랑": "GNF",
|
||||
"gvinėjos frankas": "GNF",
|
||||
"guineese frank": "GNF",
|
||||
"franc guinean": "GNF",
|
||||
"frank gwinejski": "GNF",
|
||||
"franco da guiné": "GNF",
|
||||
"гвинейский франк": "GNF",
|
||||
|
@ -2141,6 +2142,8 @@
|
|||
"kuwaiti dinar": "KWD",
|
||||
"kuvajta dinaro": "KWD",
|
||||
"dinar kuwaití": "KWD",
|
||||
"kuveidi dinaar": "KWD",
|
||||
"kuwaitar dinar": "KWD",
|
||||
"kuwaitin dinaari": "KWD",
|
||||
"dinar koweïtien": "KWD",
|
||||
"דינר כוויתי": "KWD",
|
||||
|
@ -2613,6 +2616,7 @@
|
|||
"malediivien rufiyaa": "MVR",
|
||||
"maldivska rufija": "MVR",
|
||||
"maldív rúfia": "MVR",
|
||||
"rufiyaa maladewa": "MVR",
|
||||
"rufiyaa delle maldive": "MVR",
|
||||
"ルフィヤ": "MVR",
|
||||
"몰디브 루피야": "MVR",
|
||||
|
@ -3906,10 +3910,10 @@
|
|||
"tonžská paʻanga": "TOP",
|
||||
"tongan paʻanga": "TOP",
|
||||
"tonga paangao": "TOP",
|
||||
"pa'anga": "TOP",
|
||||
"פאנגה טונגאית": "TOP",
|
||||
"tonška pa’anga": "TOP",
|
||||
"tongai paʻanga": "TOP",
|
||||
"pa'anga": "TOP",
|
||||
"paʻanga tongano": "TOP",
|
||||
"パアンガ": "TOP",
|
||||
"통가 팡가": "TOP",
|
||||
|
@ -4216,6 +4220,7 @@
|
|||
"özbekistan somu": "UZS",
|
||||
"узбецький сум": "UZS",
|
||||
"venezuelan digital bolívar": "VED",
|
||||
"bolivar numérique": "VED",
|
||||
"sovereign bolivar": "VES",
|
||||
"bolívar soberano": "VES",
|
||||
"bolivar souverain": "VES",
|
||||
|
@ -4312,6 +4317,7 @@
|
|||
"silberpreis": "XAG",
|
||||
"silver as an investment": "XAG",
|
||||
"plata como inversión": "XAG",
|
||||
"argent d'investissement": "XAG",
|
||||
"perak sebagai pelaburan": "XAG",
|
||||
"silver som investering": "XAG",
|
||||
"bạc trong đầu tư": "XAG",
|
||||
|
@ -4916,11 +4922,7 @@
|
|||
"KM": "BAM",
|
||||
"bosenská konvertibilní marka": "BAM",
|
||||
"mark cyfnewidiol": "BAM",
|
||||
"bosnisch herzegowinische konvertible mark": "BAM",
|
||||
"fening": "BAM",
|
||||
"feninga": "BAM",
|
||||
"bam": "BAM",
|
||||
"km": "BAM",
|
||||
"mark": "BAM",
|
||||
"convertible mark": "BAM",
|
||||
"marka convertible": "BAM",
|
||||
"marco bosnio": "BAM",
|
||||
|
@ -4937,6 +4939,7 @@
|
|||
"bosnijos ir hercegovinos markė": "BAM",
|
||||
"bosnische convertibele mark": "BAM",
|
||||
"bosnische konvertibilna marka": "BAM",
|
||||
"feninga": "BAM",
|
||||
"marka de bòsnia e ercegovina": "BAM",
|
||||
"marka konwertybilna": "BAM",
|
||||
"marka transferowa": "BAM",
|
||||
|
@ -4946,15 +4949,14 @@
|
|||
"marca bosniacă convertibilă": "BAM",
|
||||
"marcă convertibilă a bosniei şi herţegovinei": "BAM",
|
||||
"marcă convertibilă a bosniei și herțegovinei": "BAM",
|
||||
"bam": "BAM",
|
||||
"боснийская конвертируемая марка": "BAM",
|
||||
"боснийская марка": "BAM",
|
||||
"валюта боснии и герцеговины": "BAM",
|
||||
"конвертируемая марка боснии и герцеговины": "BAM",
|
||||
"марка": "BAM",
|
||||
"konvertibilna marka bosne in hercegovine": "BAM",
|
||||
"босанскохерцеговачка конвертибилна марка": "BAM",
|
||||
"км": "BAM",
|
||||
"марка у босни и херцеговини": "BAM",
|
||||
"km": "BAM",
|
||||
"konvertibel mark": "BAM",
|
||||
"konvertibla mark": "BAM",
|
||||
"கன்வர்டிபிள் மார்க்கு": "BAM",
|
||||
|
@ -4983,7 +4985,7 @@
|
|||
"பார்படோஸ் டாலர்": "BBD",
|
||||
"৳": "BDT",
|
||||
"така": "BDT",
|
||||
"টাকা": "BDT",
|
||||
"বাংলাদেশী টাকা": "BDT",
|
||||
"bdt": [
|
||||
"BTN",
|
||||
"BDT"
|
||||
|
@ -5029,7 +5031,6 @@
|
|||
"bulgariska leva": "BGN",
|
||||
"பல்காரிய லெவ்": "BGN",
|
||||
"bulgar levi": "BGN",
|
||||
"лв": "BGN",
|
||||
"الدينار البحريني": "BHD",
|
||||
"BD": "BHD",
|
||||
"bhd": "BHD",
|
||||
|
@ -5128,7 +5129,6 @@
|
|||
"ブルネイドル": "BND",
|
||||
"브루나이 링깃": "BND",
|
||||
"ബ്രൂണെയ് ഡോളർ": "BND",
|
||||
"dolar brunei": "BND",
|
||||
"dólar bruneíno": "BND",
|
||||
"dólar do brunei": "BND",
|
||||
"валюта брунея": "BND",
|
||||
|
@ -5669,6 +5669,7 @@
|
|||
"franco di gibuti": "DJF",
|
||||
"지부티프랑": "DJF",
|
||||
"djiboutische frank": "DJF",
|
||||
"franc jibotian": "DJF",
|
||||
"franco djibutiano": "DJF",
|
||||
"franco djibutiense": "DJF",
|
||||
"franco do djibuti": "DJF",
|
||||
|
@ -5755,6 +5756,17 @@
|
|||
"валюта алжира": "DZD",
|
||||
"அல்ஜீரிய தினார்": "DZD",
|
||||
"الجنية المصري": "EGP",
|
||||
"£": [
|
||||
"SYP",
|
||||
"SSP",
|
||||
"SHP",
|
||||
"SDG",
|
||||
"LBP",
|
||||
"GIP",
|
||||
"GBP",
|
||||
"FKP",
|
||||
"EGP"
|
||||
],
|
||||
"LE": "EGP",
|
||||
"الجنيه المصري": "EGP",
|
||||
"ج.م": "EGP",
|
||||
|
@ -5806,9 +5818,7 @@
|
|||
"ern": "ERN",
|
||||
"nkf": "ERN",
|
||||
"eritrea nagfo": "ERN",
|
||||
"nafka eritrea": "ERN",
|
||||
"מטבע אריתריאה": "ERN",
|
||||
"nafka": "ERN",
|
||||
"nakfa eritreo": "ERN",
|
||||
"エリトリア・ナクファ": "ERN",
|
||||
"낙파": "ERN",
|
||||
|
@ -5880,16 +5890,6 @@
|
|||
"фиџи долар": "FJD",
|
||||
"долар фіджі": "FJD",
|
||||
"FJ$": "FJD",
|
||||
"£": [
|
||||
"SYP",
|
||||
"SSP",
|
||||
"SHP",
|
||||
"SDG",
|
||||
"LBP",
|
||||
"GIP",
|
||||
"GBP",
|
||||
"FKP"
|
||||
],
|
||||
"FK£": "FKP",
|
||||
"lliura de les falkland": "FKP",
|
||||
"lliura de les illes falkland": "FKP",
|
||||
|
@ -6117,6 +6117,7 @@
|
|||
"кветцал": "GTQ",
|
||||
"кетсал": "GTQ",
|
||||
"кетсаль": "GTQ",
|
||||
"kvecal": "GTQ",
|
||||
"гватемальський кецаль": "GTQ",
|
||||
"دولار غوياني": "GYD",
|
||||
"G$": "GYD",
|
||||
|
@ -6257,10 +6258,6 @@
|
|||
"indonesiar errupia": "IDR",
|
||||
"roupie indonesienne": "IDR",
|
||||
"רופיה אינדונזית": "IDR",
|
||||
"gobang": "IDR",
|
||||
"peser": "IDR",
|
||||
"rupiah baru": "IDR",
|
||||
"sepeser": "IDR",
|
||||
"インドネシア・ルピア": "IDR",
|
||||
"インドネシア・ルピー": "IDR",
|
||||
"루피아": "IDR",
|
||||
|
@ -6592,7 +6589,6 @@
|
|||
"KES"
|
||||
],
|
||||
"šiling": "KES",
|
||||
"سوم قرغيزستاني": "KGS",
|
||||
"⃀": "KGS",
|
||||
"som de kirguizistan": "KGS",
|
||||
"som del kirguizistan": "KGS",
|
||||
|
@ -6611,6 +6607,7 @@
|
|||
"som quirguiz": "KGS",
|
||||
"some": "KGS",
|
||||
"валюта киргизии": "KGS",
|
||||
"валюта кыргызстана": "KGS",
|
||||
"кыргызский сом": "KGS",
|
||||
"сом": [
|
||||
"UZS",
|
||||
|
@ -6971,6 +6968,7 @@
|
|||
"ariary de madagáscar": "MGA",
|
||||
"ариари": "MGA",
|
||||
"валюта мадагаскара": "MGA",
|
||||
"madagaskarski ariari": "MGA",
|
||||
"малгашки ариари": "MGA",
|
||||
"madagaskisk ariary": "MGA",
|
||||
"ar": "MGA",
|
||||
|
@ -7132,7 +7130,6 @@
|
|||
"malediven rupie": "MVR",
|
||||
"rupia maldiva": "MVR",
|
||||
"maldív szigeteki rúfia": "MVR",
|
||||
"rufiyaa maladewa": "MVR",
|
||||
"ルフィア": "MVR",
|
||||
"ルフィヤー": "MVR",
|
||||
"루피야": "MVR",
|
||||
|
@ -8161,6 +8158,7 @@
|
|||
"الليرة السورية": "SYP",
|
||||
"syr£": "SYP",
|
||||
"الليره السورية": "SYP",
|
||||
"ل.س": "SYP",
|
||||
"ليرات سورية": "SYP",
|
||||
"ليره سوريه": "SYP",
|
||||
"সিরিয়ান পাউন্ড": "SYP",
|
||||
|
@ -8324,6 +8322,7 @@
|
|||
"dinar da tunísia": "TND",
|
||||
"dinar tunisino": "TND",
|
||||
"валюта туниса": "TND",
|
||||
"milim": "TND",
|
||||
"тунижански динар": "TND",
|
||||
"د.ت": "TND",
|
||||
"T$": "TOP",
|
||||
|
@ -8605,13 +8604,19 @@
|
|||
"buck": "USD",
|
||||
"greenback": "USD",
|
||||
"us $": "USD",
|
||||
"$usd": "USD",
|
||||
"american dollar": "USD",
|
||||
"american dollars": "USD",
|
||||
"u. s. dollar": "USD",
|
||||
"u.s. dollar": [
|
||||
"USN",
|
||||
"USD"
|
||||
],
|
||||
"us dollars": "USD",
|
||||
"us$": "USD",
|
||||
"usa dollars": "USD",
|
||||
"usd$": "USD",
|
||||
"united states dollars": "USD",
|
||||
"dólar americano": "USD",
|
||||
"dólar de américa": "USD",
|
||||
"dólar de ee.uu.": "USD",
|
||||
|
@ -8622,6 +8627,7 @@
|
|||
"dólar de los estados unidos": "USD",
|
||||
"dólar norteamericano": "USD",
|
||||
"dólares": "USD",
|
||||
"dólares estadounidenses": "USD",
|
||||
"$ us": "USD",
|
||||
"dollar des états unis": "USD",
|
||||
"dollar étatsunien": "USD",
|
||||
|
@ -8830,7 +8836,6 @@
|
|||
"silver as currency": "XAG",
|
||||
"la plata como inversión": "XAG",
|
||||
"la plata como inversion": "XAG",
|
||||
"argent d'investissement": "XAG",
|
||||
"argent en tant qu'investissement": "XAG",
|
||||
"投資対象としての銀": "XAG",
|
||||
"серебро как инвестиция": "XAG",
|
||||
|
@ -9026,10 +9031,14 @@
|
|||
"남아프리카공화국 랜드": "ZAR",
|
||||
"par randas": "ZAR",
|
||||
"pietų afrikos randas": "ZAR",
|
||||
"dienvidāfrikas rands": "ZAR",
|
||||
"dienvidāfrikas republikas rands": "ZAR",
|
||||
"dienvidāfrikas rends": "ZAR",
|
||||
"rands": "ZAR",
|
||||
"rends": "ZAR",
|
||||
"rand południowoafrykański": "ZAR",
|
||||
"rand sul africano": "ZAR",
|
||||
"rand sulafricano": "ZAR",
|
||||
"rands": "ZAR",
|
||||
"валюта юар": "ZAR",
|
||||
"ранд юар": "ZAR",
|
||||
"рэнд": "ZAR",
|
||||
|
@ -9040,7 +9049,6 @@
|
|||
"južnoafriški rand": "ZAR",
|
||||
"sydafrikansk rand": "ZAR",
|
||||
"південно африканський ранд": "ZAR",
|
||||
"كواشا زامبية": "ZMW",
|
||||
"kwacha de zàmbia": "ZMW",
|
||||
"ngwee": "ZMW",
|
||||
"sambia kwacha": "ZMW",
|
||||
|
@ -9110,7 +9118,7 @@
|
|||
"cs": "afghánský afghání",
|
||||
"da": "Afghani",
|
||||
"de": "Afghani",
|
||||
"en": "Afghan afghani",
|
||||
"en": "afghani",
|
||||
"eo": "afgana afganio",
|
||||
"es": "afgani afgano",
|
||||
"et": "Afganistani afgaani",
|
||||
|
@ -9465,14 +9473,14 @@
|
|||
"cs": "Konvertibilní marka",
|
||||
"da": "Konvertibilna mark",
|
||||
"de": "konvertible Mark",
|
||||
"en": "Bosnia and Herzegovina convertible mark",
|
||||
"en": "convertible mark",
|
||||
"eo": "konvertebla marko",
|
||||
"es": "marco bosnioherzegovino",
|
||||
"fi": "Bosnian ja Hertsegovinan vaihdettava markka",
|
||||
"fr": "mark convertible de Bosnie-Herzégovine",
|
||||
"gl": "Marco convertible",
|
||||
"he": "מארק סחיר",
|
||||
"hr": "Konvertibilna marka",
|
||||
"hr": "konvertibilna marka",
|
||||
"hu": "bosnyák konvertibilis márka",
|
||||
"id": "Mark Bosnia dan Herzegovina",
|
||||
"it": "marco bosniaco",
|
||||
|
@ -9721,7 +9729,7 @@
|
|||
"he": "דולר ברוניי",
|
||||
"hr": "Brunejski dolar",
|
||||
"hu": "brunei dollár",
|
||||
"id": "Dolar Brunei Darussalam",
|
||||
"id": "dolar Brunei",
|
||||
"it": "dollaro del Brunei",
|
||||
"ja": "ブルネイ・ドル",
|
||||
"ko": "브루나이 달러",
|
||||
|
@ -10463,7 +10471,8 @@
|
|||
"sv": "Djiboutisk franc",
|
||||
"tr": "Cibuti frangı",
|
||||
"uk": "Франк Джибуті",
|
||||
"he": "פרנק ג'יבוטי"
|
||||
"he": "פרנק ג'יבוטי",
|
||||
"oc": "Franc jibotian"
|
||||
},
|
||||
"DKK": {
|
||||
"af": "Deense kroon",
|
||||
|
@ -10681,7 +10690,8 @@
|
|||
"sr": "етиопски бир",
|
||||
"sv": "Etiopisk Birr",
|
||||
"tr": "Birr",
|
||||
"uk": "Ефіопський бир"
|
||||
"uk": "Ефіопський бир",
|
||||
"sl": "etiopski bir"
|
||||
},
|
||||
"EUR": {
|
||||
"af": "Euro",
|
||||
|
@ -11013,6 +11023,7 @@
|
|||
"lt": "Gvinėjos frankas",
|
||||
"ms": "Franc Guinea",
|
||||
"nl": "Guineese frank",
|
||||
"oc": "Franc guinean",
|
||||
"pl": "frank gwinejski",
|
||||
"pt": "Franco da Guiné",
|
||||
"ru": "Гвинейский франк",
|
||||
|
@ -11054,7 +11065,8 @@
|
|||
"sv": "Quetzal",
|
||||
"tr": "Guatemala quetzalı",
|
||||
"uk": "Гватемальський кетсаль",
|
||||
"cy": "Quetzal Gwatemala"
|
||||
"cy": "Quetzal Gwatemala",
|
||||
"sl": "gvatemalski kvecal"
|
||||
},
|
||||
"GYD": {
|
||||
"ar": "دولار غوياني",
|
||||
|
@ -11257,7 +11269,7 @@
|
|||
"fr": "roupie indonésienne",
|
||||
"hr": "Indonezijska rupija",
|
||||
"hu": "indonéz rúpia",
|
||||
"id": "Rupiah Indonesia",
|
||||
"id": "rupiah Indonesia",
|
||||
"it": "rupia indonesiana",
|
||||
"ja": "ルピア",
|
||||
"ko": "인도네시아 루피아",
|
||||
|
@ -11402,7 +11414,7 @@
|
|||
"sv": "Irakisk dinar",
|
||||
"th": "ดินาร์อิรัก",
|
||||
"tr": "Irak dinarı",
|
||||
"uk": "Іракський динар",
|
||||
"uk": "іракський динар",
|
||||
"sl": "iraški dinar",
|
||||
"ta": "இராக்கிய தீனார்"
|
||||
},
|
||||
|
@ -11636,7 +11648,7 @@
|
|||
"sl": "kenijski šiling"
|
||||
},
|
||||
"KGS": {
|
||||
"ar": "سوم قرغيزستاني",
|
||||
"ar": "سوم قيرغيزستاني",
|
||||
"bg": "Киргизстански сом",
|
||||
"ca": "som kirguís",
|
||||
"cs": "Kyrgyzský som",
|
||||
|
@ -11825,6 +11837,8 @@
|
|||
"en": "Kuwaiti dinar",
|
||||
"eo": "kuvajta dinaro",
|
||||
"es": "dinar kuwaití",
|
||||
"et": "Kuveidi dinaar",
|
||||
"eu": "Kuwaitar dinar",
|
||||
"fi": "Kuwaitin dinaari",
|
||||
"fr": "dinar koweïtien",
|
||||
"he": "דינר כוויתי",
|
||||
|
@ -12223,7 +12237,7 @@
|
|||
"pl": "Ariary",
|
||||
"pt": "ariary malgaxe",
|
||||
"ru": "малагасийский ариари",
|
||||
"sl": "Malgaški ariari",
|
||||
"sl": "malgaški ariari",
|
||||
"sr": "ариари",
|
||||
"sv": "Madagaskisk ariary",
|
||||
"tr": "Ariary",
|
||||
|
@ -12455,7 +12469,7 @@
|
|||
"fr": "rufiyaa",
|
||||
"hr": "Maldivska rufija",
|
||||
"hu": "maldív rúfia",
|
||||
"id": "Rufiyaa",
|
||||
"id": "rufiyaa Maladewa",
|
||||
"it": "rufiyaa delle Maldive",
|
||||
"ja": "ルフィヤ",
|
||||
"ko": "몰디브 루피야",
|
||||
|
@ -14014,7 +14028,7 @@
|
|||
"pl": "Dinar tunezyjski",
|
||||
"pt": "dinar tunisiano",
|
||||
"ru": "тунисский динар",
|
||||
"sl": "Tunizijski dinar",
|
||||
"sl": "tunizijski dinar",
|
||||
"sr": "туниски динар",
|
||||
"sv": "Tunisisk dinar",
|
||||
"tr": "Tunus dinarı",
|
||||
|
@ -14400,12 +14414,13 @@
|
|||
},
|
||||
"VED": {
|
||||
"en": "Digital bolívar",
|
||||
"fr": "bolivar numérique",
|
||||
"es": "Bolívar digital"
|
||||
},
|
||||
"VES": {
|
||||
"en": "sovereign bolivar",
|
||||
"es": "bolívar soberano",
|
||||
"fr": "Bolivar souverain",
|
||||
"fr": "bolivar souverain",
|
||||
"hu": "venezuelai bolívar",
|
||||
"ja": "ボリバル・ソベラノ",
|
||||
"pt": "Bolívar soberano",
|
||||
|
@ -14555,10 +14570,10 @@
|
|||
"de": "Silberpreis",
|
||||
"en": "silver as an investment",
|
||||
"es": "La plata como inversión",
|
||||
"fr": "argent d'investissement",
|
||||
"ms": "Perak sebagai pelaburan",
|
||||
"sv": "Silver som investering",
|
||||
"vi": "Bạc như một khoản đầu tư",
|
||||
"fr": "argent d'investissement",
|
||||
"ja": "投資対象としての銀",
|
||||
"ru": "серебро как инвестиция"
|
||||
},
|
||||
|
@ -14835,10 +14850,11 @@
|
|||
"tr": "Güney Afrika randı",
|
||||
"uk": "Ранд",
|
||||
"cy": "Rand De Affrica",
|
||||
"lv": "Dienvidāfrikas rands",
|
||||
"sl": "južnoafriški rand"
|
||||
},
|
||||
"ZMW": {
|
||||
"ar": "كواشا زامبية",
|
||||
"ar": "كواشا زامبي",
|
||||
"ca": "kwacha zambià",
|
||||
"cs": "Zambijská kwacha",
|
||||
"da": "Zambianske kwacha",
|
||||
|
@ -14866,7 +14882,8 @@
|
|||
"sv": "Zambisk kwacha",
|
||||
"tr": "Zambiya kwachası",
|
||||
"uk": "Замбійська квача",
|
||||
"oc": "Kwacha zambian"
|
||||
"oc": "Kwacha zambian",
|
||||
"sl": "zambijska kvača"
|
||||
},
|
||||
"ZWL": {
|
||||
"en": "Zimbabwean dollar",
|
||||
|
|
File diff suppressed because it is too large
Load diff
69
searx/data/locales.json
Normal file
69
searx/data/locales.json
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"LOCALE_NAMES": {
|
||||
"af": "Afrikaans",
|
||||
"ar": "العربية (Arabic)",
|
||||
"bg": "Български (Bulgarian)",
|
||||
"bn": "বাংলা (Bangla)",
|
||||
"bo": "བོད་སྐད་ (Tibetan)",
|
||||
"ca": "Català (Catalan)",
|
||||
"cs": "Čeština (Czech)",
|
||||
"cy": "Cymraeg (Welsh)",
|
||||
"da": "Dansk (Danish)",
|
||||
"de": "Deutsch (German)",
|
||||
"dv": "ދިވެހި (Dhivehi)",
|
||||
"el-GR": "Ελληνικά, Ελλάδα (Greek, Greece)",
|
||||
"en": "English",
|
||||
"eo": "Esperanto",
|
||||
"es": "Español (Spanish)",
|
||||
"et": "Eesti (Estonian)",
|
||||
"eu": "Euskara (Basque)",
|
||||
"fa-IR": "فارسی, ایران (Persian, Iran)",
|
||||
"fi": "Suomi (Finnish)",
|
||||
"fil": "Filipino",
|
||||
"fr": "Français (French)",
|
||||
"gl": "Galego (Galician)",
|
||||
"he": "עברית (Hebrew)",
|
||||
"hr": "Hrvatski (Croatian)",
|
||||
"hu": "Magyar (Hungarian)",
|
||||
"ia": "Interlingua",
|
||||
"id": "Indonesia (Indonesian)",
|
||||
"it": "Italiano (Italian)",
|
||||
"ja": "日本語 (Japanese)",
|
||||
"ko": "한국어 (Korean)",
|
||||
"lt": "Lietuvių (Lithuanian)",
|
||||
"lv": "Latviešu (Latvian)",
|
||||
"ml": "മലയാളം (Malayalam)",
|
||||
"ms": "Melayu (Malay)",
|
||||
"nb-NO": "Norsk bokmål, Norge (Norwegian bokmål, Norway)",
|
||||
"nl": "Nederlands (Dutch)",
|
||||
"nl-BE": "Nederlands, België (Dutch, Belgium)",
|
||||
"oc": "Occitan",
|
||||
"pa": "ਪੰਜਾਬੀ (Punjabi)",
|
||||
"pap": "Papiamento",
|
||||
"pl": "Polski (Polish)",
|
||||
"pt": "Português (Portuguese)",
|
||||
"pt-BR": "Português, Brasil (Portuguese, Brazil)",
|
||||
"ro": "Română (Romanian)",
|
||||
"ru": "Русский (Russian)",
|
||||
"si": "සිංහල (Sinhala)",
|
||||
"sk": "Slovenčina (Slovak)",
|
||||
"sl": "Slovenščina (Slovenian)",
|
||||
"sr": "Српски (Serbian)",
|
||||
"sv": "Svenska (Swedish)",
|
||||
"szl": "Ślōnski (Silesian)",
|
||||
"ta": "தமிழ் (Tamil)",
|
||||
"te": "తెలుగు (Telugu)",
|
||||
"th": "ไทย (Thai)",
|
||||
"tr": "Türkçe (Turkish)",
|
||||
"uk": "Українська (Ukrainian)",
|
||||
"vi": "Tiếng việt (Vietnamese)",
|
||||
"zh-HK": "中文, 中國香港特別行政區 (Chinese, Hong Kong SAR China)",
|
||||
"zh-Hans-CN": "中文, 中国 (Chinese, China)",
|
||||
"zh-Hant-TW": "中文, 台灣 (Chinese, Taiwan)"
|
||||
},
|
||||
"RTL_LOCALES": [
|
||||
"ar",
|
||||
"fa-IR",
|
||||
"he"
|
||||
]
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"versions": [
|
||||
"122.0",
|
||||
"121.0"
|
||||
"123.0",
|
||||
"122.0"
|
||||
],
|
||||
"os": [
|
||||
"Windows NT 10.0; Win64; x64",
|
||||
|
|
|
@ -562,7 +562,6 @@
|
|||
"Q3396758": "daa",
|
||||
"Q3414243": "qps",
|
||||
"Q3421309": "R_J",
|
||||
"Q3495543": "mbar",
|
||||
"Q355198": "px",
|
||||
"Q3674704": "km/s",
|
||||
"Q3675550": "mm³",
|
||||
|
|
|
@ -57,11 +57,10 @@ def response(resp):
|
|||
results.append(
|
||||
{
|
||||
'url': 'https://artic.edu/artworks/%(id)s' % result,
|
||||
'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result,
|
||||
'content': result['medium_display'],
|
||||
'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result,
|
||||
'content': "%(medium_display)s // %(dimensions)s" % result,
|
||||
'author': ', '.join(result['artist_titles']),
|
||||
'img_src': image_api + '/%(image_id)s/full/843,/0/default.jpg' % result,
|
||||
'img_format': result['dimensions'],
|
||||
'template': 'images.html',
|
||||
}
|
||||
)
|
||||
|
|
74
searx/engines/ask.py
Normal file
74
searx/engines/ask.py
Normal file
|
@ -0,0 +1,74 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Ask.com"""
|
||||
|
||||
from urllib.parse import urlencode
|
||||
import dateutil
|
||||
from lxml import html
|
||||
from searx import utils
|
||||
|
||||
# Metadata
|
||||
about = {
|
||||
"website": "https://www.ask.com/",
|
||||
"wikidata_id": 'Q847564',
|
||||
"official_api_documentation": None,
|
||||
"use_official_api": False,
|
||||
"require_api_key": False,
|
||||
"results": "HTML",
|
||||
}
|
||||
|
||||
# Engine Configuration
|
||||
categories = ['general']
|
||||
paging = True
|
||||
|
||||
# Base URL
|
||||
base_url = "https://www.ask.com/web"
|
||||
|
||||
|
||||
def request(query, params):
|
||||
|
||||
query_params = {
|
||||
"q": query,
|
||||
"page": params["pageno"],
|
||||
}
|
||||
|
||||
params["url"] = f"{base_url}?{urlencode(query_params)}"
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
|
||||
start_tag = 'window.MESON.initialState = {'
|
||||
end_tag = '}};'
|
||||
|
||||
dom = html.fromstring(resp.text)
|
||||
script = utils.eval_xpath_getindex(dom, '//script', 0, default=None).text
|
||||
|
||||
pos = script.index(start_tag) + len(start_tag) - 1
|
||||
script = script[pos:]
|
||||
pos = script.index(end_tag) + len(end_tag) - 1
|
||||
script = script[:pos]
|
||||
|
||||
json_resp = utils.js_variable_to_python(script)
|
||||
|
||||
results = []
|
||||
|
||||
for item in json_resp['search']['webResults']['results']:
|
||||
|
||||
pubdate_original = item.get('pubdate_original')
|
||||
if pubdate_original:
|
||||
pubdate_original = dateutil.parser.parse(pubdate_original)
|
||||
metadata = [item.get(field) for field in ['category_l1', 'catsy'] if item.get(field)]
|
||||
|
||||
results.append(
|
||||
{
|
||||
"url": item['url'],
|
||||
"title": item['title'],
|
||||
"content": item['abstract'],
|
||||
"publishedDate": pubdate_original,
|
||||
# "img_src": item.get('image_url') or None, # these are not thumbs / to large
|
||||
"metadata": ' | '.join(metadata),
|
||||
}
|
||||
)
|
||||
|
||||
return results
|
|
@ -92,7 +92,7 @@ def response(resp):
|
|||
|
||||
metadata = json.loads(result.xpath('.//a[@class="iusc"]/@m')[0])
|
||||
title = ' '.join(result.xpath('.//div[@class="infnmpt"]//a/text()')).strip()
|
||||
img_format = ' '.join(result.xpath('.//div[@class="imgpt"]/div/span/text()')).strip()
|
||||
img_format = ' '.join(result.xpath('.//div[@class="imgpt"]/div/span/text()')).strip().split(" · ")
|
||||
source = ' '.join(result.xpath('.//div[@class="imgpt"]//div[@class="lnkw"]//a/text()')).strip()
|
||||
results.append(
|
||||
{
|
||||
|
@ -103,7 +103,8 @@ def response(resp):
|
|||
'content': metadata['desc'],
|
||||
'title': title,
|
||||
'source': source,
|
||||
'img_format': img_format,
|
||||
'resolution': img_format[0],
|
||||
'img_format': img_format[1] if len(img_format) >= 2 else None,
|
||||
}
|
||||
)
|
||||
return results
|
||||
|
|
|
@ -367,9 +367,10 @@ def _parse_images(json_resp):
|
|||
'title': result['title'],
|
||||
'content': result['description'],
|
||||
'template': 'images.html',
|
||||
'img_format': result['properties']['format'],
|
||||
'resolution': result['properties']['format'],
|
||||
'source': result['source'],
|
||||
'img_src': result['properties']['url'],
|
||||
'thumbnail_src': result['thumbnail']['src'],
|
||||
}
|
||||
result_list.append(item)
|
||||
|
||||
|
|
|
@ -88,11 +88,10 @@ def response(resp):
|
|||
results.append(
|
||||
{
|
||||
'url': 'https://artic.edu/artworks/%(id)s' % result,
|
||||
'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result,
|
||||
'content': result['medium_display'],
|
||||
'title': result['title'] + " (%(date_display)s) // %(artist_display)s" % result,
|
||||
'content': "%(medium_display)s // %(dimensions)s" % result,
|
||||
'author': ', '.join(result['artist_titles']),
|
||||
'img_src': image_api + '/%(image_id)s/full/843,/0/default.jpg' % result,
|
||||
'img_format': result['dimensions'],
|
||||
'template': 'images.html',
|
||||
}
|
||||
)
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
"""
|
||||
# pylint: disable=use-dict-literal
|
||||
|
||||
from json import loads
|
||||
from urllib.parse import urlencode
|
||||
from dateutil import parser
|
||||
|
||||
|
@ -18,7 +17,7 @@ about = {
|
|||
"results": 'JSON',
|
||||
}
|
||||
|
||||
categories = ['it'] # optional
|
||||
categories = ['it', 'packages'] # optional
|
||||
paging = True
|
||||
|
||||
base_url = "https://hub.docker.com/"
|
||||
|
@ -38,26 +37,24 @@ def response(resp):
|
|||
resp: requests response object
|
||||
'''
|
||||
results = []
|
||||
body = loads(resp.text)
|
||||
body = resp.json()
|
||||
|
||||
# Make sure `summaries` isn't `null`
|
||||
search_res = body.get("summaries")
|
||||
if search_res:
|
||||
for item in search_res:
|
||||
result = {}
|
||||
for item in body.get("summaries", []):
|
||||
filter_type = item.get("filter_type")
|
||||
is_official = filter_type in ["store", "official"]
|
||||
|
||||
# Make sure correct URL is set
|
||||
filter_type = item.get("filter_type")
|
||||
is_official = filter_type in ["store", "official"]
|
||||
|
||||
if is_official:
|
||||
result["url"] = base_url + "_/" + item.get('slug', "")
|
||||
else:
|
||||
result["url"] = base_url + "r/" + item.get('slug', "")
|
||||
result["title"] = item.get("name")
|
||||
result["content"] = item.get("short_description")
|
||||
result["publishedDate"] = parser.parse(item.get("updated_at") or item.get("created_at"))
|
||||
result["thumbnail"] = item["logo_url"].get("large") or item["logo_url"].get("small")
|
||||
results.append(result)
|
||||
result = {
|
||||
'template': 'packages.html',
|
||||
'url': base_url + ("_/" if is_official else "r/") + item.get("slug", ""),
|
||||
'title': item.get("name"),
|
||||
'content': item.get("short_description"),
|
||||
'img_src': item["logo_url"].get("large") or item["logo_url"].get("small"),
|
||||
'package_name': item.get("name"),
|
||||
'maintainer': item["publisher"].get("name"),
|
||||
'publishedDate': parser.parse(item.get("updated_at") or item.get("created_at")),
|
||||
'popularity': item.get("pull_count", "0") + " pulls",
|
||||
'tags': [arch['name'] for arch in item["architectures"]],
|
||||
}
|
||||
results.append(result)
|
||||
|
||||
return results
|
||||
|
|
|
@ -96,7 +96,7 @@ def _image_result(result):
|
|||
'content': '',
|
||||
'thumbnail_src': result['thumbnail'],
|
||||
'img_src': result['image'],
|
||||
'img_format': '%s x %s' % (result['width'], result['height']),
|
||||
'resolution': '%s x %s' % (result['width'], result['height']),
|
||||
'source': result['source'],
|
||||
}
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ def response(resp): # pylint: disable=too-many-branches
|
|||
continue
|
||||
|
||||
img_src = size_data['url']
|
||||
img_format = f"{size_data['width']} x {size_data['height']}"
|
||||
resolution = f"{size_data['width']} x {size_data['height']}"
|
||||
|
||||
# For a bigger thumbnail, keep only the url_z, not the url_n
|
||||
if 'n' in photo['sizes']['data']:
|
||||
|
@ -131,7 +131,7 @@ def response(resp): # pylint: disable=too-many-branches
|
|||
'img_src': img_src,
|
||||
'thumbnail_src': thumbnail_src,
|
||||
'source': source,
|
||||
'img_format': img_format,
|
||||
'resolution': resolution,
|
||||
'template': 'images.html',
|
||||
}
|
||||
result['author'] = author.encode(errors='ignore').decode()
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
"""
|
||||
Github (IT)
|
||||
# lint: pylint
|
||||
|
||||
"""Github (IT)
|
||||
"""
|
||||
|
||||
from json import loads
|
||||
from urllib.parse import urlencode
|
||||
from dateutil import parser
|
||||
|
||||
# about
|
||||
about = {
|
||||
|
@ -20,42 +21,48 @@ about = {
|
|||
categories = ['it', 'repos']
|
||||
|
||||
# search-url
|
||||
search_url = 'https://api.github.com/search/repositories?sort=stars&order=desc&{query}' # noqa
|
||||
|
||||
search_url = 'https://api.github.com/search/repositories?sort=stars&order=desc&{query}'
|
||||
accept_header = 'application/vnd.github.preview.text-match+json'
|
||||
|
||||
|
||||
# do search-request
|
||||
def request(query, params):
|
||||
params['url'] = search_url.format(query=urlencode({'q': query}))
|
||||
|
||||
params['url'] = search_url.format(query=urlencode({'q': query}))
|
||||
params['headers']['Accept'] = accept_header
|
||||
|
||||
return params
|
||||
|
||||
|
||||
# get response from search-request
|
||||
def response(resp):
|
||||
results = []
|
||||
|
||||
search_res = loads(resp.text)
|
||||
for item in resp.json().get('items', []):
|
||||
content = [item.get(i) for i in ['language', 'description'] if item.get(i)]
|
||||
|
||||
# check if items are received
|
||||
if 'items' not in search_res:
|
||||
return []
|
||||
# license can be None
|
||||
lic = item.get('license') or {}
|
||||
lic_url = None
|
||||
if lic.get('spdx_id'):
|
||||
lic_url = f"https://spdx.org/licenses/{lic.get('spdx_id')}.html"
|
||||
|
||||
# parse results
|
||||
for res in search_res['items']:
|
||||
title = res['name']
|
||||
url = res['html_url']
|
||||
results.append(
|
||||
{
|
||||
'template': 'packages.html',
|
||||
'url': item.get('html_url'),
|
||||
'title': item.get('full_name'),
|
||||
'content': ' / '.join(content),
|
||||
'img_src': item.get('owner', {}).get('avatar_url'),
|
||||
'package_name': item.get('name'),
|
||||
# 'version': item.get('updated_at'),
|
||||
'maintainer': item.get('owner', {}).get('login'),
|
||||
'publishedDate': parser.parse(item.get("updated_at") or item.get("created_at")),
|
||||
'tags': item.get('topics', []),
|
||||
'popularity': item.get('stargazers_count'),
|
||||
'license_name': lic.get('name'),
|
||||
'license_url': lic_url,
|
||||
'homepage': item.get('homepage'),
|
||||
'source_code_url': item.get('clone_url'),
|
||||
}
|
||||
)
|
||||
|
||||
if res['description']:
|
||||
content = res['description'][:500]
|
||||
else:
|
||||
content = ''
|
||||
|
||||
# append result
|
||||
results.append({'url': url, 'title': title, 'content': content})
|
||||
|
||||
# return results
|
||||
return results
|
||||
|
|
|
@ -103,7 +103,7 @@ def response(resp):
|
|||
'title': item["result"]["page_title"],
|
||||
'content': item["text_in_grid"]["snippet"],
|
||||
'source': item["result"]["site_title"],
|
||||
'img_format': f'{item["original_image"]["width"]} x {item["original_image"]["height"]}',
|
||||
'resolution': f'{item["original_image"]["width"]} x {item["original_image"]["height"]}',
|
||||
'img_src': item["original_image"]["url"],
|
||||
'thumbnail_src': item["thumbnail"]["url"],
|
||||
'template': 'images.html',
|
||||
|
|
|
@ -16,7 +16,7 @@ about = {
|
|||
engine_type = 'online_dictionary'
|
||||
categories = ['general']
|
||||
|
||||
url = "https://lingva.thedaviddelta.com/"
|
||||
url = "https://lingva.thedaviddelta.com"
|
||||
search_url = "{url}/api/v1/{from_lang}/{to_lang}/{query}"
|
||||
|
||||
|
||||
|
@ -48,8 +48,6 @@ def response(resp):
|
|||
infobox = ""
|
||||
|
||||
for translation in info["extraTranslations"]:
|
||||
infobox += f"<b>{translation['type']}</b>"
|
||||
|
||||
for word in translation["list"]:
|
||||
infobox += f"<dl><dt>{word['word']}</dt>"
|
||||
|
||||
|
|
101
searx/engines/livespace.py
Executable file
101
searx/engines/livespace.py
Executable file
|
@ -0,0 +1,101 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""LiveSpace (Videos)
|
||||
|
||||
.. hint::
|
||||
|
||||
This engine only search for **live streams**!
|
||||
|
||||
"""
|
||||
|
||||
from urllib.parse import urlencode
|
||||
from datetime import datetime
|
||||
from babel import dates
|
||||
|
||||
about = {
|
||||
"website": 'https://live.space',
|
||||
"wikidata_id": None,
|
||||
"official_api_documentation": None,
|
||||
"use_official_api": True,
|
||||
"require_api_key": False,
|
||||
"results": 'JSON',
|
||||
}
|
||||
|
||||
categories = ['videos']
|
||||
|
||||
base_url = 'https://backend.live.space'
|
||||
|
||||
# engine dependent config
|
||||
paging = True
|
||||
results_per_page = 10
|
||||
|
||||
|
||||
def request(query, params):
|
||||
|
||||
args = {'page': params['pageno'] - 1, 'searchKey': query, 'size': results_per_page}
|
||||
params['url'] = f"{base_url}/search/public/stream?{urlencode(args)}"
|
||||
params['headers'] = {'Accept': 'application/json', 'Content-Type': 'application/json'}
|
||||
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
|
||||
results = []
|
||||
json = resp.json()
|
||||
now = datetime.now()
|
||||
|
||||
# for live videos
|
||||
|
||||
for result in json.get('result', []):
|
||||
|
||||
title = result.get("title")
|
||||
thumbnailUrl = result.get("thumbnailUrl")
|
||||
category = result.get("category/name")
|
||||
username = result.get("user", {}).get("userName", "")
|
||||
url = f'https://live.space/watch/{username}'
|
||||
|
||||
# stream tags
|
||||
# currently the api seems to always return null before the first tag,
|
||||
# so strip that unless it's not already there
|
||||
tags = ''
|
||||
if result.get("tags"):
|
||||
tags = [x for x in result.get("tags").split(';') if x and x != 'null']
|
||||
tags = ', '.join(tags)
|
||||
|
||||
content = []
|
||||
if category:
|
||||
content.append(f'category - {category}')
|
||||
|
||||
if tags and len(tags) > 0:
|
||||
content.append(f'tags - {tags}')
|
||||
|
||||
# time & duration
|
||||
start_time = None
|
||||
if result.get("startTimeStamp"):
|
||||
start_time = datetime.fromtimestamp(result.get("startTimeStamp") / 1000)
|
||||
|
||||
# for VODs (videos on demand)
|
||||
end_time = None
|
||||
if result.get("endTimeStamp"):
|
||||
end_time = datetime.fromtimestamp(result.get("endTimeStamp") / 1000)
|
||||
|
||||
timestring = ""
|
||||
if start_time:
|
||||
delta = (now if end_time is None else end_time) - start_time
|
||||
timestring = dates.format_timedelta(delta, granularity='second')
|
||||
|
||||
results.append(
|
||||
{
|
||||
'url': url,
|
||||
'title': title,
|
||||
'content': "No category or tags." if len(content) == 0 else ' '.join(content),
|
||||
'author': username,
|
||||
'length': (">= " if end_time is None else "") + timestring,
|
||||
'publishedDate': start_time,
|
||||
'thumbnail': thumbnailUrl,
|
||||
'template': 'videos.html',
|
||||
}
|
||||
)
|
||||
|
||||
return results
|
59
searx/engines/mozhi.py
Normal file
59
searx/engines/mozhi.py
Normal file
|
@ -0,0 +1,59 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Mozhi (alternative frontend for popular translation engines)"""
|
||||
|
||||
import random
|
||||
import re
|
||||
from urllib.parse import urlencode
|
||||
|
||||
about = {
|
||||
"website": 'https://codeberg.org/aryak/mozhi',
|
||||
"wikidata_id": None,
|
||||
"official_api_documentation": 'https://mozhi.aryak.me/api/swagger/index.html',
|
||||
"use_official_api": True,
|
||||
"require_api_key": False,
|
||||
"results": 'JSON',
|
||||
}
|
||||
|
||||
engine_type = 'online_dictionary'
|
||||
categories = ['general']
|
||||
|
||||
base_url = "https://mozhi.aryak.me"
|
||||
mozhi_engine = "google"
|
||||
|
||||
re_transliteration_unsupported = "Direction '.*' is not supported"
|
||||
|
||||
|
||||
def request(_query, params):
|
||||
request_url = random.choice(base_url) if isinstance(base_url, list) else base_url
|
||||
|
||||
args = {'from': params['from_lang'][1], 'to': params['to_lang'][1], 'text': params['query'], 'engine': mozhi_engine}
|
||||
params['url'] = f"{request_url}/api/translate?{urlencode(args)}"
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
translation = resp.json()
|
||||
|
||||
infobox = ""
|
||||
|
||||
if translation['target_transliteration'] and not re.match(
|
||||
re_transliteration_unsupported, translation['target_transliteration']
|
||||
):
|
||||
infobox = f"<b>{translation['target_transliteration']}</b>"
|
||||
|
||||
if translation['word_choices']:
|
||||
for word in translation['word_choices']:
|
||||
infobox += f"<dl><dt>{word['word']}</dt>"
|
||||
|
||||
for example in word['examples_target']:
|
||||
infobox += f"<dd>{re.sub(r'<|>', '', example)}</dd>"
|
||||
|
||||
infobox += "</dl>"
|
||||
|
||||
result = {
|
||||
'infobox': translation['translated-text'],
|
||||
'content': infobox,
|
||||
}
|
||||
|
||||
return [result]
|
72
searx/engines/pixiv.py
Normal file
72
searx/engines/pixiv.py
Normal file
|
@ -0,0 +1,72 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Pixiv (images)"""
|
||||
|
||||
from urllib.parse import urlencode
|
||||
import random
|
||||
|
||||
# Engine metadata
|
||||
about = {
|
||||
"website": 'https://www.pixiv.net/',
|
||||
"wikidata_id": 'Q306956',
|
||||
"official_api_documentation": None,
|
||||
"use_official_api": False,
|
||||
"require_api_key": False,
|
||||
"results": 'JSON',
|
||||
}
|
||||
|
||||
# Engine configuration
|
||||
paging = True
|
||||
categories = ['images']
|
||||
|
||||
# Search URL
|
||||
base_url = "https://www.pixiv.net/ajax/search/illustrations"
|
||||
pixiv_image_proxies: list = []
|
||||
|
||||
|
||||
def request(query, params):
|
||||
query_params = {
|
||||
"word": query,
|
||||
"order": "date_d",
|
||||
"mode": "all",
|
||||
"p": params["pageno"],
|
||||
"s_mode": "s_tag_full",
|
||||
"type": "illust_and_ugoira",
|
||||
"lang": "en",
|
||||
}
|
||||
|
||||
params["url"] = f"{base_url}/{query}?{urlencode(query_params)}"
|
||||
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
results = []
|
||||
data = resp.json()
|
||||
|
||||
for item in data["body"]["illust"]["data"]:
|
||||
|
||||
image_url = item["url"]
|
||||
pixiv_proxy = random.choice(pixiv_image_proxies)
|
||||
proxy_image_url = image_url.replace("https://i.pximg.net", pixiv_proxy)
|
||||
proxy_full_image_url = (
|
||||
proxy_image_url.replace("/c/250x250_80_a2/", "/")
|
||||
.replace("_square1200.jpg", "_master1200.jpg")
|
||||
.replace("custom-thumb", "img-master")
|
||||
.replace("_custom1200.jpg", "_master1200.jpg")
|
||||
)
|
||||
|
||||
results.append(
|
||||
{
|
||||
"title": item.get("title"),
|
||||
"url": proxy_full_image_url,
|
||||
'content': item.get('alt'),
|
||||
"author": f"{item.get('userName')} (ID: {item.get('userId')})",
|
||||
"img_src": proxy_full_image_url,
|
||||
"thumbnail_src": proxy_image_url,
|
||||
"source": 'pixiv.net',
|
||||
"template": "images.html",
|
||||
}
|
||||
)
|
||||
|
||||
return results
|
68
searx/engines/pypi.py
Normal file
68
searx/engines/pypi.py
Normal file
|
@ -0,0 +1,68 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""pypi.org
|
||||
|
||||
"""
|
||||
|
||||
from urllib.parse import urlencode
|
||||
from dateutil import parser
|
||||
|
||||
from lxml import html
|
||||
from searx.utils import (
|
||||
eval_xpath_getindex,
|
||||
eval_xpath_list,
|
||||
extract_text,
|
||||
)
|
||||
|
||||
# about
|
||||
about = {
|
||||
"website": "https://pypi.org",
|
||||
"wikidata_id": "Q2984686",
|
||||
"official_api_documentation": "https://warehouse.readthedocs.io/api-reference/index.html",
|
||||
"use_official_api": False,
|
||||
"require_api_key": False,
|
||||
"results": "HTML",
|
||||
}
|
||||
|
||||
categories = ['it', 'packages']
|
||||
|
||||
|
||||
# engine dependent config
|
||||
first_page_num = 1
|
||||
base_url = "https://pypi.org"
|
||||
search_url = base_url + '/search/?{query}'
|
||||
|
||||
|
||||
def request(query, params):
|
||||
args = {
|
||||
"q": query,
|
||||
"page": params['pageno'],
|
||||
}
|
||||
params['url'] = search_url.format(query=urlencode(args))
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
results = []
|
||||
dom = html.fromstring(resp.text)
|
||||
for entry in eval_xpath_list(dom, '/html/body/main/div/div/div/form/div/ul/li/a[@class="package-snippet"]'):
|
||||
url = base_url + extract_text(eval_xpath_getindex(entry, './@href', 0)) # type: ignore
|
||||
title = extract_text(eval_xpath_getindex(entry, './h3/span[@class="package-snippet__name"]', 0))
|
||||
version = extract_text(eval_xpath_getindex(entry, './h3/span[@class="package-snippet__version"]', 0))
|
||||
created_at = extract_text(
|
||||
eval_xpath_getindex(entry, './h3/span[@class="package-snippet__created"]/time/@datetime', 0)
|
||||
)
|
||||
content = extract_text(eval_xpath_getindex(entry, './p', 0))
|
||||
results.append(
|
||||
{
|
||||
"template": "packages.html",
|
||||
"url": url,
|
||||
"title": title,
|
||||
'package_name': title,
|
||||
"content": content,
|
||||
"version": version,
|
||||
'publishedDate': parser.parse(created_at), # type: ignore
|
||||
}
|
||||
)
|
||||
|
||||
return results
|
|
@ -265,6 +265,8 @@ def parse_web_api(resp):
|
|||
'template': 'images.html',
|
||||
'thumbnail_src': thumbnail,
|
||||
'img_src': img_src,
|
||||
'resolution': f"{item['width']} x {item['height']}",
|
||||
'img_format': item.get('thumb_type'),
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ def _images_response(json):
|
|||
'url': summary['refererurl'],
|
||||
'title': result['title'],
|
||||
'img_src': result['url'],
|
||||
'img_format': f"{summary['width']}x{summary['height']}",
|
||||
'resolution': f"{summary['width']}x{summary['height']}",
|
||||
'thumbnail_src': 'https://media.seekr.com/engine/rp/' + summary['tg'] + '/?src= ' + result['thumbnail'],
|
||||
}
|
||||
)
|
||||
|
|
91
searx/engines/voidlinux.py
Normal file
91
searx/engines/voidlinux.py
Normal file
|
@ -0,0 +1,91 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""SearXNG engine for `Void Linux binary packages`_. Void is a general purpose
|
||||
operating system, based on the monolithic Linux kernel. Its package system
|
||||
allows you to quickly install, update and remove software; software is provided
|
||||
in binary packages or can be built directly from sources with the help of the
|
||||
XBPS source packages collection.
|
||||
|
||||
.. _Void Linux binary packages: https://voidlinux.org/packages/
|
||||
|
||||
"""
|
||||
|
||||
import re
|
||||
|
||||
from urllib.parse import quote_plus
|
||||
from searx.utils import humanize_bytes
|
||||
|
||||
about = {
|
||||
'website': 'https://voidlinux.org/packages/',
|
||||
'wikidata_id': 'Q19310966',
|
||||
'use_official_api': True,
|
||||
'official_api_documentation': None,
|
||||
'require_api_key': False,
|
||||
'results': 'JSON',
|
||||
}
|
||||
|
||||
categories = ['packages', 'it']
|
||||
|
||||
base_url = "https://xq-api.voidlinux.org"
|
||||
pkg_repo_url = "https://github.com/void-linux/void-packages"
|
||||
|
||||
void_arch = 'x86_64'
|
||||
"""Default architecture to search for. For valid values see :py:obj:`ARCH_RE`"""
|
||||
|
||||
ARCH_RE = re.compile('aarch64-musl|armv6l-musl|armv7l-musl|x86_64-musl|aarch64|armv6l|armv7l|i686|x86_64')
|
||||
"""Regular expresion that match a architecture in the query string."""
|
||||
|
||||
|
||||
def request(query, params):
|
||||
arch_path = ARCH_RE.search(query)
|
||||
if arch_path:
|
||||
arch_path = arch_path.group(0)
|
||||
query = query.replace(arch_path, '').strip()
|
||||
else:
|
||||
arch_path = void_arch
|
||||
|
||||
params['url'] = f"{base_url}/v1/query/{arch_path}?q={quote_plus(query)}"
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
"""
|
||||
At Void Linux, several packages sometimes share the same source code
|
||||
(template) and therefore also have the same URL. Results with identical
|
||||
URLs are merged as one result for SearXNG.
|
||||
"""
|
||||
|
||||
packages = {}
|
||||
for result in resp.json()['data']:
|
||||
|
||||
# 32bit and dbg packages don't have their own package templates
|
||||
github_slug = re.sub(r"-(32bit|dbg)$", "", result['name'])
|
||||
pkg_url = f"{pkg_repo_url}/tree/master/srcpkgs/{github_slug}"
|
||||
|
||||
pkg_list = packages.get(pkg_url, [])
|
||||
pkg_list.append(
|
||||
{
|
||||
'title': result['name'],
|
||||
'content': f"{result['short_desc']} - {humanize_bytes(result['filename_size'])}",
|
||||
'package_name': result['name'],
|
||||
'version': f"v{result['version']}_{result['revision']}",
|
||||
'tags': result['repository'],
|
||||
}
|
||||
)
|
||||
packages[pkg_url] = pkg_list
|
||||
|
||||
results = []
|
||||
for pkg_url, pkg_list in packages.items():
|
||||
|
||||
results.append(
|
||||
{
|
||||
'url': pkg_url,
|
||||
'template': 'packages.html',
|
||||
'title': ' | '.join(x['title'] for x in pkg_list),
|
||||
'content': pkg_list[0]['content'],
|
||||
'package_name': ' | '.join(x['package_name'] for x in pkg_list),
|
||||
'version': pkg_list[0]['version'],
|
||||
'tags': [x['tags'] for x in pkg_list],
|
||||
}
|
||||
)
|
||||
return results
|
|
@ -8,6 +8,8 @@
|
|||
from datetime import datetime
|
||||
from urllib.parse import urlencode
|
||||
|
||||
from searx.utils import humanize_bytes
|
||||
|
||||
about = {
|
||||
'website': 'https://wallhaven.cc/',
|
||||
'official_api_documentation': 'https://wallhaven.cc/help/api',
|
||||
|
@ -68,6 +70,7 @@ def response(resp):
|
|||
json = resp.json()
|
||||
|
||||
for result in json['data']:
|
||||
|
||||
results.append(
|
||||
{
|
||||
'template': 'images.html',
|
||||
|
@ -76,8 +79,10 @@ def response(resp):
|
|||
'url': result['url'],
|
||||
'img_src': result['path'],
|
||||
'thumbnail_src': result['thumbs']['small'],
|
||||
'img_format': result['resolution'],
|
||||
'resolution': result['resolution'].replace('x', ' x '),
|
||||
'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'),
|
||||
'img_format': result['file_type'],
|
||||
'filesize': humanize_bytes(result['file_size']),
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ def response(resp):
|
|||
'title': title,
|
||||
'content': item["snippet"],
|
||||
'img_src': imageinfo["url"],
|
||||
'img_format': f'{imageinfo["width"]} x {imageinfo["height"]}',
|
||||
'resolution': f'{imageinfo["width"]} x {imageinfo["height"]}',
|
||||
'thumbnail_src': imageinfo["thumburl"],
|
||||
'template': 'images.html',
|
||||
}
|
||||
|
|
63
searx/engines/yandex_music.py
Normal file
63
searx/engines/yandex_music.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Yandex Music
|
||||
|
||||
.. _Countries where Yandex.Music is available: https://yandex.com/support/music/access.html
|
||||
|
||||
.. hint::
|
||||
|
||||
Access to music is limited to a few countries: `Countries where Yandex.Music
|
||||
is available`_
|
||||
|
||||
"""
|
||||
|
||||
from urllib.parse import urlencode
|
||||
|
||||
# about
|
||||
about = {
|
||||
"website": 'https://music.yandex.ru',
|
||||
"wikidata_id": 'Q4537983',
|
||||
"official_api_documentation": None,
|
||||
"use_official_api": False,
|
||||
"require_api_key": False,
|
||||
"results": 'JSON',
|
||||
}
|
||||
|
||||
# engine dependent config
|
||||
categories = ['music']
|
||||
paging = True
|
||||
|
||||
# search-url
|
||||
url = 'https://music.yandex.ru'
|
||||
search_url = url + '/handlers/music-search.jsx'
|
||||
|
||||
# do search-request
|
||||
def request(query, params):
|
||||
args = {'text': query, 'page': params['pageno'] - 1}
|
||||
params['url'] = search_url + '?' + urlencode(args)
|
||||
|
||||
return params
|
||||
|
||||
|
||||
# get response from search-request
|
||||
def response(resp):
|
||||
results = []
|
||||
search_res = resp.json()
|
||||
|
||||
# parse results
|
||||
for result in search_res.get('tracks', {}).get('items', []):
|
||||
if result['type'] == 'music':
|
||||
track_id = result['id']
|
||||
album_id = result['albums'][0]['id']
|
||||
|
||||
# append result
|
||||
results.append(
|
||||
{
|
||||
'url': f'{url}/album/{album_id}/track/{track_id}',
|
||||
'title': result['title'],
|
||||
'content': f"[{result['albums'][0]['title']}] {result['artists'][0]['name']} - {result['title']}",
|
||||
'iframe_src': f'{url}/iframe/track/{track_id}/{album_id}',
|
||||
}
|
||||
)
|
||||
|
||||
return results
|
129
searx/locales.py
129
searx/locales.py
|
@ -1,12 +1,36 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Initialize :py:obj:`LOCALE_NAMES`, :py:obj:`RTL_LOCALES`.
|
||||
"""
|
||||
SearXNG’s locale data
|
||||
=====================
|
||||
|
||||
The variables :py:obj:`RTL_LOCALES` and :py:obj:`LOCALE_NAMES` are loaded from
|
||||
:origin:`searx/data/locales.json` / see :py:obj:`locales_initialize` and
|
||||
:ref:`update_locales.py`.
|
||||
|
||||
.. hint::
|
||||
|
||||
Whenever the value of :py:obj:`ADDITIONAL_TRANSLATIONS` or
|
||||
:py:obj:`LOCALE_BEST_MATCH` is modified, the
|
||||
:origin:`searx/data/locales.json` needs to be rebuild::
|
||||
|
||||
./manage data.locales
|
||||
|
||||
SearXNG's locale codes
|
||||
======================
|
||||
|
||||
.. automodule:: searx.sxng_locales
|
||||
:members:
|
||||
|
||||
|
||||
SearXNG’s locale implementations
|
||||
================================
|
||||
"""
|
||||
|
||||
from typing import Set, Optional, List
|
||||
import os
|
||||
import pathlib
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import babel
|
||||
from babel.support import Translations
|
||||
|
@ -15,7 +39,11 @@ import babel.core
|
|||
import flask_babel
|
||||
import flask
|
||||
from flask.ctx import has_request_context
|
||||
from searx import logger
|
||||
from searx import (
|
||||
data,
|
||||
logger,
|
||||
searx_dir,
|
||||
)
|
||||
|
||||
logger = logger.getChild('locales')
|
||||
|
||||
|
@ -30,7 +58,7 @@ LOCALE_NAMES = {}
|
|||
:meta hide-value:
|
||||
"""
|
||||
|
||||
RTL_LOCALES: Set[str] = set()
|
||||
RTL_LOCALES: set[str] = set()
|
||||
"""List of *Right-To-Left* locales e.g. 'he' or 'fa-IR' (see
|
||||
:py:obj:`locales_initialize`)."""
|
||||
|
||||
|
@ -52,7 +80,7 @@ LOCALE_BEST_MATCH = {
|
|||
"pap": "pt-BR",
|
||||
}
|
||||
"""Map a locale we do not have a translations for to a locale we have a
|
||||
translation for. By example: use Taiwan version of the translation for Hong
|
||||
translation for. By example: use Taiwan version of the translation for Hong
|
||||
Kong."""
|
||||
|
||||
|
||||
|
@ -90,74 +118,37 @@ def get_translations():
|
|||
return _flask_babel_get_translations()
|
||||
|
||||
|
||||
def get_locale_descr(locale, locale_name):
|
||||
"""Get locale name e.g. 'Français - fr' or 'Português (Brasil) - pt-BR'
|
||||
|
||||
:param locale: instance of :py:class:`Locale`
|
||||
:param locale_name: name e.g. 'fr' or 'pt_BR' (delimiter is *underscore*)
|
||||
"""
|
||||
|
||||
native_language, native_territory = _get_locale_descr(locale, locale_name)
|
||||
english_language, english_territory = _get_locale_descr(locale, 'en')
|
||||
|
||||
if native_territory == english_territory:
|
||||
english_territory = None
|
||||
|
||||
if not native_territory and not english_territory:
|
||||
if native_language == english_language:
|
||||
return native_language
|
||||
return native_language + ' (' + english_language + ')'
|
||||
|
||||
result = native_language + ', ' + native_territory + ' (' + english_language
|
||||
if english_territory:
|
||||
return result + ', ' + english_territory + ')'
|
||||
return result + ')'
|
||||
_TR_LOCALES: list[str] = []
|
||||
|
||||
|
||||
def _get_locale_descr(locale, language_code):
|
||||
language_name = locale.get_language_name(language_code).capitalize()
|
||||
if language_name and ('a' <= language_name[0] <= 'z'):
|
||||
language_name = language_name.capitalize()
|
||||
territory_name = locale.get_territory_name(language_code)
|
||||
return language_name, territory_name
|
||||
def get_translation_locales() -> list[str]:
|
||||
"""Returns the list of transaltion locales (*underscore*). The list is
|
||||
generated from the translation folders in :origin:`searx/translations`"""
|
||||
|
||||
global _TR_LOCALES # pylint:disable=global-statement
|
||||
if _TR_LOCALES:
|
||||
return _TR_LOCALES
|
||||
|
||||
tr_locales = []
|
||||
for folder in (Path(searx_dir) / 'translations').iterdir():
|
||||
if not folder.is_dir():
|
||||
continue
|
||||
if not (folder / 'LC_MESSAGES').is_dir():
|
||||
continue
|
||||
tr_locales.append(folder.name)
|
||||
_TR_LOCALES = sorted(tr_locales)
|
||||
return _TR_LOCALES
|
||||
|
||||
|
||||
def locales_initialize(directory=None):
|
||||
def locales_initialize():
|
||||
"""Initialize locales environment of the SearXNG session.
|
||||
|
||||
- monkey patch :py:obj:`flask_babel.get_translations` by :py:obj:`get_translations`
|
||||
- init global names :py:obj:`LOCALE_NAMES`, :py:obj:`RTL_LOCALES`
|
||||
"""
|
||||
|
||||
directory = directory or pathlib.Path(__file__).parent / 'translations'
|
||||
logger.debug("locales_initialize: %s", directory)
|
||||
flask_babel.get_translations = get_translations
|
||||
|
||||
for tag, descr in ADDITIONAL_TRANSLATIONS.items():
|
||||
locale = babel.Locale.parse(LOCALE_BEST_MATCH[tag], sep='-')
|
||||
LOCALE_NAMES[tag] = descr
|
||||
if locale.text_direction == 'rtl':
|
||||
RTL_LOCALES.add(tag)
|
||||
|
||||
for tag in LOCALE_BEST_MATCH:
|
||||
descr = LOCALE_NAMES.get(tag)
|
||||
if not descr:
|
||||
locale = babel.Locale.parse(tag, sep='-')
|
||||
LOCALE_NAMES[tag] = get_locale_descr(locale, tag.replace('-', '_'))
|
||||
if locale.text_direction == 'rtl':
|
||||
RTL_LOCALES.add(tag)
|
||||
|
||||
for dirname in sorted(os.listdir(directory)):
|
||||
# Based on https://flask-babel.tkte.ch/_modules/flask_babel.html#Babel.list_translations
|
||||
if not os.path.isdir(os.path.join(directory, dirname, 'LC_MESSAGES')):
|
||||
continue
|
||||
tag = dirname.replace('_', '-')
|
||||
descr = LOCALE_NAMES.get(tag)
|
||||
if not descr:
|
||||
locale = babel.Locale.parse(dirname)
|
||||
LOCALE_NAMES[tag] = get_locale_descr(locale, dirname)
|
||||
if locale.text_direction == 'rtl':
|
||||
RTL_LOCALES.add(tag)
|
||||
LOCALE_NAMES.update(data.LOCALES["LOCALE_NAMES"])
|
||||
RTL_LOCALES.update(data.LOCALES["RTL_LOCALES"])
|
||||
|
||||
|
||||
def region_tag(locale: babel.Locale) -> str:
|
||||
|
@ -177,7 +168,7 @@ def language_tag(locale: babel.Locale) -> str:
|
|||
return sxng_lang
|
||||
|
||||
|
||||
def get_locale(locale_tag: str) -> Optional[babel.Locale]:
|
||||
def get_locale(locale_tag: str) -> babel.Locale | None:
|
||||
"""Returns a :py:obj:`babel.Locale` object parsed from argument
|
||||
``locale_tag``"""
|
||||
try:
|
||||
|
@ -190,7 +181,7 @@ def get_locale(locale_tag: str) -> Optional[babel.Locale]:
|
|||
|
||||
def get_official_locales(
|
||||
territory: str, languages=None, regional: bool = False, de_facto: bool = True
|
||||
) -> Set[babel.Locale]:
|
||||
) -> set[babel.Locale]:
|
||||
"""Returns a list of :py:obj:`babel.Locale` with languages from
|
||||
:py:obj:`babel.languages.get_official_languages`.
|
||||
|
||||
|
@ -376,7 +367,7 @@ def get_engine_locale(searxng_locale, engine_locales, default=None):
|
|||
return default
|
||||
|
||||
|
||||
def match_locale(searxng_locale: str, locale_tag_list: List[str], fallback: Optional[str] = None) -> Optional[str]:
|
||||
def match_locale(searxng_locale: str, locale_tag_list: list[str], fallback: str | None = None) -> str | None:
|
||||
"""Return tag from ``locale_tag_list`` that best fits to ``searxng_locale``.
|
||||
|
||||
:param str searxng_locale: SearXNG's internal representation of locale (de,
|
||||
|
@ -425,7 +416,7 @@ def match_locale(searxng_locale: str, locale_tag_list: List[str], fallback: Opti
|
|||
return get_engine_locale(searxng_locale, engine_locales, default=fallback)
|
||||
|
||||
|
||||
def build_engine_locales(tag_list: List[str]):
|
||||
def build_engine_locales(tag_list: list[str]):
|
||||
"""From a list of locale tags a dictionary is build that can be passed by
|
||||
argument ``engine_locales`` to :py:obj:`get_engine_locale`. This function
|
||||
is mainly used by :py:obj:`match_locale` and is similar to what the
|
||||
|
|
|
@ -192,7 +192,7 @@ outgoing:
|
|||
#
|
||||
# Extra seconds to add in order to account for the time taken by the proxy
|
||||
#
|
||||
# extra_proxy_timeout: 10.0
|
||||
# extra_proxy_timeout: 10
|
||||
#
|
||||
# uncomment below section only if you have more than one network interface
|
||||
# which can be the source of outgoing search requests
|
||||
|
@ -364,6 +364,11 @@ engines:
|
|||
shortcut: arx
|
||||
timeout: 4.0
|
||||
|
||||
- name: ask
|
||||
engine: ask
|
||||
shortcut: ask
|
||||
disabled: true
|
||||
|
||||
# tmp suspended: dh key too small
|
||||
# - name: base
|
||||
# engine: base
|
||||
|
@ -1044,7 +1049,7 @@ engines:
|
|||
engine: lingva
|
||||
shortcut: lv
|
||||
# set lingva instance in url, by default it will use the official instance
|
||||
# url: https://lingva.thedaviddelta.com/
|
||||
# url: https://lingva.thedaviddelta.com
|
||||
|
||||
- name: lobste.rs
|
||||
engine: xpath
|
||||
|
@ -1153,6 +1158,17 @@ engines:
|
|||
# collection: 'reviews' # name of the db collection
|
||||
# key: 'name' # key in the collection to search for
|
||||
|
||||
- name: mozhi
|
||||
engine: mozhi
|
||||
base_url:
|
||||
- https://mozhi.aryak.me
|
||||
- https://translate.bus-hit.me
|
||||
- https://nyc1.mz.ggtyler.dev
|
||||
# mozhi_engine: google - see https://mozhi.aryak.me for supported engines
|
||||
timeout: 4.0
|
||||
shortcut: mz
|
||||
disabled: true
|
||||
|
||||
- name: mwmbl
|
||||
engine: mwmbl
|
||||
# api_url: https://api.mwmbl.org
|
||||
|
@ -1340,6 +1356,31 @@ engines:
|
|||
url: https://thepiratebay.org/
|
||||
timeout: 3.0
|
||||
|
||||
- name: pixiv
|
||||
shortcut: pv
|
||||
engine: pixiv
|
||||
disabled: true
|
||||
inactive: true
|
||||
pixiv_image_proxies:
|
||||
- pximg.example.org
|
||||
# A proxy is required to load the images. Hosting an image proxy server
|
||||
# for Pixiv:
|
||||
# --> https://codeberg.org/VnPower/PixivFE/wiki/Hosting-an-image-proxy-server-for-Pixiv
|
||||
# Proxies from public instances. Ask the public instances owners if they
|
||||
# agree to receive traffic from SearXNG!
|
||||
# --> https://codeberg.org/VnPower/PixivFE#instances
|
||||
# --> https://github.com/searxng/searxng/pull/3192#issuecomment-1941095047
|
||||
# image proxy of https://pixiv.cat
|
||||
# - https://i.pixiv.cat
|
||||
# image proxy of https://www.pixiv.pics
|
||||
# - https://pximg.cocomi.eu.org
|
||||
# image proxy of https://pixivfe.exozy.me
|
||||
# - https://pximg.exozy.me
|
||||
# image proxy of https://pixivfe.ducks.party
|
||||
# - https://pixiv.ducks.party
|
||||
# image proxy of https://pixiv.perennialte.ch
|
||||
# - https://pximg.perennialte.ch
|
||||
|
||||
- name: podcastindex
|
||||
engine: podcastindex
|
||||
shortcut: podcast
|
||||
|
@ -1416,23 +1457,7 @@ engines:
|
|||
|
||||
- name: pypi
|
||||
shortcut: pypi
|
||||
engine: xpath
|
||||
paging: true
|
||||
search_url: https://pypi.org/search/?q={query}&page={pageno}
|
||||
results_xpath: /html/body/main/div/div/div/form/div/ul/li/a[@class="package-snippet"]
|
||||
url_xpath: ./@href
|
||||
title_xpath: ./h3/span[@class="package-snippet__name"]
|
||||
content_xpath: ./p
|
||||
suggestion_xpath: /html/body/main/div/div/div/form/div/div[@class="callout-block"]/p/span/a[@class="link"]
|
||||
first_page_num: 1
|
||||
categories: [it, packages]
|
||||
about:
|
||||
website: https://pypi.org
|
||||
wikidata_id: Q2984686
|
||||
official_api_documentation: https://warehouse.readthedocs.io/api-reference/index.html
|
||||
use_official_api: false
|
||||
require_api_key: false
|
||||
results: HTML
|
||||
engine: pypi
|
||||
|
||||
- name: qwant
|
||||
qwant_categ: web
|
||||
|
@ -1703,6 +1728,13 @@ engines:
|
|||
engine: unsplash
|
||||
shortcut: us
|
||||
|
||||
- name: yandex music
|
||||
engine: yandex_music
|
||||
shortcut: ydm
|
||||
disabled: true
|
||||
# https://yandex.com/support/music/access.html
|
||||
inactive: true
|
||||
|
||||
- name: yahoo
|
||||
engine: yahoo
|
||||
shortcut: yh
|
||||
|
@ -2037,6 +2069,13 @@ engines:
|
|||
categories: videos
|
||||
disabled: true
|
||||
|
||||
- name: livespace
|
||||
engine: livespace
|
||||
shortcut: ls
|
||||
categories: videos
|
||||
disabled: true
|
||||
timeout: 5.0
|
||||
|
||||
- name: wordnik
|
||||
engine: wordnik
|
||||
shortcut: def
|
||||
|
@ -2108,6 +2147,11 @@ engines:
|
|||
engine: tootfinder
|
||||
shortcut: toot
|
||||
|
||||
- name: voidlinux
|
||||
engine: voidlinux
|
||||
shortcut: void
|
||||
disabled: true
|
||||
|
||||
- name: wallhaven
|
||||
engine: wallhaven
|
||||
# api_key: abcdefghijklmnopqrstuvwxyz
|
||||
|
|
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
|
@ -1 +1 @@
|
|||
<svg width="92mm" height="92mm" viewBox="0 0 92 92"><path d="M39.581 41.421h-8.954v-1.215q0-2.034.818-3.597.819-1.587 3.448-4.018l1.588-1.439q1.414-1.29 2.059-2.43.67-1.142.67-2.283 0-1.736-1.191-2.703-1.19-.993-3.324-.993-2.01 0-4.341.844-2.332.818-4.862 2.455v-7.788q3.002-1.042 5.482-1.538t4.787-.496q6.053 0 9.228 2.48 3.175 2.456 3.175 7.194 0 2.43-.968 4.365-.967 1.91-3.299 4.118L42.31 35.79q-1.687 1.538-2.208 2.48-.52.918-.52 2.034zm-8.954 3.671h8.954v8.83h-8.954Z" style="line-height:1;-inkscape-font-specification:"DejaVu Sans Bold"" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="50.80000305px" font-family="DejaVu Sans" display="inline" fill="#db3434" fill-opacity="1" stroke-width=".26458335"/><circle cx="35" cy="36.486" r="30" fill="none" fill-opacity="1" stroke="#db3434" stroke-width="10" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/><rect width="18.846" height="39.963" x="-12.021" y="80.49" ry="0" transform="rotate(-46.235)" opacity="1" fill="#db3434" fill-opacity="1" stroke="none" stroke-width="8" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/></svg>
|
||||
<svg width="92mm" height="92mm" viewBox="0 0 92 92"><path d="M39.581 41.421h-8.954v-1.215q0-2.034.818-3.597.819-1.587 3.448-4.018l1.588-1.439q1.414-1.29 2.059-2.43.67-1.142.67-2.283 0-1.736-1.191-2.703-1.19-.993-3.324-.993-2.01 0-4.341.844-2.332.818-4.862 2.455v-7.788q3.002-1.042 5.482-1.538 2.48-.496 4.787-.496 6.053 0 9.228 2.48 3.175 2.456 3.175 7.194 0 2.43-.968 4.365-.967 1.91-3.299 4.118L42.31 35.79q-1.687 1.538-2.208 2.48-.52.918-.52 2.034zm-8.954 3.671h8.954v8.83h-8.954Z" style="line-height:1;-inkscape-font-specification:"DejaVu Sans Bold"" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="50.80000305px" font-family="DejaVu Sans" display="inline" fill="#db3434" fill-opacity="1" stroke-width=".26458335"/><circle cx="35" cy="36.486" r="30" fill="none" fill-opacity="1" stroke="#db3434" stroke-width="10" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/><rect width="18.846" height="39.963" x="-12.021" y="80.49" ry="0" transform="rotate(-46.235)" opacity="1" fill="#db3434" fill-opacity="1" stroke="none" stroke-width="8" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/></svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -1 +1 @@
|
|||
<svg width="853.677" height="146.304" viewBox="0 0 225.869 38.71"><g aria-label="SearXNG" style="line-height:1.25" font-style="normal" font-weight="400" font-size="50.8px" font-family="sans-serif" fill="#487cff" fill-opacity="1" stroke="none" stroke-width=".264583"><path d="M56.494 102.704q-1.168-1.22-3.048-2.032t-4.42-.813q-3.15 0-5.08 1.32-1.93 1.27-1.93 3.455 0 2.337 3.708 3.607l7.671 2.641q3.963 1.321 5.842 3.404 1.88 2.083 1.88 5.13 0 4.065-2.185 7.011-2.184 2.896-5.943 4.42-3.76 1.524-8.484 1.524-5.334 0-9.042-1.778-3.709-1.829-5.537-5.131-.204-.356-.204-.711 0-.356.407-.61l4.013-2.438q.356-.254.762-.254.61 0 1.118.66 1.32 1.626 2.387 2.54 1.118.864 2.693 1.321 1.625.457 4.165.457 3.2 0 5.182-1.168 1.981-1.22 1.981-3.76 0-1.27-.914-2.082-.915-.864-2.947-1.575l-7.417-2.49q-3.657-1.218-5.588-3.555-1.88-2.388-1.88-5.436 0-3.759 2.134-6.655 2.134-2.895 5.69-4.47 3.607-1.575 7.874-1.575 4.369 0 7.67 1.575 3.354 1.524 5.182 3.962.407.508.407.762t-.356.458l-4.52 2.997q-.052.05-.204.05-.305 0-1.067-.761M77.004 132.37q-3.607 0-6.401-1.472-2.794-1.474-4.318-4.115-1.524-2.693-1.524-6.198 0-4.165 1.981-7.874 2.032-3.759 5.537-5.994 3.556-2.286 7.925-2.286 5.334 0 8.484 3.15t3.15 8.686q0 1.473-.204 2.845-.101.406-.355.61-.204.152-.813.152h-17.12q-.813 0-.813 2.184 0 2.388 1.524 3.709 1.575 1.27 4.064 1.27 1.93 0 3.607-.813t3.302-2.54q.254-.254.508-.254.153 0 .66.203l3.353 1.575q.61.203.61.66 0 .254-.254.66-2.946 3.303-5.893 4.573-2.895 1.27-7.01 1.27m6.451-16.56q1.22 0 1.22-1.981 0-1.93-1.169-3.251-1.168-1.372-3.251-1.372-2.54 0-4.521 1.93-1.93 1.88-2.235 4.674zM109.411 129.374q-3.048 2.997-8.331 2.997-3.556 0-5.588-1.829t-2.032-4.775q0-3.607 2.387-5.893 2.388-2.337 5.995-3.353 3.657-1.067 7.569-1.168l1.829-.153q.965 0 1.117-.965l.153-1.067q.05-.254.05-.812 0-3.048-3.505-3.048-4.013 0-5.943 3.15-.254.355-.66.355-.305 0-.458-.051l-4.927-1.168q-.508-.102-.508-.66 0-.509.254-1.017 3.352-5.486 12.649-5.486 5.486 0 8.026 1.93 2.591 1.93 2.591 5.334 0 .457-.102 1.473l-2.54 17.78q-.05.66-.203.813-.152.102-.711.102h-5.232q-.508 0-.66-.305t-.204-1.016l.05-1.32q0-.407-.253-.407-.254 0-.813.559m2.184-9.754v-.305q0-.203-.101-.254-.102-.101-.407-.05l-1.828.152q-2.947.203-5.487 1.473t-2.54 3.912q0 1.219.864 1.98.914.712 2.438.712 1.321 0 2.49-.356 1.168-.406 2.031-1.066 1.88-1.423 2.083-2.896zM123.864 131.863q-.61 0-.915-.356-.254-.355-.152-.914l3.505-24.943q.05-.457.152-.559.153-.152.56-.152h6.044q.915 0 .712 1.067l-.356 2.286v.203q0 .355.203.355.153 0 .457-.304 1.778-1.88 3.963-2.998 2.184-1.117 3.962-1.117 1.067 0 1.575.152.508.153.457.61l-.813 5.69q-.05.558-.203.71-.101.153-.406.102-1.727-.254-3.455-.254-1.32 0-2.794.711-1.473.66-2.54 1.778-1.016 1.067-1.168 2.134l-2.083 14.834q-.101.66-.355.812-.204.153-.966.153zM176.481 130.085q.457.813.457 1.219 0 .305-.254.457-.254.102-.762.102h-7.06q-.61 0-.966-.153-.305-.152-.508-.61l-5.639-11.734q-.254-.508-.508-.508-.152 0-.559.559l-9.042 11.836q-.254.407-.61.508-.304.102-1.066.102h-5.944q-1.016 0-1.016-.66 0-.458.762-1.525l13.005-16.306q.559-.61.559-1.067 0-.356-.102-.559l-8.484-16.56q-.152-.255-.152-.509 0-.508.762-.508h7.417q.66 0 .914.153.254.152.508.66l4.928 10.363q.152.407.355.407.204 0 .508-.407l8.027-10.566q.305-.407.559-.508.304-.102.965-.102h6.553q.61 0 .61.559 0 .406-.305.914l-12.599 15.647q-.508.66-.508.914 0 .203.153.508zM218.113 94.17q.355 0 .457.202.101.153.05.56l-5.13 36.372q-.05.356-.254.457-.153.102-.559.102h-5.182q-.66 0-1.168-.813l-13.106-22.708q-.153-.254-.305-.254-.305 0-.356.56l-3.15 22.402q-.1.508-.304.66-.153.153-.711.153h-5.588q-.813 0-.712-1.118l5.08-35.814q.102-.508.204-.61.152-.152.66-.152h6.147q.508 0 .762.254.305.203.559.711l11.988 21.184q.254.406.508.406.407 0 .458-.61l2.946-21.284q.05-.407.203-.508.203-.153.66-.153zM236.44 132.37q-4.572 0-7.925-1.93t-5.131-5.435q-1.727-3.556-1.727-8.331 0-6.3 2.489-11.532 2.49-5.283 7.061-8.382 4.572-3.099 10.516-3.099 4.064 0 7.163 1.575 3.15 1.575 4.876 4.166 1.728 2.54 1.83 5.435 0 .508-.102.762-.051.203-.254.254l-6.96 1.016h-.05q-.204 0-.356-.254-.102-.254-.254-1.016-.356-2.54-1.93-4.115-1.525-1.574-4.319-1.574-3.607 0-5.994 2.641-2.337 2.642-3.455 6.807-1.117 4.115-1.117 8.586 0 4.368 1.625 6.299 1.677 1.88 4.877 1.88 3.099 0 5.233-1.728t3.15-4.216l.304-1.423q.152-.254.152-.355 0-.305-.61-.305h-6.248q-.304 0-.406-.102-.102-.152-.05-.558l.456-4.166q.051-.559.508-.559l14.53.051q.609 0 .761.203.203.153.102.66l-2.49 17.577q-.05.66-.812.66h-1.524q-.457 0-.711-.152-.204-.152-.356-.61l-.864-3.708q-.05-.254-.355-.254t-.66.407q-1.677 2.083-4.37 3.454-2.692 1.372-6.603 1.372" style="-inkscape-font-specification:"Libre Franklin"" transform="translate(-29.722 -93.661)" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50.8px" font-family="Libre Franklin" fill="#487cff" fill-opacity="1" stroke-width=".264583"/></g></svg>
|
||||
<svg width="853.677" height="146.304" viewBox="0 0 225.869 38.71"><g aria-label="SearXNG" style="line-height:1.25" font-style="normal" font-weight="400" font-size="50.8px" font-family="sans-serif" fill="#487cff" fill-opacity="1" stroke="none" stroke-width=".264583"><path d="M56.494 102.704q-1.168-1.22-3.048-2.032-1.88-.813-4.42-.813-3.15 0-5.08 1.32-1.93 1.27-1.93 3.455 0 2.337 3.708 3.607l7.671 2.641q3.963 1.321 5.842 3.404 1.88 2.083 1.88 5.13 0 4.065-2.185 7.011-2.184 2.896-5.943 4.42-3.76 1.524-8.484 1.524-5.334 0-9.042-1.778-3.709-1.829-5.537-5.131-.204-.356-.204-.711 0-.356.407-.61l4.013-2.438q.356-.254.762-.254.61 0 1.118.66 1.32 1.626 2.387 2.54 1.118.864 2.693 1.321 1.625.457 4.165.457 3.2 0 5.182-1.168 1.981-1.22 1.981-3.76 0-1.27-.914-2.082-.915-.864-2.947-1.575l-7.417-2.49q-3.657-1.218-5.588-3.555-1.88-2.388-1.88-5.436 0-3.759 2.134-6.655 2.134-2.895 5.69-4.47 3.607-1.575 7.874-1.575 4.369 0 7.67 1.575 3.354 1.524 5.182 3.962.407.508.407.762t-.356.458l-4.52 2.997q-.052.05-.204.05-.305 0-1.067-.761zM77.004 132.37q-3.607 0-6.401-1.472-2.794-1.474-4.318-4.115-1.524-2.693-1.524-6.198 0-4.165 1.981-7.874 2.032-3.759 5.537-5.994 3.556-2.286 7.925-2.286 5.334 0 8.484 3.15 3.15 3.149 3.15 8.686 0 1.473-.204 2.845-.101.406-.355.61-.204.152-.813.152h-17.12q-.813 0-.813 2.184 0 2.388 1.524 3.709 1.575 1.27 4.064 1.27 1.93 0 3.607-.813 1.677-.813 3.302-2.54.254-.254.508-.254.153 0 .66.203l3.353 1.575q.61.203.61.66 0 .254-.254.66-2.946 3.303-5.893 4.573-2.895 1.27-7.01 1.27zm6.451-16.56q1.22 0 1.22-1.981 0-1.93-1.169-3.251-1.168-1.372-3.251-1.372-2.54 0-4.521 1.93-1.93 1.88-2.235 4.674zM109.411 129.374q-3.048 2.997-8.331 2.997-3.556 0-5.588-1.829t-2.032-4.775q0-3.607 2.387-5.893 2.388-2.337 5.995-3.353 3.657-1.067 7.569-1.168l1.829-.153q.965 0 1.117-.965l.153-1.067q.05-.254.05-.812 0-3.048-3.505-3.048-4.013 0-5.943 3.15-.254.355-.66.355-.305 0-.458-.051l-4.927-1.168q-.508-.102-.508-.66 0-.509.254-1.017 3.352-5.486 12.649-5.486 5.486 0 8.026 1.93 2.591 1.93 2.591 5.334 0 .457-.102 1.473l-2.54 17.78q-.05.66-.203.813-.152.102-.711.102h-5.232q-.508 0-.66-.305-.153-.305-.204-1.016l.05-1.32q0-.407-.253-.407-.254 0-.813.559zm2.184-9.754v-.305q0-.203-.101-.254-.102-.101-.407-.05l-1.828.152q-2.947.203-5.487 1.473t-2.54 3.912q0 1.219.864 1.98.914.712 2.438.712 1.321 0 2.49-.356 1.168-.406 2.031-1.066 1.88-1.423 2.083-2.896zM123.864 131.863q-.61 0-.915-.356-.254-.355-.152-.914l3.505-24.943q.05-.457.152-.559.153-.152.56-.152h6.044q.915 0 .712 1.067l-.356 2.286v.203q0 .355.203.355.153 0 .457-.304 1.778-1.88 3.963-2.998 2.184-1.117 3.962-1.117 1.067 0 1.575.152.508.153.457.61l-.813 5.69q-.05.558-.203.71-.101.153-.406.102-1.727-.254-3.455-.254-1.32 0-2.794.711-1.473.66-2.54 1.778-1.016 1.067-1.168 2.134l-2.083 14.834q-.101.66-.355.812-.204.153-.966.153zM176.481 130.085q.457.813.457 1.219 0 .305-.254.457-.254.102-.762.102h-7.06q-.61 0-.966-.153-.305-.152-.508-.61l-5.639-11.734q-.254-.508-.508-.508-.152 0-.559.559l-9.042 11.836q-.254.407-.61.508-.304.102-1.066.102h-5.944q-1.016 0-1.016-.66 0-.458.762-1.525l13.005-16.306q.559-.61.559-1.067 0-.356-.102-.559l-8.484-16.56q-.152-.255-.152-.509 0-.508.762-.508h7.417q.66 0 .914.153.254.152.508.66l4.928 10.363q.152.407.355.407.204 0 .508-.407l8.027-10.566q.305-.407.559-.508.304-.102.965-.102h6.553q.61 0 .61.559 0 .406-.305.914l-12.599 15.647q-.508.66-.508.914 0 .203.153.508zM218.113 94.17q.355 0 .457.202.101.153.05.56l-5.13 36.372q-.05.356-.254.457-.153.102-.559.102h-5.182q-.66 0-1.168-.813l-13.106-22.708q-.153-.254-.305-.254-.305 0-.356.56l-3.15 22.402q-.1.508-.304.66-.153.153-.711.153h-5.588q-.813 0-.712-1.118l5.08-35.814q.102-.508.204-.61.152-.152.66-.152h6.147q.508 0 .762.254.305.203.559.711l11.988 21.184q.254.406.508.406.407 0 .458-.61l2.946-21.284q.05-.407.203-.508.203-.153.66-.153zM236.44 132.37q-4.572 0-7.925-1.93-3.353-1.93-5.131-5.435-1.727-3.556-1.727-8.331 0-6.3 2.489-11.532 2.49-5.283 7.061-8.382 4.572-3.099 10.516-3.099 4.064 0 7.163 1.575 3.15 1.575 4.876 4.166 1.728 2.54 1.83 5.435 0 .508-.102.762-.051.203-.254.254l-6.96 1.016h-.05q-.204 0-.356-.254-.102-.254-.254-1.016-.356-2.54-1.93-4.115-1.525-1.574-4.319-1.574-3.607 0-5.994 2.641-2.337 2.642-3.455 6.807-1.117 4.115-1.117 8.586 0 4.368 1.625 6.299 1.677 1.88 4.877 1.88 3.099 0 5.233-1.728 2.133-1.727 3.15-4.216l.304-1.423q.152-.254.152-.355 0-.305-.61-.305h-6.248q-.304 0-.406-.102-.102-.152-.05-.558l.456-4.166q.051-.559.508-.559l14.53.051q.609 0 .761.203.203.153.102.66l-2.49 17.577q-.05.66-.812.66h-1.524q-.457 0-.711-.152-.204-.152-.356-.61l-.864-3.708q-.05-.254-.355-.254t-.66.407q-1.677 2.083-4.37 3.454-2.692 1.372-6.603 1.372z" style="-inkscape-font-specification:"Libre Franklin"" transform="translate(-29.722 -93.661)" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50.8px" font-family="Libre Franklin" fill="#487cff" fill-opacity="1" stroke-width=".264583"/></g></svg>
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.8 KiB |
|
@ -49,8 +49,7 @@ article.result-images .detail {
|
|||
|
||||
.result-images-labels {
|
||||
color: var(--color-result-detail-font);
|
||||
max-height: 16rem;
|
||||
min-height: 16rem;
|
||||
height: 19rem;
|
||||
|
||||
hr {
|
||||
border-top: 1px solid var(--color-result-detail-hr);
|
||||
|
@ -62,11 +61,16 @@ article.result-images .detail {
|
|||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-size: 0.9rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
color: var(--color-result-detail-label-font);
|
||||
font-size: 0.9rem;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
margin: 0.8rem 0;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
|
@ -82,6 +86,7 @@ article.result-images .detail {
|
|||
|
||||
p.result-content {
|
||||
height: 2rem;
|
||||
line-height: unset;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
|
|
@ -306,7 +306,8 @@ article[data-vim-selected].category-social {
|
|||
}
|
||||
}
|
||||
|
||||
.result-paper {
|
||||
.result-paper,
|
||||
.result-packages {
|
||||
.attributes {
|
||||
display: table;
|
||||
border-spacing: 0.125rem;
|
||||
|
@ -349,6 +350,12 @@ article[data-vim-selected].category-social {
|
|||
}
|
||||
}
|
||||
|
||||
.result-packages {
|
||||
.attributes {
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
}
|
||||
|
||||
.template_group_images {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
@ -457,6 +464,17 @@ article[data-vim-selected].category-social {
|
|||
background: var(--color-result-image-background);
|
||||
}
|
||||
|
||||
.image_resolution {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 50%);
|
||||
padding: 0.3rem 0.5rem;
|
||||
font-size: 0.9rem;
|
||||
color: #fff;
|
||||
border-top-left-radius: 0.3rem;
|
||||
}
|
||||
|
||||
span.title,
|
||||
span.source {
|
||||
display: block;
|
||||
|
@ -1076,7 +1094,8 @@ summary.title {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.result-paper {
|
||||
.result-paper,
|
||||
.result-packages {
|
||||
.attributes {
|
||||
display: block;
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
'''List of SearXNG's locale codes.
|
||||
|
||||
This file is generated automatically by::
|
||||
.. hint::
|
||||
|
||||
./manage pyenv.cmd searxng_extra/update/update_engine_traits.py
|
||||
Don't modify this file, this file is generated by::
|
||||
|
||||
./manage data.traits
|
||||
'''
|
||||
|
||||
sxng_locales = (
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
{% if autocomplete %}
|
||||
<Url rel="suggestions" type="application/x-suggestions+json" method="{{ opensearch_method }}" template="{{ url_for('autocompleter', _external=True) }}?q={searchTerms}"/>
|
||||
{% endif %}
|
||||
<Url rel="self" type="application/opensearchdescription+xml" method="{{ opensearch_method }}" template="{{ opensearch_url }}" />
|
||||
<Url rel="self" type="application/opensearchdescription+xml" method="{{ opensearch_method }}" template="{{ url_for('opensearch', _external=True) }}" />
|
||||
<Query role="example" searchTerms="SearXNG" />
|
||||
<moz:SearchForm>{{ url_for('search', _external=True) }}</moz:SearchForm>
|
||||
</OpenSearchDescription>
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<article class="result result-images {% if result['category'] %}category-{{ result['category'] }}{% endif %}">{{- "" -}}
|
||||
<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>{{- "" -}}
|
||||
{%- if result.resolution %} <span class="image_resolution">{{ result.resolution }}</span> {%- endif -%}
|
||||
<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>{{- "" -}}
|
||||
|
@ -16,7 +17,9 @@
|
|||
<p class="result-content">{%- if result.content %}{{ result.content|striptags }}{% else %} {% endif -%}</p>{{- "" -}}
|
||||
<hr>{{- "" -}}
|
||||
<p class="result-author">{%- if result.author %}<span>{{ _('Author') }}:</span>{{ result.author|striptags }}{% else %} {% endif -%}</p>{{- "" -}}
|
||||
<p class="result-resolution">{%- if result.resolution %}<span>{{ _('Resolution') }}:</span>{{ result.resolution }}{% else %} {% endif -%}</p>{{- "" -}}
|
||||
<p class="result-format">{%- if result.img_format %}<span>{{ _('Format') }}:</span>{{ result.img_format }}{% else %} {% endif -%}</p>{{- "" -}}
|
||||
<p class="result-filesize">{%- if result.filesize %}<span>{{ _('Filesize') }}:</span>{{ result.filesize}}{% else %} {% endif -%}</p>{{- "" -}}
|
||||
<p class="result-source">{%- if result.source %}<span>{{ _('Source') }}:</span>{{ result.source }}{% else %} {% endif -%}</p>{{- "" -}}
|
||||
<p class="result-engine"><span>{{ _('Engine') }}:</span>{{ result.engine }}</p>{{- "" -}}{{- "" -}}
|
||||
<p class="result-url"><span>{{ _('View source') }}:</span><a {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} href="{{ result.url }}">{{ result.url }}</a></p>{{- "" -}}
|
||||
|
|
67
searx/templates/simple/result_templates/packages.html
Normal file
67
searx/templates/simple/result_templates/packages.html
Normal file
|
@ -0,0 +1,67 @@
|
|||
{%- from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context -%}
|
||||
{{ result_header(result, favicons, image_proxify) -}}
|
||||
|
||||
{%- if result.content -%}<p class="content">{{- result.content|safe -}}</p>{%- endif -%}
|
||||
<div class="attributes">{{- '' -}}
|
||||
<div class="result_package_name">{{- '' -}}
|
||||
<span>{{ _('Name') }}:</span>{{- '' -}}
|
||||
<span><code>{{- result.package_name -}}</code></span>{{- '' -}}
|
||||
</div>
|
||||
{%- if result.version -%}
|
||||
<div class="result_version">{{- '' -}}
|
||||
<span>{{- _('Version') }}:</span>{{- '' -}}
|
||||
<span><strong>{{ result.version }}</strong></span>{{- '' -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- if result.maintainer -%}
|
||||
<div class="result_maintainer">{{- '' -}}
|
||||
<span>{{ _('Maintainer') }}:</span>{{- '' -}}
|
||||
<span>{{ result.maintainer }}</span>{{- '' -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- if result.publishedDate -%}
|
||||
<div class="result_pubdate">{{- '' -}}
|
||||
<span>{{ _('Updated at') }}:</span>{{- '' -}}
|
||||
<span><time datetime="{{ result.pubdate }}">{{ result.publishedDate }}</time></span>{{- '' -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- if result.tags -%}
|
||||
<div class="result_tags">{{- '' -}}
|
||||
<span>{{ _('Tags') }}:</span>{{- '' -}}
|
||||
<span>{{ result.tags|join(', ') }}</span>{{- '' -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- if result.popularity -%}
|
||||
<div class="result_popularity">{{- '' -}}
|
||||
<span>{{ _('Popularity') }}:</span>{{- '' -}}
|
||||
<span>{{ result.popularity }}</span>{{- '' -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- if result.license_name -%}
|
||||
<div class="result_license">{{- '' -}}
|
||||
<span>{{- _('License') -}}:</span>
|
||||
{%- if result.license_url -%}
|
||||
<span><a href="{{ result.license_url }}" target="_blank">{{ result.license_name }}</a></span>
|
||||
{%- else -%}
|
||||
<span>{{ result.license_name }}</span>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- if result.homepage or result.source_code_url -%}
|
||||
<div class="result_project">{{- '' -}}
|
||||
<span>{{ _('Project') }}</span>
|
||||
<span>{{- '' -}}
|
||||
{%- if result.homepage -%}
|
||||
<a href="{{ result.homepage }}" target="_blank">{{ _('Project homepage') }}</a>
|
||||
{%- endif -%}
|
||||
{%- if result.homepage and result.source_code_url %} | {% endif -%}
|
||||
{%- if result.source_code_url -%}
|
||||
<a href="{{ result.source_code_url }}" target="_blank">{{ _('Source code') }}</a>
|
||||
{%- endif -%}
|
||||
</span>{{- '' -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
</div>{{- '' -}}
|
||||
<div class="break"></div>
|
||||
|
||||
{{- result_footer(result) }}
|
Binary file not shown.
|
@ -12,17 +12,16 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-08 15:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Afrikaans <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/af/>\n"
|
||||
"Language: af\n"
|
||||
"Language-Team: Afrikaans "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/af/>\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 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -150,6 +149,16 @@ msgstr "lig"
|
|||
msgid "dark"
|
||||
msgstr "donker"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Aangaande"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Geen item gevind"
|
||||
|
@ -444,10 +453,6 @@ msgstr "Gaan na %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "soekblad"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Aangaande"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Skenk"
|
||||
|
@ -1469,3 +1474,4 @@ msgstr "versteek video"
|
|||
#~ "use another query or search in "
|
||||
#~ "more categories."
|
||||
#~ msgstr ""
|
||||
|
||||
|
|
Binary file not shown.
|
@ -13,22 +13,22 @@
|
|||
# return42 <markus.heiser@darmarit.de>, 2023, 2024.
|
||||
# Cavemanly <k.adel.2m@protonmail.com>, 2023.
|
||||
# Rick1029 <yoshibear1029@gmail.com>, 2024.
|
||||
# nebras <johndevand@tutanota.com>, 2024.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Arabic <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/ar/>\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-10 07:07+0000\n"
|
||||
"Last-Translator: nebras <johndevand@tutanota.com>\n"
|
||||
"Language: ar\n"
|
||||
"Language-Team: Arabic "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/ar/>\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
|
||||
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Weblate 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -156,6 +156,16 @@ msgstr "فاتح"
|
|||
msgid "dark"
|
||||
msgstr "مظلم"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "حَول"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "تعذر العثور على عناصر"
|
||||
|
@ -443,10 +453,6 @@ msgstr "إذهب إلى %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "صفحة البحث"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "حَول"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "تبرُّع"
|
||||
|
@ -972,15 +978,15 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/preferences/cookies.html:46
|
||||
msgid "Copy preferences hash"
|
||||
msgstr ""
|
||||
msgstr "نسخ تجزئة التفضيلات"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:57
|
||||
msgid "Insert copied preferences hash (without URL) to restore"
|
||||
msgstr ""
|
||||
msgstr "أدخل تجزئة التفضيلات المنسوخة (بدون عنوان URL) لاستعادتها"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:59
|
||||
msgid "Preferences hash"
|
||||
msgstr ""
|
||||
msgstr "تجزئة التفضيلات"
|
||||
|
||||
#: searx/templates/simple/preferences/doi_resolver.html:2
|
||||
msgid "Open Access DOI resolver"
|
||||
|
@ -1721,3 +1727,4 @@ msgstr "إخفاء الفيديو"
|
|||
#~ "لم نتوصل إلى العثور على أية نتيجة."
|
||||
#~ " الرجاء إعادة صياغة طلب البحث أو "
|
||||
#~ "إبحث مع تحديد أكثر من فئة."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -12,19 +12,18 @@
|
|||
# Salif Mehmed <mail@salif.eu>, 2023, 2024.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Bulgarian <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/bg/>\n"
|
||||
"Language: bg\n"
|
||||
"Language-Team: Bulgarian "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/bg/>\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 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -152,6 +151,16 @@ msgstr "светъл"
|
|||
msgid "dark"
|
||||
msgstr "тъмен"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Относно"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Не е намерен артикул"
|
||||
|
@ -439,10 +448,6 @@ msgstr "Отиди на %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "търси страница"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Относно"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Дарете"
|
||||
|
@ -1724,3 +1729,4 @@ msgstr "скрий видеото"
|
|||
#~ "не намерихме резултати. Моля пробвайте "
|
||||
#~ "други ключови думи или търсете в "
|
||||
#~ "повече категории."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -13,7 +13,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-01-31 19:06+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: bn\n"
|
||||
|
@ -150,6 +150,16 @@ msgstr "সাদা"
|
|||
msgid "dark"
|
||||
msgstr "কালো"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "সম্বন্ধে"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "কোন আইটেম পাওয়া যায়নি"
|
||||
|
@ -439,10 +449,6 @@ msgstr "%(search_page)s এ যান৷"
|
|||
msgid "search page"
|
||||
msgstr "অনুসন্ধান পৃষ্ঠা"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "সম্বন্ধে"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "দান করুন"
|
||||
|
|
Binary file not shown.
|
@ -10,7 +10,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-06-02 07:07+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: bo\n"
|
||||
|
@ -147,6 +147,16 @@ msgstr ""
|
|||
msgid "dark"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
|
||||
|
@ -418,10 +428,6 @@ msgstr "%(search_page)s ལ་བསྐྱོད།"
|
|||
msgid "search page"
|
||||
msgstr "འཚོལ་བཤེར་དྲ་ངོས།"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -19,7 +19,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-12-08 07:07+0000\n"
|
||||
"Last-Translator: Ivan Gabaldon <admin@inetol.net>\n"
|
||||
"Language: ca\n"
|
||||
|
@ -156,6 +156,16 @@ msgstr "clar"
|
|||
msgid "dark"
|
||||
msgstr "fosc"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Quant a"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "No s'ha trobat cap element"
|
||||
|
@ -443,10 +453,6 @@ msgstr "Ves a %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "pàgina de cerca"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Quant a"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Donar"
|
||||
|
|
Binary file not shown.
|
@ -17,9 +17,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-17 18:56+0000\n"
|
||||
"Last-Translator: Fjuro <ifjuro@proton.me>\n"
|
||||
"Language-Team: Czech <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/cs/>\n"
|
||||
"Language: cs\n"
|
||||
|
@ -156,6 +156,16 @@ msgstr "světlý"
|
|||
msgid "dark"
|
||||
msgstr "tmavý"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr "Spolehlivost"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "O SearXNG"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Nic nenalezeno"
|
||||
|
@ -443,10 +453,6 @@ msgstr "Přejít na %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "stránka vyhledávání"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "O SearXNG"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Dar"
|
||||
|
|
Binary file not shown.
|
@ -12,7 +12,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-11-23 06:13+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: cy\n"
|
||||
|
@ -150,6 +150,16 @@ msgstr "golau"
|
|||
msgid "dark"
|
||||
msgstr "tywyll"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Ynghylch"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Ni chanfuwyd eitem"
|
||||
|
@ -428,10 +438,6 @@ msgstr "Mynd i %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "tudalen chwilio"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Ynghylch"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Rhoddi"
|
||||
|
|
Binary file not shown.
|
@ -11,7 +11,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-09-21 05:53+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: da\n"
|
||||
|
@ -148,6 +148,16 @@ msgstr "lys"
|
|||
msgid "dark"
|
||||
msgstr "mørk"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Om"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Intet fundet"
|
||||
|
@ -438,10 +448,6 @@ msgstr "Gå til 1%(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "søgeside"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Om"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Donere"
|
||||
|
|
Binary file not shown.
|
@ -24,8 +24,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-13 11:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: German <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/de/>\n"
|
||||
|
@ -162,6 +162,16 @@ msgstr "hell"
|
|||
msgid "dark"
|
||||
msgstr "dunkel"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr "Laufzeit"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Keine Einträge gefunden"
|
||||
|
@ -456,10 +466,6 @@ msgstr "Gehe zu %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "Suchseite"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Spenden"
|
||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2022-11-04 07:18+0000\n"
|
||||
"Last-Translator: Landhoo School Students "
|
||||
"<landhooschoolstudents@gmail.com>\n"
|
||||
|
@ -145,6 +145,16 @@ msgstr "އަލި"
|
|||
msgid "dark"
|
||||
msgstr "އަނދިރި"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr ""
|
||||
|
@ -416,10 +426,6 @@ msgstr ""
|
|||
msgid "search page"
|
||||
msgstr ""
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -15,7 +15,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-12-21 20:16+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: el_GR\n"
|
||||
|
@ -152,6 +152,16 @@ msgstr "φωτεινό"
|
|||
msgid "dark"
|
||||
msgstr "σκοτεινό"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Σχετικά με το SearXNG"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Δεν βρέθηκαν αντικείμενα"
|
||||
|
@ -446,10 +456,6 @@ msgstr "Μετάβαση στο %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "σελίδα αναζήτησης"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Σχετικά με το SearXNG"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Κάνε δωρεά"
|
||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
|
@ -143,6 +143,16 @@ msgstr ""
|
|||
msgid "dark"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr ""
|
||||
|
@ -414,10 +424,6 @@ msgstr ""
|
|||
msgid "search page"
|
||||
msgstr ""
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -16,7 +16,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-01-21 08:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: eo\n"
|
||||
|
@ -153,6 +153,16 @@ msgstr "hela"
|
|||
msgid "dark"
|
||||
msgstr "malhela"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Pri"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Nenio trovita"
|
||||
|
@ -444,10 +454,6 @@ msgstr "Iri al %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "Serĉopaĝo"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Pri"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Donacu"
|
||||
|
|
Binary file not shown.
|
@ -31,9 +31,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-15 16:56+0000\n"
|
||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
|
||||
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/es/>\n"
|
||||
"Language: es\n"
|
||||
|
@ -169,6 +169,16 @@ msgstr "claro"
|
|||
msgid "dark"
|
||||
msgstr "oscuro"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr "Tiempo de actividad"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Ningún artículo encontrado"
|
||||
|
@ -461,10 +471,6 @@ msgstr "Ir a %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "página de búsqueda"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Donar"
|
||||
|
|
Binary file not shown.
|
@ -13,7 +13,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-10-08 16:53+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: et\n"
|
||||
|
@ -150,6 +150,16 @@ msgstr "herge"
|
|||
msgid "dark"
|
||||
msgstr "pime"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Teave"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Üksust ei leitud"
|
||||
|
@ -430,10 +440,6 @@ msgstr "Mine %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "otsinguleht"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Teave"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Anneta"
|
||||
|
|
Binary file not shown.
|
@ -13,19 +13,18 @@
|
|||
# alexgabi <alexgabi@disroot.org>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Basque <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/eu/>\n"
|
||||
"Language: eu\n"
|
||||
"Language-Team: Basque "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/eu/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -153,6 +152,16 @@ msgstr "argia"
|
|||
msgid "dark"
|
||||
msgstr "iluna"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Honi buruz"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Ez da elementurik aurkitu"
|
||||
|
@ -444,10 +453,6 @@ msgstr "%(search_page)s(e)ra joan."
|
|||
msgid "search page"
|
||||
msgstr "bilaketa orria"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Honi buruz"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Lagundu diruz"
|
||||
|
@ -1716,3 +1721,4 @@ msgstr "ezkutatu bideoa"
|
|||
#~ "ez dugu emaitzarik aurkitu. Mesedez "
|
||||
#~ "beste kontsulta bat egin edo bilatu "
|
||||
#~ "kategoria gehiagotan."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -15,19 +15,18 @@
|
|||
# arashe22 <arashe22@proton.me>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-05 08:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Persian <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/fa/>\n"
|
||||
"Language: fa_IR\n"
|
||||
"Language-Team: Persian "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/fa/>\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 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -155,6 +154,16 @@ msgstr "روشن"
|
|||
msgid "dark"
|
||||
msgstr "تاریک"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "درباره"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "چیزی پیدا نشد"
|
||||
|
@ -444,10 +453,6 @@ msgstr "برو به %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "صفحهٔ جستوجو"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "درباره"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "اهداء کردن"
|
||||
|
@ -1723,3 +1728,4 @@ msgstr "پنهانسازی ویدئو"
|
|||
#~ "چیزی پیدا نشد. لطفاً ورودی دیگری "
|
||||
#~ "را بیازمایید یا در دستههای بیشتری "
|
||||
#~ "جستوجو کنید."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -12,7 +12,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-01-18 04:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language: fi\n"
|
||||
|
@ -149,6 +149,16 @@ msgstr "vaalea"
|
|||
msgid "dark"
|
||||
msgstr "tumma"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Tietoa SearXNG:stä"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Tietuetta ei löytynyt"
|
||||
|
@ -440,10 +450,6 @@ msgstr "Siirry %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "hakusivulle"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Tietoa SearXNG:stä"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Lahjoita"
|
||||
|
|
Binary file not shown.
|
@ -8,27 +8,29 @@
|
|||
# Hachiki <ninonakano408@gmail.com>, 2022.
|
||||
# return42 <markus.heiser@darmarit.de>, 2023, 2024.
|
||||
# johnmartzbuntia <johnmartibuntia@jmtb.xyz>, 2024.
|
||||
# hankskyjames777 <iamjuanz30312@gmail.com>, 2024.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-01-21 08:56+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-20 11:01+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Filipino <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/fil/>\n"
|
||||
"Language: fil\n"
|
||||
"Language-Team: Filipino "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/fil/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n == 1 || n==2 || n==3) || (n % 10 != 4"
|
||||
" || n % 10 != 6 || n % 10 != 9);\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==2 || n==3) || (n % 10 != 4 || "
|
||||
"n % 10 != 6 || n % 10 != 9);\n"
|
||||
"X-Generator: Weblate 5.4\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
#: searx/searxng.msg
|
||||
msgid "without further subgrouping"
|
||||
msgstr ""
|
||||
msgstr "nang walang karagdagang pagbubuklod ng data"
|
||||
|
||||
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
|
||||
#: searx/searxng.msg
|
||||
|
@ -150,6 +152,16 @@ msgstr "maliwanag"
|
|||
msgid "dark"
|
||||
msgstr "madilim"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr "\"uptime\""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Tungkol"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Walang nakita na aytem"
|
||||
|
@ -440,10 +452,6 @@ msgstr "Pumunta sa %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "ang pahina ng paghahanap"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Tungkol"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Magbigay"
|
||||
|
@ -667,7 +675,7 @@ msgstr "Iskor"
|
|||
|
||||
#: searx/templates/simple/stats.html:27
|
||||
msgid "Result count"
|
||||
msgstr ""
|
||||
msgstr "bilang ng mga resulta"
|
||||
|
||||
#: searx/templates/simple/preferences/engines.html:25
|
||||
#: searx/templates/simple/stats.html:28
|
||||
|
@ -689,11 +697,11 @@ msgstr "HTTP"
|
|||
|
||||
#: searx/templates/simple/stats.html:61
|
||||
msgid "Processing"
|
||||
msgstr ""
|
||||
msgstr "prumoproseso"
|
||||
|
||||
#: searx/templates/simple/stats.html:99
|
||||
msgid "Warnings"
|
||||
msgstr ""
|
||||
msgstr "Mga babala"
|
||||
|
||||
#: searx/templates/simple/stats.html:99
|
||||
msgid "Errors and exceptions"
|
||||
|
@ -701,7 +709,7 @@ msgstr "Mga error at exceptions"
|
|||
|
||||
#: searx/templates/simple/stats.html:105
|
||||
msgid "Exception"
|
||||
msgstr ""
|
||||
msgstr "pagkakabigo/eksepsyon"
|
||||
|
||||
#: searx/templates/simple/stats.html:107
|
||||
msgid "Message"
|
||||
|
@ -709,36 +717,36 @@ msgstr "Mensahe"
|
|||
|
||||
#: searx/templates/simple/stats.html:109
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
msgstr "porsyento"
|
||||
|
||||
#: searx/templates/simple/stats.html:111
|
||||
msgid "Parameter"
|
||||
msgstr ""
|
||||
msgstr "pamantayan"
|
||||
|
||||
#: searx/templates/simple/result_templates/files.html:36
|
||||
#: searx/templates/simple/stats.html:119
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
msgstr "pangalan ng file"
|
||||
|
||||
#: searx/templates/simple/stats.html:120
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
msgstr "gawain"
|
||||
|
||||
#: searx/templates/simple/stats.html:121
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
msgstr "code"
|
||||
|
||||
#: searx/templates/simple/stats.html:128
|
||||
msgid "Checker"
|
||||
msgstr ""
|
||||
msgstr "tagasuri"
|
||||
|
||||
#: searx/templates/simple/stats.html:131
|
||||
msgid "Failed test"
|
||||
msgstr ""
|
||||
msgstr "Nabigong Pagsusulit"
|
||||
|
||||
#: searx/templates/simple/stats.html:132
|
||||
msgid "Comment(s)"
|
||||
msgstr ""
|
||||
msgstr "(mga) komento"
|
||||
|
||||
#: searx/templates/simple/elements/apis.html:3
|
||||
msgid "Download results"
|
||||
|
@ -746,7 +754,7 @@ msgstr "I-download ang mga resulta"
|
|||
|
||||
#: searx/templates/simple/elements/engines_msg.html:7
|
||||
msgid "Messages from the search engines"
|
||||
msgstr ""
|
||||
msgstr "Mga mensahe mula sa mga search engine"
|
||||
|
||||
#: searx/templates/simple/elements/engines_msg.html:12
|
||||
msgid "Error!"
|
||||
|
@ -763,12 +771,12 @@ msgstr "URL ng Search"
|
|||
#: searx/templates/simple/elements/search_url.html:4
|
||||
#: searx/templates/simple/preferences/cookies.html:54
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
msgstr "nakopya"
|
||||
|
||||
#: searx/templates/simple/elements/search_url.html:4
|
||||
#: searx/templates/simple/preferences/cookies.html:54
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
msgstr "kopyahin"
|
||||
|
||||
#: searx/templates/simple/elements/suggestions.html:3
|
||||
msgid "Suggestions"
|
||||
|
@ -787,7 +795,7 @@ msgstr "Default na wika"
|
|||
#: searx/templates/simple/filters/languages.html:4
|
||||
#: searx/templates/simple/preferences/language.html:11
|
||||
msgid "Auto-detect"
|
||||
msgstr ""
|
||||
msgstr "awtomatikong pangdedetekta"
|
||||
|
||||
#: searx/templates/simple/filters/safesearch.html:1
|
||||
#: searx/templates/simple/filters/safesearch.html:2
|
||||
|
@ -852,35 +860,35 @@ msgstr "Paumanhin!"
|
|||
|
||||
#: searx/templates/simple/messages/no_results.html:12
|
||||
msgid "No results were found. You can try to:"
|
||||
msgstr ""
|
||||
msgstr "Walang mga resultang nahanap. Pwede mong subukang:"
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:14
|
||||
msgid "There are no more results. You can try to:"
|
||||
msgstr ""
|
||||
msgstr "Walang karagdagang mga resulta. Maaari mong subukan ang:"
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:19
|
||||
msgid "Refresh the page."
|
||||
msgstr ""
|
||||
msgstr "I-refresh ang pahina."
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:20
|
||||
msgid "Search for another query or select another category (above)."
|
||||
msgstr ""
|
||||
msgstr "Hanapin ang iba pang query o pumili ng ibang kategorya (sa itaas)."
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:21
|
||||
msgid "Change the search engine used in the preferences:"
|
||||
msgstr ""
|
||||
msgstr "Baguhin ang ginagamit na search engine sa mga nais:"
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:22
|
||||
msgid "Switch to another instance:"
|
||||
msgstr ""
|
||||
msgstr "Lumipat sa ibang \"instance\":"
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:24
|
||||
msgid "Search for another query or select another category."
|
||||
msgstr ""
|
||||
msgstr "Humanap ng ibang query o pumili ng ibang kategorya."
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:25
|
||||
msgid "Go back to the previous page using the previous page button."
|
||||
msgstr ""
|
||||
msgstr "Bumalik sa nakaraang pahina gamit ang button ng nakaraang pahina."
|
||||
|
||||
#: searx/templates/simple/preferences/answerers.html:4
|
||||
#: searx/templates/simple/preferences/engines.html:17
|
||||
|
@ -938,6 +946,7 @@ msgstr ""
|
|||
#: searx/templates/simple/preferences/cookies.html:3
|
||||
msgid "With that list, you can assess SearXNG transparency."
|
||||
msgstr ""
|
||||
"Sa tulong ng listahan, maaari mong suriin ang transparansiya ng SearXNG."
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:9
|
||||
msgid "Cookie name"
|
||||
|
@ -962,25 +971,28 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/preferences/cookies.html:35
|
||||
msgid "URL to restore your preferences in another browser"
|
||||
msgstr ""
|
||||
msgstr "URL para ibalik ang iyong mga preference sa ibang browser"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:43
|
||||
msgid ""
|
||||
"Specifying custom settings in the preferences URL can be used to sync "
|
||||
"preferences across devices."
|
||||
msgstr ""
|
||||
"Ang pagtukoy ng pasadyang mga setting sa URL ng mga preference ay maaaring "
|
||||
"gamitin upang i-sync ang mga preference sa iba't ibang mga aparato."
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:46
|
||||
msgid "Copy preferences hash"
|
||||
msgstr ""
|
||||
msgstr "Kopyahin ang hash ng mga preference"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:57
|
||||
msgid "Insert copied preferences hash (without URL) to restore"
|
||||
msgstr ""
|
||||
"Ilagay ang kinopyahang hash ng mga preference (walang URL) upang mag-restore"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:59
|
||||
msgid "Preferences hash"
|
||||
msgstr ""
|
||||
msgstr "Hash ng mga preference"
|
||||
|
||||
#: searx/templates/simple/preferences/doi_resolver.html:2
|
||||
msgid "Open Access DOI resolver"
|
||||
|
@ -988,13 +1000,15 @@ msgstr "Open Access DOI resolver"
|
|||
|
||||
#: searx/templates/simple/preferences/doi_resolver.html:14
|
||||
msgid "Select service used by DOI rewrite"
|
||||
msgstr ""
|
||||
msgstr "Pumili ng serbisyo na ginagamit sa pagsulat ng DOI"
|
||||
|
||||
#: searx/templates/simple/preferences/engines.html:9
|
||||
msgid ""
|
||||
"This tab does not exists in the user interface, but you can search in "
|
||||
"these engines by its !bangs."
|
||||
msgstr ""
|
||||
"Ang tab na ito ay hindi umiiral sa interface ng gumagamit, ngunit maaari "
|
||||
"kang maghanap sa mga engine na ito sa pamamagitan ng kanilang !bangs."
|
||||
|
||||
#: searx/templates/simple/preferences/engines.html:19
|
||||
msgid "!bang"
|
||||
|
@ -1006,7 +1020,7 @@ msgstr "Suportado ang pinili na wika"
|
|||
|
||||
#: searx/templates/simple/preferences/engines.html:23
|
||||
msgid "Weight"
|
||||
msgstr ""
|
||||
msgstr "Timbang"
|
||||
|
||||
#: searx/templates/simple/preferences/engines.html:27
|
||||
msgid "Max time"
|
||||
|
@ -1042,17 +1056,20 @@ msgstr "Bumalik"
|
|||
|
||||
#: searx/templates/simple/preferences/hotkeys.html:2
|
||||
msgid "Hotkeys"
|
||||
msgstr ""
|
||||
msgstr "Mga Hotkeys"
|
||||
|
||||
#: searx/templates/simple/preferences/hotkeys.html:13
|
||||
msgid "Vim-like"
|
||||
msgstr ""
|
||||
msgstr "Katulad ng Vim"
|
||||
|
||||
#: searx/templates/simple/preferences/hotkeys.html:18
|
||||
msgid ""
|
||||
"Navigate search results with hotkeys (JavaScript required). Press \"h\" "
|
||||
"key on main or result page to get help."
|
||||
msgstr ""
|
||||
"Mag-navigate sa mga resulta ng paghahanap gamit ang mga hotkey (JavaScript "
|
||||
"ay kinakailangan). Pindutin ang \"h\" na key sa pangunahin o resultang "
|
||||
"pahina para sa tulong."
|
||||
|
||||
#: searx/templates/simple/preferences/image_proxy.html:2
|
||||
msgid "Image proxy"
|
||||
|
@ -1079,6 +1096,8 @@ msgstr "Ano ang gusto mong wika sa paghahanap?"
|
|||
#: searx/templates/simple/preferences/language.html:25
|
||||
msgid "Choose Auto-detect to let SearXNG detect the language of your query."
|
||||
msgstr ""
|
||||
"Pumili ng Auto-detect upang payagan ang SearXNG na matukoy ang wika ng iyong "
|
||||
"query."
|
||||
|
||||
#: searx/templates/simple/preferences/method.html:2
|
||||
msgid "HTTP Method"
|
||||
|
@ -1121,6 +1140,8 @@ msgid ""
|
|||
"Perform search immediately if a category selected. Disable to select "
|
||||
"multiple categories"
|
||||
msgstr ""
|
||||
"Isagawa ang paghahanap kaagad kung may kategoryang pinili. I-disable upang "
|
||||
"pumili ng maramihang mga kategorya"
|
||||
|
||||
#: searx/templates/simple/preferences/theme.html:2
|
||||
msgid "Theme"
|
||||
|
@ -1206,16 +1227,16 @@ msgstr "TiB"
|
|||
|
||||
#: searx/templates/simple/result_templates/files.html:47
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "Petsa"
|
||||
|
||||
#: searx/templates/simple/result_templates/files.html:49
|
||||
#: searx/templates/simple/result_templates/paper.html:24
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Uri"
|
||||
|
||||
#: searx/templates/simple/result_templates/images.html:19
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
msgstr "Anyo"
|
||||
|
||||
#: searx/templates/simple/result_templates/images.html:21
|
||||
msgid "Engine"
|
||||
|
@ -1227,7 +1248,7 @@ msgstr "Tignan ang source"
|
|||
|
||||
#: searx/templates/simple/result_templates/map.html:12
|
||||
msgid "address"
|
||||
msgstr ""
|
||||
msgstr "address"
|
||||
|
||||
#: searx/templates/simple/result_templates/map.html:43
|
||||
msgid "show map"
|
||||
|
@ -1243,11 +1264,11 @@ msgstr "Petsa ng Paglathala"
|
|||
|
||||
#: searx/templates/simple/result_templates/paper.html:9
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
msgstr "Talaan"
|
||||
|
||||
#: searx/templates/simple/result_templates/paper.html:22
|
||||
msgid "Editor"
|
||||
msgstr ""
|
||||
msgstr "Patnugot"
|
||||
|
||||
#: searx/templates/simple/result_templates/paper.html:23
|
||||
msgid "Publisher"
|
||||
|
@ -1255,7 +1276,7 @@ msgstr "tagapaglathala"
|
|||
|
||||
#: searx/templates/simple/result_templates/paper.html:25
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
msgstr "Mga Tag/Tatak"
|
||||
|
||||
#: searx/templates/simple/result_templates/paper.html:26
|
||||
msgid "DOI"
|
||||
|
@ -1724,4 +1745,3 @@ msgstr "itago ang video"
|
|||
#~ "wala kaming nakita na resulta. Pakiusap"
|
||||
#~ " na ibahin ang tanong o maghanap "
|
||||
#~ "sa maraming uri."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -20,18 +20,19 @@
|
|||
# quenty_occitania <quentinantonin@free.fr>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-01-11 08:23+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-13 11:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: French <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"Language-Team: French "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/fr/>\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 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -159,6 +160,16 @@ msgstr "clair"
|
|||
msgid "dark"
|
||||
msgstr "sombre"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr "Temps de fonctionnement"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Pas d'élément trouvé"
|
||||
|
@ -447,10 +458,6 @@ msgstr "Aller à %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "la page d'accueil"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Faire un don"
|
||||
|
@ -981,15 +988,15 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/preferences/cookies.html:46
|
||||
msgid "Copy preferences hash"
|
||||
msgstr ""
|
||||
msgstr "Copier le hash des préférences"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:57
|
||||
msgid "Insert copied preferences hash (without URL) to restore"
|
||||
msgstr ""
|
||||
msgstr "Insérer le hash de préférences copié à restaurer (sans l'URL)"
|
||||
|
||||
#: searx/templates/simple/preferences/cookies.html:59
|
||||
msgid "Preferences hash"
|
||||
msgstr ""
|
||||
msgstr "Hash des préférences"
|
||||
|
||||
#: searx/templates/simple/preferences/doi_resolver.html:2
|
||||
msgid "Open Access DOI resolver"
|
||||
|
@ -1223,7 +1230,7 @@ msgstr "Tio"
|
|||
|
||||
#: searx/templates/simple/result_templates/files.html:47
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "Date"
|
||||
|
||||
#: searx/templates/simple/result_templates/files.html:49
|
||||
#: searx/templates/simple/result_templates/paper.html:24
|
||||
|
@ -1759,4 +1766,3 @@ msgstr "cacher la vidéo"
|
|||
#~ "nous n'avons trouvé aucun résultat. "
|
||||
#~ "Effectuez une autre recherche ou changez"
|
||||
#~ " de catégorie."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -11,9 +11,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-01 06:37+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-13 11:56+0000\n"
|
||||
"Last-Translator: ghose <correo@xmgz.eu>\n"
|
||||
"Language-Team: Galician <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/gl/>\n"
|
||||
"Language: gl\n"
|
||||
|
@ -149,6 +149,16 @@ msgstr "claro"
|
|||
msgid "dark"
|
||||
msgstr "escuro"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr "Activo fai"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Non se atoparon elementos"
|
||||
|
@ -438,10 +448,6 @@ msgstr "Ir a %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "páxina de busca"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Doar"
|
||||
|
|
Binary file not shown.
|
@ -15,19 +15,20 @@
|
|||
# shoko <nickskorohod@outlook.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-01-03 15:56+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2024-02-13 11:56+0000\n"
|
||||
"Last-Translator: return42 <markus.heiser@darmarit.de>\n"
|
||||
"Language-Team: Hebrew <https://translate.codeberg.org/projects/searxng/"
|
||||
"searxng/he/>\n"
|
||||
"Language: he\n"
|
||||
"Language-Team: Hebrew "
|
||||
"<https://translate.codeberg.org/projects/searxng/searxng/he/>\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 "
|
||||
"&& n % 10 == 0) ? 2 : 3));\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"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 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||
|
@ -155,6 +156,16 @@ msgstr "בהיר"
|
|||
msgid "dark"
|
||||
msgstr "כהה"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "אודות"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "לא נמצא פריט"
|
||||
|
@ -301,6 +312,8 @@ msgid ""
|
|||
"{numCitations} citations from the year {firstCitationVelocityYear} to "
|
||||
"{lastCitationVelocityYear}"
|
||||
msgstr ""
|
||||
"{numCitations} אזכורים מ {firstCitationVelocityYear} עד "
|
||||
"{lastCitationVelocityYear}"
|
||||
|
||||
#: searx/engines/tineye.py:40
|
||||
msgid ""
|
||||
|
@ -416,7 +429,7 @@ msgstr "אתה משתמש בטור וזה נראה שיש לך את הIP הזה:
|
|||
|
||||
#: searx/plugins/tor_check.py:86
|
||||
msgid "You are not using Tor and you have this external IP address: {ip_address}"
|
||||
msgstr ""
|
||||
msgstr "אינך משתמש/ת ב Tor וזוהי כתובתך: {ip_address}"
|
||||
|
||||
#: searx/plugins/tracker_url_remover.py:29
|
||||
msgid "Tracker URL remover"
|
||||
|
@ -439,10 +452,6 @@ msgstr "המשך לעמוד %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "עמוד חיפוש"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "אודות"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "תרומות"
|
||||
|
@ -458,7 +467,7 @@ msgstr "מופעל באמצעות"
|
|||
|
||||
#: searx/templates/simple/base.html:67
|
||||
msgid "a privacy-respecting, open metasearch engine"
|
||||
msgstr ""
|
||||
msgstr "מנוע מטא-חיפוש בקוד חופשי המכבד את פרטיותך"
|
||||
|
||||
#: searx/templates/simple/base.html:68
|
||||
msgid "Source code"
|
||||
|
@ -610,7 +619,7 @@ msgstr "מספר תוצאות"
|
|||
|
||||
#: searx/templates/simple/results.html:44
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
msgstr "מידע"
|
||||
|
||||
#: searx/templates/simple/results.html:73
|
||||
msgid "Try searching for:"
|
||||
|
@ -741,7 +750,7 @@ msgstr "הורד תוצאות"
|
|||
|
||||
#: searx/templates/simple/elements/engines_msg.html:7
|
||||
msgid "Messages from the search engines"
|
||||
msgstr ""
|
||||
msgstr "הודעות ממנועי החיפוש"
|
||||
|
||||
#: searx/templates/simple/elements/engines_msg.html:12
|
||||
msgid "Error!"
|
||||
|
@ -758,12 +767,12 @@ msgstr "כתובת URL חיפוש"
|
|||
#: searx/templates/simple/elements/search_url.html:4
|
||||
#: searx/templates/simple/preferences/cookies.html:54
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
msgstr "הועתק"
|
||||
|
||||
#: searx/templates/simple/elements/search_url.html:4
|
||||
#: searx/templates/simple/preferences/cookies.html:54
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
msgstr "העתק"
|
||||
|
||||
#: searx/templates/simple/elements/suggestions.html:3
|
||||
msgid "Suggestions"
|
||||
|
@ -782,7 +791,7 @@ msgstr "שפה ברירת מחדל"
|
|||
#: searx/templates/simple/filters/languages.html:4
|
||||
#: searx/templates/simple/preferences/language.html:11
|
||||
msgid "Auto-detect"
|
||||
msgstr ""
|
||||
msgstr "זיהוי אוטומטי"
|
||||
|
||||
#: searx/templates/simple/filters/safesearch.html:1
|
||||
#: searx/templates/simple/filters/safesearch.html:2
|
||||
|
@ -855,7 +864,7 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/messages/no_results.html:19
|
||||
msgid "Refresh the page."
|
||||
msgstr ""
|
||||
msgstr "טעינת הדף מחדש"
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:20
|
||||
msgid "Search for another query or select another category (above)."
|
||||
|
@ -863,7 +872,7 @@ msgstr ""
|
|||
|
||||
#: searx/templates/simple/messages/no_results.html:21
|
||||
msgid "Change the search engine used in the preferences:"
|
||||
msgstr ""
|
||||
msgstr "שינוי מנוע החיפוש בהגדרות:"
|
||||
|
||||
#: searx/templates/simple/messages/no_results.html:22
|
||||
msgid "Switch to another instance:"
|
||||
|
@ -1698,4 +1707,3 @@ msgstr "הסתר וידאו"
|
|||
#~ "use another query or search in "
|
||||
#~ "more categories."
|
||||
#~ msgstr "לא מצאנו תוצאות. אנא נסו שאילתא אחרת או חפשו בתוך יותר קטגוריות."
|
||||
|
||||
|
|
Binary file not shown.
|
@ -15,7 +15,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: searx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-31 19:06+0000\n"
|
||||
"POT-Creation-Date: 2024-02-10 07:07+0000\n"
|
||||
"PO-Revision-Date: 2023-12-29 14:09+0000\n"
|
||||
"Last-Translator: SecularSteve <fairfull.playing@gmail.com>\n"
|
||||
"Language: hr\n"
|
||||
|
@ -153,6 +153,16 @@ msgstr "svijetlo"
|
|||
msgid "dark"
|
||||
msgstr "tamno"
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['UPTIME']
|
||||
#: searx/searxng.msg
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#. BRAND_CUSTOM_LINKS['ABOUT']
|
||||
#: searx/searxng.msg searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "O nama"
|
||||
|
||||
#: searx/webapp.py:332
|
||||
msgid "No item found"
|
||||
msgstr "Nije pronađena nijedna stavka"
|
||||
|
@ -438,10 +448,6 @@ msgstr "Idi na %(search_page)s."
|
|||
msgid "search page"
|
||||
msgstr "pretraži stranicu"
|
||||
|
||||
#: searx/templates/simple/base.html:49
|
||||
msgid "About"
|
||||
msgstr "O nama"
|
||||
|
||||
#: searx/templates/simple/base.html:53
|
||||
msgid "Donate"
|
||||
msgstr "Donirajte"
|
||||
|
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue