37 Commits

Author SHA1 Message Date
searxng-bot
c6707dc0b6 [data] update searx.data - update_engine_traits.py 2026-06-29 00:44:13 +00:00
Bnyro
8605230eb8 [fix] resulthunter: images in search results are not clickable 2026-06-28 22:31:01 +02:00
Bnyro
a54722e692 [feat] tiger: add support for related search terms / suggestions 2026-06-28 22:30:48 +02:00
Bnyro
7e9a6c2861 [fix] tiger: captcha paths have changed 2026-06-28 22:30:48 +02:00
dependabot[bot]
357662d86d [upd] github-actions: Bump docker/scout-action from 1.21.0 to 1.22.0 (#6317)
Bumps [docker/scout-action](https://github.com/docker/scout-action) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/docker/scout-action/releases)
- [Commits](cd72f264be...7520205ff6)

---
updated-dependencies:
- dependency-name: docker/scout-action
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 09:19:29 +02:00
dependabot[bot]
bfa76e4cd9 [upd] github-actions: Bump actions/cache from 5.0.5 to 6.0.0 (#6316)
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.5 to 6.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](27d5ce7f10...2c8a9bd745)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 09:19:14 +02:00
dependabot[bot]
a9d49a3349 [upd] github-actions: Bump actions/setup-python from 6.2.0 to 6.3.0 (#6315)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](a309ff8b42...ece7cb06ca)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 09:18:54 +02:00
github-actions[bot]
f8ffbf36f9 [l10n] update translations from Weblate (#6320)
6de4d96dd - 2026-06-23 - code_gremlin <code_gremlin@noreply.codeberg.org>
2026-06-26 10:24:36 +02:00
Markus Heiser
e3126b89e6 [mod] update_engine_descriptions.py - revision of the script (#6309)
* [mod] update_engine_descriptions.py - revision of the script (#6309)

The script was a bit outdated, type hints were missing, and the strings were
converted to double quotation marks

The `descriptions.items()` are sorted to avoid assigning the references to
seen_descriptions randomly (should reduce unnecessary diffs in the future).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

* [data] update searx.data - update_engine_descriptions.py (#6309)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

---------

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-06-24 12:10:28 +02:00
Markus Heiser
f9f3d089ec [fix] engine anaconda - add missing about configuration (#6308)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-06-24 10:45:40 +02:00
Hu Butui
e3713717f2 [fix] engines: remove terminated chinaso media engines
Signed-off-by: Hu Butui <hot123tea123@gmail.com>
2026-06-23 18:20:04 +02:00
Bnyro
952896d29e [feat] image results: automatically guess mimetype based on path 2026-06-22 12:46:22 +02:00
Bnyro
4cc32b2457 [fix] kozmonavt: remove pagination and set to inactive by default
Pagination requires a different nextpage query parameter each
day as it seems, so it's not possible to implement this in the Xpath
engine.
2026-06-22 10:06:09 +02:00
Bnyro
cce0957f54 [feat] engines: add support for iseek.com (general) 2026-06-22 09:51:57 +02:00
Bnyro
9375c0a6b6 [feat] engines: add netherlands startpagina (general, videos, images, news) 2026-06-22 09:50:19 +02:00
Bnyro
a702741e4e [feat] engines: add giphy (images/videos) 2026-06-22 09:49:47 +02:00
Bnyro
aeced67249 [feat] engines: add findfiles.net file search engine
FindFiles.net is a specialized file search engine designed to help you search
files online with precision. Unlike traditional search engines that mainly index
web pages, FindFiles focuses on finding real files on the internet - including
PDFs, documents, archives, videos, datasets, and more. [1]

[1] https://findfiles.net
2026-06-22 09:44:27 +02:00
Bnyro
199e03de1d [feat] engines: add kozmonavt.su (general) 2026-06-22 09:42:55 +02:00
Bnyro
9cd2439e5e [feat] engines: add kukei.eu (general) 2026-06-22 09:42:45 +02:00
Bnyro
9f4d8bca02 [feat] engines: add xonaly.com (general) 2026-06-22 09:41:29 +02:00
Bnyro
de76a4a39b [feat] engines: add cl0q.com (foss domain search) 2026-06-22 09:41:18 +02:00
Bnyro
a85a5e2794 [feat] engines: add unobtanium.rocks (personal websites search) 2026-06-22 09:41:07 +02:00
Bnyro
92abd98a55 [feat] engines: add tusksearch (web, news, videos, images) (#6267)
The code that reads the value of variable `x` from `embed.js`, decodes
it to ASCII and based on that sets `window["tuskheader"]` and `window["tuskkey"]`
is attached below. The only real way to figure out what this is doing is
by stepping through it with the debugger, otherwise it's almost hopeless.

```js
function fe() {
  const B = pe => pe.map(_e => String.fromCharCode(_e)).join(''),
  ae = window,
  o = ae.x;
  if (o?.length) {
    const pe = o.length / 2;
    for (let _e = 0; _e < pe; _e++) ae[B(o[_e])] = B(o[pe + _e]);
    ae.x = void 0
  }
}
```

Minimal script for testing the engine:

```py
import random
from json import loads
import requests

resp = requests.get("https://api.tusksearch.com/revcontent/embed.js")
data = loads(resp.text[6:])

def _decode(text: list[int]) -> str:
    return "".join([chr(x) for x in text])

header = _decode(data[3])
value = _decode(data[4])

resp = requests.get(
    "https://api.tusksearch.com/Search/Web?q=test&p=1&l=center&nextArgs=&prevArgs=",
    # "https://api.tusksearch.com/Search/Image?q=test&p=1&l=center",
    headers={
        header: value,
        'x-lon': str(random.random() * 90),
        'x-lat': str(random.random() * 90),
    },
)
print(resp.text)
```
2026-06-22 09:40:32 +02:00
Bnyro
93e867c6b1 [feat] engine categories: add blogs category
Category for searching personal blogs and websites.
Useful if searching for interesting articles on a topic
rather than the mainstream Wikipedia etc. results.
2026-06-22 09:39:40 +02:00
dependabot[bot]
75c1b1dade [upd] web-client (simple): Bump less (#6289)
Bumps the minor group in /client/simple with 1 update: [less](https://github.com/less/less.js).


Updates `less` from 4.6.4 to 4.6.6
- [Release notes](https://github.com/less/less.js/releases)
- [Changelog](https://github.com/less/less.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/less/less.js/commits/v4.6.6)

---
updated-dependencies:
- dependency-name: less
  dependency-version: 4.6.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 08:03:15 +02:00
Bnyro
097ab64c70 [del] aol: remove engine (eol) (#6299) 2026-06-22 07:32:23 +02:00
dependabot[bot]
0e9f513efc [upd] pypi: Bump the minor group with 5 updates (#6291)
Bumps the minor group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [certifi](https://github.com/certifi/python-certifi) | `2026.5.20` | `2026.6.17` |
| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.0.6` |
| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.44.0` | `4.45.0` |
| [sphinxcontrib-programoutput](https://github.com/OpenNTI/sphinxcontrib-programoutput) | `0.19` | `0.20` |
| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.7` | `1.39.8` |
2026-06-22 07:30:41 +02:00
Bnyro
fd42d4fda1 [fix] chatnoir: don't re-use/cache session keys
They're invalidated very quickly, so even caching them for
60 seconds results in a lot of unauthorized access errors.
2026-06-20 21:52:14 +02:00
dependabot[bot]
5c38d2feab [upd] web-client (simple): Bump @types/node in /client/simple (#6290)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.9.3 to 26.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 16:58:47 +02:00
dependabot[bot]
38b678c493 [upd] github-actions: Bump actions/checkout from 6.0.3 to 7.0.0 (#6288)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](df4cb1c069...9c091bb21b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 16:58:27 +02:00
github-actions[bot]
fe1848673f [l10n] update translations from Weblate (#6293)
0f1c1d570 - 2026-06-18 - lugged9922 <lugged9922@noreply.codeberg.org>
81d208307 - 2026-06-18 - Raithlin <raithlin@noreply.codeberg.org>
bf09069e8 - 2026-06-17 - return42 <return42@noreply.codeberg.org>
c010ba929 - 2026-06-17 - return42 <return42@noreply.codeberg.org>
f92ba4e98 - 2026-06-17 - M Alif fadlan <maliffadlan@gmail.com>
442e504e2 - 2026-06-17 - return42 <return42@noreply.codeberg.org>
e2ffb2275 - 2026-06-17 - return42 <return42@noreply.codeberg.org>
cc26d0794 - 2026-06-17 - return42 <return42@noreply.codeberg.org>
9639f4e84 - 2026-06-17 - return42 <return42@noreply.codeberg.org>
63059d4e7 - 2026-06-15 - AndersNordh <andersnordh@noreply.codeberg.org>
460c5260f - 2026-06-15 - kratos <makesocialfoss32@keemail.me>
b212184d9 - 2026-06-16 - ghose <ghose@noreply.codeberg.org>
c9ac8e6d7 - 2026-06-15 - AndersNordh <andersnordh@noreply.codeberg.org>
cc1f5ab59 - 2026-06-15 - Fjuro <fjuro@noreply.codeberg.org>
84f985a9f - 2026-06-14 - Outbreak2096 <outbreak2096@noreply.codeberg.org>
bdb7e25bc - 2026-06-13 - SomeTr <sometr@noreply.codeberg.org>
c3eac4c37 - 2026-06-14 - Stephan-P <stephan-p@noreply.codeberg.org>
d94ab494b - 2026-06-13 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
3387bab27 - 2026-06-13 - gallegonovato <gallegonovato@noreply.codeberg.org>
2026-06-19 15:11:48 +02:00
Bnyro
8b10095e8a [fix] settings.yml: explicitely set category for xpath engines (ayo, gabanza, zapmeta, abcnyheter) (#6282) 2026-06-19 09:10:27 +02:00
Jayant Sharma
b5ef7ec8f3 [fix] calculator: move math.parse inside try-catch (#6278) (#6280)
* [fix] calculator: move math.parse inside try-catch (#6278)

* build static

---------

Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2026-06-18 17:36:47 +02:00
Bnyro
bd73cc09ea [feat] engines: add support for search.ch/web (Swiss) 2026-06-18 14:02:52 +02:00
Butui Hu
4dfdc822cf [fix] engines: chinaso: handle empty upstream results gracefully (#6266)
Signed-off-by: Hu Butui <hot123tea123@gmail.com>
2026-06-17 19:36:22 +02:00
Ivan Gabaldon
502c820a25 [fix] container: setup minimal (#6268)
Start minimal, use defaults, and extend later on. The templates are no longer
checked for changes, which was confusing and annoying after a while.

See: https://github.com/searxng/searxng/issues/6261#issuecomment-4716008282
2026-06-16 15:32:47 +02:00
Markus Heiser
4fb49b4498 [chore] add DeprecationWarning for obsolete engine.about.language property (#6265)
The old property should still be supported for a transitional period; the
reasons for this can be seen from the discussion in [1] / the further procedure
is also discussed there.

[1] https://github.com/searxng/searxng/issues/6261

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-06-16 10:31:21 +02:00
156 changed files with 5512 additions and 5132 deletions

View File

@@ -1,5 +1,6 @@
*
!container/*.template.*
!container/entrypoint.sh
!searx/**
!requirements*.txt

View File

@@ -73,18 +73,18 @@ jobs:
# yamllint enable rule:line-length
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |
@@ -96,7 +96,7 @@ jobs:
run: echo "date=$(date +'%Y%m%d')" >>$GITHUB_OUTPUT
- name: Setup cache container
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "container-${{ matrix.arch }}-${{ steps.date.outputs.date }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |
@@ -141,7 +141,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
@@ -175,7 +175,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"

View File

@@ -41,17 +41,17 @@ jobs:
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |

View File

@@ -32,18 +32,18 @@ jobs:
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |

View File

@@ -34,17 +34,17 @@ jobs:
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ matrix.python-version }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ matrix.python-version }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |
@@ -62,12 +62,12 @@ jobs:
runs-on: ubuntu-24.04-arm
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
@@ -77,13 +77,13 @@ jobs:
node-version-file: "./.nvmrc"
- name: Setup cache Node.js
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "nodejs-${{ runner.arch }}-${{ hashFiles('./.nvmrc', './package.json') }}"
path: "./client/simple/node_modules/"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |

View File

@@ -35,18 +35,18 @@ jobs:
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |
@@ -83,18 +83,18 @@ jobs:
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@2c8a9bd7457de244a408f35966fab2fb45fda9c8 # v6.0.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: |

View File

@@ -24,12 +24,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: "false"
- name: Sync GHCS from Docker Scout
uses: docker/scout-action@cd72f264beff1cd72735de31148b9d3244a0234a # v1.21.0
uses: docker/scout-action@7520205ff60037fdc436b40b6a1d1e55a839ec2d # v1.22.0
with:
organization: "searxng"
dockerhub-user: "${{ secrets.DOCKER_USER }}"

View File

@@ -16,11 +16,11 @@
},
"devDependencies": {
"@biomejs/biome": "2.5.0",
"@types/node": "^25.9.3",
"@types/node": "^26.0.0",
"browserslist": "^4.28.2",
"browserslist-to-esbuild": "^2.1.1",
"edge.js": "^6.5.1",
"less": "^4.6.4",
"less": "^4.6.6",
"mathjs": "^15.2.0",
"sharp": "~0.35.1",
"sort-package-json": "^4.0.0",
@@ -1570,13 +1570,13 @@
}
},
"node_modules/@types/node": {
"version": "25.9.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz",
"integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==",
"version": "26.0.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.0.tgz",
"integrity": "sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": ">=7.24.0 <7.24.7"
"undici-types": "~8.3.0"
}
},
"node_modules/@types/pluralize": {
@@ -2890,9 +2890,9 @@
"license": "Apache-2.0"
},
"node_modules/less": {
"version": "4.6.4",
"resolved": "https://registry.npmjs.org/less/-/less-4.6.4.tgz",
"integrity": "sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==",
"version": "4.6.6",
"resolved": "https://registry.npmjs.org/less/-/less-4.6.6.tgz",
"integrity": "sha512-ooPSwQGQ2sVe8Dh1jVsbKKsRR2gd8lFK72BDkeSzjnD1T5aIHL65hCMfO0GVmtriKgDKrQv6xp9UrihUsWuAzA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -2909,7 +2909,7 @@
"errno": "^0.1.1",
"graceful-fs": "^4.1.2",
"image-size": "~0.5.0",
"make-dir": "^2.1.0",
"make-dir": "^5.1.0",
"mime": "^1.4.1",
"needle": "^3.1.0",
"source-map": "~0.6.0"
@@ -3191,18 +3191,17 @@
"license": "MIT"
},
"node_modules/make-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-5.1.0.tgz",
"integrity": "sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"pify": "^4.0.1",
"semver": "^5.6.0"
},
"engines": {
"node": ">=6"
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/mathjs": {
@@ -3491,17 +3490,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
"node": ">=6"
}
},
"node_modules/pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -3861,17 +3849,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/semver": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"license": "ISC",
"optional": true,
"bin": {
"semver": "bin/semver"
}
},
"node_modules/sharp": {
"version": "0.35.1",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.1.tgz",
@@ -4515,9 +4492,9 @@
}
},
"node_modules/undici-types": {
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
"integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
"dev": true,
"license": "MIT"
},

View File

@@ -30,11 +30,11 @@
},
"devDependencies": {
"@biomejs/biome": "2.5.0",
"@types/node": "^25.9.3",
"@types/node": "^26.0.0",
"browserslist": "^4.28.2",
"browserslist-to-esbuild": "^2.1.1",
"edge.js": "^6.5.1",
"less": "^4.6.4",
"less": "^4.6.6",
"mathjs": "^15.2.0",
"sharp": "~0.35.1",
"sort-package-json": "^4.0.0",

View File

@@ -77,9 +77,9 @@ export default class Calculator extends Plugin {
protected async run(): Promise<string | undefined> {
const searchInput = getElement<HTMLInputElement>("q");
const node = Calculator.math.parse(searchInput.value);
try {
const node = Calculator.math.parse(searchInput.value);
return `${node.toString()} = ${node.evaluate()}`;
} catch {
// not a compatible math expression

View File

@@ -21,8 +21,6 @@ RUN --mount=type=cache,id=uv,target=/root/.cache/uv set -eux -o pipefail; \
COPY --exclude=./searx/version_frozen.py ./searx/ ./searx/
ARG TIMESTAMP_SETTINGS="0"
RUN set -eux -o pipefail; \
python -m compileall -q -f -j 0 --invalidation-mode=unchecked-hash ./searx/; \
find ./searx/static/ -type f \
@@ -30,5 +28,4 @@ RUN set -eux -o pipefail; \
-exec gzip -9 -k {} + \
-exec brotli -9 -k {} + \
-exec gzip --test {}.gz + \
-exec brotli --test {}.br +; \
touch -c --date="@$TIMESTAMP_SETTINGS" ./searx/settings.yml
-exec brotli --test {}.br +

View File

@@ -77,43 +77,23 @@ volume_handler() {
setup_ownership "$target" "directory"
}
# Handle configuration file updates
config_handler() {
local target="$1"
local template="$2"
local new_template_target="$target.new"
setup() {
local template_settings="/usr/local/searxng/settings.template.yml"
local target_settings="$__SEARXNG_CONFIG_PATH/settings.yml"
# Create/Update the configuration file
if [ -f "$target" ]; then
setup_ownership "$target" "file"
if [ "$template" -nt "$target" ]; then
cp -pfT "$template" "$new_template_target"
cat <<EOF
...
... INFORMATION
... Update available for "$target"
... It is recommended to update the configuration file to ensure proper functionality
...
... New version placed at "$new_template_target"
... Please review and merge changes
...
EOF
fi
else
if [ ! -f "$target_settings" ]; then
cat <<EOF
...
... INFORMATION
... "$target" does not exist, creating from template...
... "$target_settings" does not exist, creating from template...
...
EOF
cp -pfT "$template" "$target"
cp -pfT "$template_settings" "$target_settings"
sed -i "s/ultrasecretkey/$(head -c 24 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9')/g" "$target"
sed -i "s/ultrasecretkey/$(head -c 24 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9')/g" "$target_settings"
fi
check_file "$target"
check_file "$target_settings"
}
cat <<EOF
@@ -124,8 +104,7 @@ EOF
volume_handler "$__SEARXNG_CONFIG_PATH"
volume_handler "$__SEARXNG_DATA_PATH"
# Check for files
config_handler "$__SEARXNG_SETTINGS_PATH" "/usr/local/searxng/searx/settings.yml"
setup
# root only features
if [ "$(id -u)" -eq 0 ]; then

View File

@@ -0,0 +1,8 @@
# Read the documentation before extending the defaults:
# https://docs.searxng.org/admin/settings/
use_default_settings: true
server:
secret_key: "ultrasecretkey"
image_proxy: true

View File

@@ -1,8 +0,0 @@
.. _aol engine:
===
AOL
===
.. automodule:: searx.engines.aol
:members:

View File

@@ -2,16 +2,16 @@ mock==5.2.0
nose2[coverage_plugin]==0.16.0
cov-core==1.15.0
black==25.9.0
pylint==4.0.5
pylint==4.0.6
splinter==0.21.0
selenium==4.44.0
selenium==4.45.0
Sphinx==8.2.3;python_version <= "3.11"
Sphinx==9.1.0; python_version > "3.11"
sphinx-issues==6.0.0
sphinx-jinja==2.0.2
sphinx-tabs==3.5.0
furo==2025.12.19
sphinxcontrib-programoutput==0.19
sphinxcontrib-programoutput==0.20
sphinx-autobuild==2025.8.25
sphinx-notfound-page==1.1.0
myst-parser==5.0.0
@@ -24,5 +24,5 @@ docutils>=0.21.2;python_version <= "3.11"
docutils>=0.22.4; python_version > "3.11"
parameterized==0.9.0
granian[reload]==2.7.6
basedpyright==1.39.7
basedpyright==1.39.8
types-lxml==2026.2.16

View File

@@ -1,4 +1,4 @@
certifi==2026.5.20
certifi==2026.6.17
babel==2.18.0
flask-babel==4.0.0
flask==3.1.3

File diff suppressed because it is too large Load Diff

View File

@@ -7165,6 +7165,7 @@
"IR",
"IS",
"IT",
"JE",
"JM",
"JO",
"JP",
@@ -7194,6 +7195,7 @@
"MC",
"MD",
"ME",
"MF",
"MG",
"MH",
"MK",
@@ -7260,6 +7262,7 @@
"SS",
"ST",
"SV",
"SX",
"SY",
"SZ",
"TC",
@@ -7407,6 +7410,7 @@
"th": "thai",
"ti": "tigrinya",
"tk": "turkmen",
"to": "tonga",
"tr": "turkish",
"tt": "tatar",
"uk": "ukrainian",
@@ -7687,460 +7691,22 @@
"all_locale": null,
"custom": {},
"data_type": "traits_v1",
"languages": {
"af": "afrikaans",
"am": "amharic",
"ar": "arabic",
"az": "azerbaijani",
"be": "belarusian",
"bg": "bulgarian",
"bn": "bengali",
"bs": "bosnian",
"ca": "catalan",
"cs": "czech",
"cy": "welsh",
"da": "dansk",
"de": "deutsch",
"el": "greek",
"en": "english",
"eo": "esperanto",
"es": "espanol",
"et": "estonian",
"eu": "basque",
"fa": "persian",
"fi": "suomi",
"fo": "faroese",
"fr": "francais",
"fy": "frisian",
"ga": "irish",
"gd": "gaelic",
"gl": "galician",
"gu": "gujarati",
"he": "hebrew",
"hi": "hindi",
"hr": "croatian",
"hu": "hungarian",
"ia": "interlingua",
"id": "indonesian",
"is": "icelandic",
"it": "italiano",
"ja": "nihongo",
"jv": "javanese",
"ka": "georgian",
"kn": "kannada",
"ko": "hangul",
"la": "latin",
"lt": "lithuanian",
"lv": "latvian",
"mai": "bihari",
"mk": "macedonian",
"ml": "malayalam",
"mr": "marathi",
"ms": "malay",
"mt": "maltese",
"nb": "norsk",
"ne": "nepali",
"nl": "nederlands",
"oc": "occitan",
"pa": "punjabi",
"pl": "polski",
"pt": "portugues",
"pt_BR": "brazilian",
"ro": "romanian",
"ru": "russian",
"si": "sinhalese",
"sk": "slovak",
"sl": "slovenian",
"sq": "albanian",
"sr": "serbian",
"su": "sudanese",
"sv": "svenska",
"sw": "swahili",
"ta": "tamil",
"te": "telugu",
"th": "thai",
"ti": "tigrinya",
"tl": "tagalog",
"tr": "turkce",
"uk": "ukrainian",
"ur": "urdu",
"uz": "uzbek",
"vi": "vietnamese",
"xh": "xhosa",
"zh": "jiantizhongwen",
"zh_Hant": "fantizhengwen",
"zu": "zulu"
},
"regions": {
"ar-EG": "ar_EG",
"bg-BG": "bg_BG",
"ca-ES": "ca_ES",
"cs-CZ": "cs_CZ",
"da-DK": "da_DK",
"de-AT": "de_AT",
"de-CH": "de_CH",
"de-DE": "de_DE",
"el-GR": "el_GR",
"en-AU": "en_AU",
"en-CA": "en_CA",
"en-GB": "en-GB_GB",
"en-ID": "en_ID",
"en-IE": "en_IE",
"en-IN": "en_IN",
"en-MY": "en_MY",
"en-NZ": "en_NZ",
"en-PH": "en_PH",
"en-SG": "en_SG",
"en-US": "en_US",
"en-ZA": "en_ZA",
"es-AR": "es_AR",
"es-CL": "es_CL",
"es-CO": "es_CO",
"es-ES": "es_ES",
"es-MX": "es_MX",
"es-PE": "es_PE",
"es-US": "es_US",
"es-UY": "es_UY",
"es-VE": "es_VE",
"et-EE": "et_EE",
"fi-FI": "fi_FI",
"fil-PH": "fil_PH",
"fr-BE": "fr_BE",
"fr-CA": "fr_CA",
"fr-CH": "fr_CH",
"fr-FR": "fr_FR",
"hi-IN": "hi_IN",
"hu-HU": "hu_HU",
"id-ID": "id_ID",
"it-CH": "it_CH",
"it-IT": "it_IT",
"ja-JP": "ja_JP",
"ko-KR": "ko_KR",
"ms-MY": "ms_MY",
"ms-SG": "ms_SG",
"nb-NO": "no_NO",
"nl-BE": "nl_BE",
"nl-NL": "nl_NL",
"pl-PL": "pl_PL",
"pt-BR": "pt-BR_BR",
"pt-PT": "pt_PT",
"ro-RO": "ro_RO",
"ru-BY": "ru_BY",
"ru-RU": "ru_RU",
"sv-SE": "sv_SE",
"tr-TR": "tr_TR",
"uk-UA": "uk_UA",
"vi-VN": "vi_VN",
"zh-CN": "zh-CN_CN",
"zh-HK": "zh-TW_HK",
"zh-TW": "zh-TW_TW"
}
"languages": {},
"regions": {}
},
"startpage images": {
"all_locale": null,
"custom": {},
"data_type": "traits_v1",
"languages": {
"af": "afrikaans",
"am": "amharic",
"ar": "arabic",
"az": "azerbaijani",
"be": "belarusian",
"bg": "bulgarian",
"bn": "bengali",
"bs": "bosnian",
"ca": "catalan",
"cs": "czech",
"cy": "welsh",
"da": "dansk",
"de": "deutsch",
"el": "greek",
"en": "english",
"eo": "esperanto",
"es": "espanol",
"et": "estonian",
"eu": "basque",
"fa": "persian",
"fi": "suomi",
"fo": "faroese",
"fr": "francais",
"fy": "frisian",
"ga": "irish",
"gd": "gaelic",
"gl": "galician",
"gu": "gujarati",
"he": "hebrew",
"hi": "hindi",
"hr": "croatian",
"hu": "hungarian",
"ia": "interlingua",
"id": "indonesian",
"is": "icelandic",
"it": "italiano",
"ja": "nihongo",
"jv": "javanese",
"ka": "georgian",
"kn": "kannada",
"ko": "hangul",
"la": "latin",
"lt": "lithuanian",
"lv": "latvian",
"mai": "bihari",
"mk": "macedonian",
"ml": "malayalam",
"mr": "marathi",
"ms": "malay",
"mt": "maltese",
"nb": "norsk",
"ne": "nepali",
"nl": "nederlands",
"oc": "occitan",
"pa": "punjabi",
"pl": "polski",
"pt": "portugues",
"pt_BR": "brazilian",
"ro": "romanian",
"ru": "russian",
"si": "sinhalese",
"sk": "slovak",
"sl": "slovenian",
"sq": "albanian",
"sr": "serbian",
"su": "sudanese",
"sv": "svenska",
"sw": "swahili",
"ta": "tamil",
"te": "telugu",
"th": "thai",
"ti": "tigrinya",
"tl": "tagalog",
"tr": "turkce",
"uk": "ukrainian",
"ur": "urdu",
"uz": "uzbek",
"vi": "vietnamese",
"xh": "xhosa",
"zh": "jiantizhongwen",
"zh_Hant": "fantizhengwen",
"zu": "zulu"
},
"regions": {
"ar-EG": "ar_EG",
"bg-BG": "bg_BG",
"ca-ES": "ca_ES",
"cs-CZ": "cs_CZ",
"da-DK": "da_DK",
"de-AT": "de_AT",
"de-CH": "de_CH",
"de-DE": "de_DE",
"el-GR": "el_GR",
"en-AU": "en_AU",
"en-CA": "en_CA",
"en-GB": "en-GB_GB",
"en-ID": "en_ID",
"en-IE": "en_IE",
"en-IN": "en_IN",
"en-MY": "en_MY",
"en-NZ": "en_NZ",
"en-PH": "en_PH",
"en-SG": "en_SG",
"en-US": "en_US",
"en-ZA": "en_ZA",
"es-AR": "es_AR",
"es-CL": "es_CL",
"es-CO": "es_CO",
"es-ES": "es_ES",
"es-MX": "es_MX",
"es-PE": "es_PE",
"es-US": "es_US",
"es-UY": "es_UY",
"es-VE": "es_VE",
"et-EE": "et_EE",
"fi-FI": "fi_FI",
"fil-PH": "fil_PH",
"fr-BE": "fr_BE",
"fr-CA": "fr_CA",
"fr-CH": "fr_CH",
"fr-FR": "fr_FR",
"hi-IN": "hi_IN",
"hu-HU": "hu_HU",
"id-ID": "id_ID",
"it-CH": "it_CH",
"it-IT": "it_IT",
"ja-JP": "ja_JP",
"ko-KR": "ko_KR",
"ms-MY": "ms_MY",
"ms-SG": "ms_SG",
"nb-NO": "no_NO",
"nl-BE": "nl_BE",
"nl-NL": "nl_NL",
"pl-PL": "pl_PL",
"pt-BR": "pt-BR_BR",
"pt-PT": "pt_PT",
"ro-RO": "ro_RO",
"ru-BY": "ru_BY",
"ru-RU": "ru_RU",
"sv-SE": "sv_SE",
"tr-TR": "tr_TR",
"uk-UA": "uk_UA",
"vi-VN": "vi_VN",
"zh-CN": "zh-CN_CN",
"zh-HK": "zh-TW_HK",
"zh-TW": "zh-TW_TW"
}
"languages": {},
"regions": {}
},
"startpage news": {
"all_locale": null,
"custom": {},
"data_type": "traits_v1",
"languages": {
"af": "afrikaans",
"am": "amharic",
"ar": "arabic",
"az": "azerbaijani",
"be": "belarusian",
"bg": "bulgarian",
"bn": "bengali",
"bs": "bosnian",
"ca": "catalan",
"cs": "czech",
"cy": "welsh",
"da": "dansk",
"de": "deutsch",
"el": "greek",
"en": "english",
"eo": "esperanto",
"es": "espanol",
"et": "estonian",
"eu": "basque",
"fa": "persian",
"fi": "suomi",
"fo": "faroese",
"fr": "francais",
"fy": "frisian",
"ga": "irish",
"gd": "gaelic",
"gl": "galician",
"gu": "gujarati",
"he": "hebrew",
"hi": "hindi",
"hr": "croatian",
"hu": "hungarian",
"ia": "interlingua",
"id": "indonesian",
"is": "icelandic",
"it": "italiano",
"ja": "nihongo",
"jv": "javanese",
"ka": "georgian",
"kn": "kannada",
"ko": "hangul",
"la": "latin",
"lt": "lithuanian",
"lv": "latvian",
"mai": "bihari",
"mk": "macedonian",
"ml": "malayalam",
"mr": "marathi",
"ms": "malay",
"mt": "maltese",
"nb": "norsk",
"ne": "nepali",
"nl": "nederlands",
"oc": "occitan",
"pa": "punjabi",
"pl": "polski",
"pt": "portugues",
"pt_BR": "brazilian",
"ro": "romanian",
"ru": "russian",
"si": "sinhalese",
"sk": "slovak",
"sl": "slovenian",
"sq": "albanian",
"sr": "serbian",
"su": "sudanese",
"sv": "svenska",
"sw": "swahili",
"ta": "tamil",
"te": "telugu",
"th": "thai",
"ti": "tigrinya",
"tl": "tagalog",
"tr": "turkce",
"uk": "ukrainian",
"ur": "urdu",
"uz": "uzbek",
"vi": "vietnamese",
"xh": "xhosa",
"zh": "jiantizhongwen",
"zh_Hant": "fantizhengwen",
"zu": "zulu"
},
"regions": {
"ar-EG": "ar_EG",
"bg-BG": "bg_BG",
"ca-ES": "ca_ES",
"cs-CZ": "cs_CZ",
"da-DK": "da_DK",
"de-AT": "de_AT",
"de-CH": "de_CH",
"de-DE": "de_DE",
"el-GR": "el_GR",
"en-AU": "en_AU",
"en-CA": "en_CA",
"en-GB": "en-GB_GB",
"en-ID": "en_ID",
"en-IE": "en_IE",
"en-IN": "en_IN",
"en-MY": "en_MY",
"en-NZ": "en_NZ",
"en-PH": "en_PH",
"en-SG": "en_SG",
"en-US": "en_US",
"en-ZA": "en_ZA",
"es-AR": "es_AR",
"es-CL": "es_CL",
"es-CO": "es_CO",
"es-ES": "es_ES",
"es-MX": "es_MX",
"es-PE": "es_PE",
"es-US": "es_US",
"es-UY": "es_UY",
"es-VE": "es_VE",
"et-EE": "et_EE",
"fi-FI": "fi_FI",
"fil-PH": "fil_PH",
"fr-BE": "fr_BE",
"fr-CA": "fr_CA",
"fr-CH": "fr_CH",
"fr-FR": "fr_FR",
"hi-IN": "hi_IN",
"hu-HU": "hu_HU",
"id-ID": "id_ID",
"it-CH": "it_CH",
"it-IT": "it_IT",
"ja-JP": "ja_JP",
"ko-KR": "ko_KR",
"ms-MY": "ms_MY",
"ms-SG": "ms_SG",
"nb-NO": "no_NO",
"nl-BE": "nl_BE",
"nl-NL": "nl_NL",
"pl-PL": "pl_PL",
"pt-BR": "pt-BR_BR",
"pt-PT": "pt_PT",
"ro-RO": "ro_RO",
"ru-BY": "ru_BY",
"ru-RU": "ru_RU",
"sv-SE": "sv_SE",
"tr-TR": "tr_TR",
"uk-UA": "uk_UA",
"vi-VN": "vi_VN",
"zh-CN": "zh-CN_CN",
"zh-HK": "zh-TW_HK",
"zh-TW": "zh-TW_TW"
}
"languages": {},
"regions": {}
},
"wikidata": {
"all_locale": null,
@@ -8394,6 +7960,7 @@
"inh",
"io",
"is",
"isv",
"it",
"iu",
"ja",
@@ -8442,6 +8009,7 @@
"ltg",
"lv",
"mad",
"mag",
"mai",
"map-bms",
"mdf",
@@ -9585,4 +9153,4 @@
},
"regions": {}
}
}
}

View File

@@ -207,6 +207,7 @@ class EngineAbout(msgspec.Struct, kw_only=True):
use_official_api: bool = False
"""SearXNG engine makes use of the official API or not"""
require_api_key: bool = False
"""API requires a key or not."""
@@ -217,8 +218,11 @@ class EngineAbout(msgspec.Struct, kw_only=True):
"""Brief description of the engine and where it gets its data from.
This value should only be set as long as no description of the data source
is available via a :py:obj:`EngineAbout.wikidata_id`.
"""
is available via a :py:obj:`EngineAbout.wikidata_id`."""
language: str = ""
"""Deprecated! Migrate your setting from `engine.about.language` to
`engine.language`"""
class Engine(abc.ABC): # pylint: disable=too-few-public-methods

View File

@@ -14,6 +14,7 @@ import sys
import copy
import os
from os.path import realpath, dirname
import warnings
import types
import inspect
@@ -184,8 +185,9 @@ def set_loggers(engine: "Engine|types.ModuleType", engine_name: str):
def update_engine_attributes(engine: "Engine | types.ModuleType", engine_data: dict[str, t.Any]):
# set engine attributes from engine_data
# pylint: disable=too-many-branches
# set engine attributes from engine_data
kvargs: dict[str, t.Any]
if isinstance(engine.about, EngineAbout):
kvargs = {**msgspec.to_builtins(engine.about), **engine_data.get("about", {})}
@@ -199,6 +201,18 @@ def update_engine_attributes(engine: "Engine | types.ModuleType", engine_data: d
f"engine '{engine_data['name']}' ({engine_data['engine']}) - in the about section --> {exc}"
) from exc
# warn about deprecated engine settings
if engine.about.language:
if hasattr(engine, "language") and not engine.language:
engine.language = engine.about.language
warnings.warn(
f"engine '{engine_data['name']}' ({engine_data['engine']})"
f" - migrate engine.about.language to engine.language!",
DeprecationWarning,
2,
)
for param_name, param_value in engine_data.items():
if param_name == "about":
continue

View File

@@ -1,210 +0,0 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""AOL supports WEB, image, and video search. Internally, it uses the Bing
index.
AOL doesn't seem to support setting the language via request parameters, instead
the results are based on the URL. For example, there is
- `search.aol.com <https://search.aol.com>`_ for English results
- `suche.aol.de <https://suche.aol.de>`_ for German results
However, AOL offers its services only in a few regions:
- en-US: search.aol.com
- de-DE: suche.aol.de
- fr-FR: recherche.aol.fr
- en-GB: search.aol.co.uk
- en-CA: search.aol.ca
In order to still offer sufficient support for language and region, the `search
keywords`_ known from Bing, ``language`` and ``loc`` (region), are added to the
search term (AOL is basically just a proxy for Bing).
.. _search keywords:
https://support.microsoft.com/en-us/topic/advanced-search-keywords-ea595928-5d63-4a0b-9c6b-0b769865e78a
"""
from urllib.parse import urlencode, unquote_plus
import typing as t
from lxml import html
from dateutil import parser
from searx.result_types import EngineResults
from searx.utils import eval_xpath_list, eval_xpath, extract_text
if t.TYPE_CHECKING:
from searx.extended_types import SXNG_Response
from searx.search.processors import OnlineParams
about = {
"website": "https://www.aol.com",
"wikidata_id": "Q27585",
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "HTML",
}
categories = ["general"]
search_type = "search" # supported: search, image, video
paging = True
safesearch = True
time_range_support = True
results_per_page = 10
base_url = "https://search.aol.com"
time_range_map = {"day": "1d", "week": "1w", "month": "1m", "year": "1y"}
safesearch_map = {0: "p", 1: "r", 2: "i"}
enable_http2 = False
def init(_):
if search_type not in ("search", "image", "video"):
raise ValueError(f"unsupported search type {search_type}")
def request(query: str, params: "OnlineParams") -> None:
language, region = (params["searxng_locale"].split("-") + [None])[:2]
if language and language != "all":
query = f"{query} language:{language}"
if region:
query = f"{query} loc:{region}"
args: dict[str, str | int | None] = {
"q": query,
"b": params["pageno"] * results_per_page + 1, # page is 1-indexed
"pz": results_per_page,
}
if params["time_range"]:
args["fr2"] = "time"
args["age"] = params["time_range"]
else:
args["fr2"] = "sb-top-search"
params["cookies"]["sB"] = f"vm={safesearch_map[params['safesearch']]}"
params["url"] = f"{base_url}/aol/{search_type}?{urlencode(args)}"
logger.debug(params)
def _deobfuscate_url(obfuscated_url: str) -> str | None:
# URL looks like "https://search.aol.com/click/_ylt=AwjFSDjd;_ylu=JfsdjDFd/RV=2/RE=1774058166/RO=10/RU=https%3a%2f%2fen.wikipedia.org%2fwiki%2fTree/RK=0/RS=BP2CqeMLjscg4n8cTmuddlEQA2I-" # pylint: disable=line-too-long
if not obfuscated_url:
return None
for part in obfuscated_url.split("/"):
if part.startswith("RU="):
return unquote_plus(part[3:])
# pattern for de-obfuscating URL not found, fall back to Yahoo's tracking link
return obfuscated_url
def _general_results(doc: html.HtmlElement) -> EngineResults:
res = EngineResults()
for result in eval_xpath_list(doc, "//div[@id='web']//ol/li[not(contains(@class, 'first'))]"):
obfuscated_url = extract_text(eval_xpath(result, ".//h3/a/@href"))
if not obfuscated_url:
continue
url = _deobfuscate_url(obfuscated_url)
if not url:
continue
res.add(
res.types.MainResult(
url=url,
title=extract_text(eval_xpath(result, ".//h3/a")) or "",
content=extract_text(eval_xpath(result, ".//div[contains(@class, 'compText')]")) or "",
thumbnail=extract_text(eval_xpath(result, ".//a[contains(@class, 'thm')]/img/@data-src")) or "",
)
)
return res
def _video_results(doc: html.HtmlElement) -> EngineResults:
res = EngineResults()
for result in eval_xpath_list(doc, "//div[contains(@class, 'results')]//ol/li"):
obfuscated_url = extract_text(eval_xpath(result, ".//a/@href"))
if not obfuscated_url:
continue
url = _deobfuscate_url(obfuscated_url)
if not url:
continue
published_date_raw = extract_text(eval_xpath(result, ".//div[contains(@class, 'v-age')]"))
try:
published_date = parser.parse(published_date_raw or "")
except parser.ParserError:
published_date = None
res.add(
res.types.LegacyResult(
{
"template": "videos.html",
"url": url,
"title": extract_text(eval_xpath(result, ".//h3")),
"content": extract_text(eval_xpath(result, ".//div[contains(@class, 'compText')]")),
"thumbnail": extract_text(eval_xpath(result, ".//img[contains(@class, 'thm')]/@src")),
"length": extract_text(eval_xpath(result, ".//span[contains(@class, 'v-time')]")),
"publishedDate": published_date,
}
)
)
return res
def _image_results(doc: html.HtmlElement) -> EngineResults:
res = EngineResults()
for result in eval_xpath_list(doc, "//section[@id='results']//ul/li"):
obfuscated_url = extract_text(eval_xpath(result, "./a/@href"))
if not obfuscated_url:
continue
url = _deobfuscate_url(obfuscated_url)
if not url:
continue
res.add(
res.types.LegacyResult(
{
"template": "images.html",
# results don't have an extra URL, only the image source
"url": url,
"title": extract_text(eval_xpath(result, ".//a/@aria-label")),
"thumbnail_src": extract_text(eval_xpath(result, ".//img/@src")),
"img_src": url,
}
)
)
return res
def response(resp: "SXNG_Response") -> EngineResults:
doc = html.fromstring(resp.text)
match search_type:
case "search":
results = _general_results(doc)
case "image":
results = _image_results(doc)
case "video":
results = _video_results(doc)
case _:
raise ValueError("unsupported search type")
for suggestion in eval_xpath_list(doc, ".//ol[contains(@class, 'searchRightBottom')]//table//a"):
results.add(results.types.LegacyResult({"suggestion": extract_text(suggestion)}))
return results

View File

@@ -14,7 +14,6 @@ from searx.extended_types import SXNG_Response
from searx.network import get, post
from searx.result_types import EngineResults
from searx.utils import html_to_text
from searx.enginelib import EngineCache
if t.TYPE_CHECKING:
from searx.search.processors import OnlineParams
@@ -42,21 +41,7 @@ search_index = "cw22"
<https://www.chatnoir.eu/docs/api-general>`_ for a full list."""
CACHE: EngineCache
"""Cache to store session info (i.e. api key, csrf token, session id)."""
def setup(engine_settings: dict[str, t.Any]) -> bool:
global CACHE # pylint: disable=global-statement
CACHE = EngineCache(engine_settings["name"])
return True
def _obtain_api_key() -> tuple[str, str, str]:
cached_session = CACHE.get("session")
if cached_session:
return tuple(cached_session.split("|"))
home_resp = get(base_url)
if not home_resp.ok:
raise SearxEngineAPIException("failed to obtain api key")
@@ -76,10 +61,6 @@ def _obtain_api_key() -> tuple[str, str, str]:
session_id = token_resp.cookies["sessionid"]
scraped_api_key = token_resp.json()["token"]["token"]
# session keys seem to become rate-limited very fast, so only remembering
# for 1 minute here
CACHE.set("session", f"{csrf_token}|{session_id}|{scraped_api_key}", expire=60)
return csrf_token, session_id, scraped_api_key

View File

@@ -19,11 +19,9 @@ Configuration
The engine has the following additional settings:
- :py:obj:`chinaso_category` (:py:obj:`ChinasoCategoryType`)
- :py:obj:`chinaso_news_source` (:py:obj:`ChinasoNewsSourceType`)
In the example below, all three ChinaSO engines are using the :ref:`network
<engine network>` from the ``chinaso news`` engine.
In the example below, ChinaSO is configured for news search.
.. code:: yaml
@@ -31,23 +29,8 @@ In the example below, all three ChinaSO engines are using the :ref:`network
engine: chinaso
shortcut: chinaso
categories: [news]
chinaso_category: news
chinaso_news_source: all
- name: chinaso images
engine: chinaso
network: chinaso news
shortcut: chinasoi
categories: [images]
chinaso_category: images
- name: chinaso videos
engine: chinaso
network: chinaso news
shortcut: chinasov
categories: [videos]
chinaso_category: videos
Implementations
===============
@@ -78,19 +61,6 @@ results_per_page = 10
categories = []
language = "zh"
ChinasoCategoryType = t.Literal['news', 'videos', 'images']
"""ChinaSo supports news, videos, images search.
- ``news``: search for news
- ``videos``: search for videos
- ``images``: search for images
In the category ``news`` you can additionally filter by option
:py:obj:`chinaso_news_source`.
"""
chinaso_category = 'news'
"""Configure ChinaSo category (:py:obj:`ChinasoCategoryType`)."""
ChinasoNewsSourceType = t.Literal['CENTRAL', 'LOCAL', 'BUSINESS', 'EPAPER', 'all']
"""Filtering ChinaSo-News results by source:
@@ -109,39 +79,24 @@ base_url = "https://www.chinaso.com"
def init(_):
if chinaso_category not in ('news', 'videos', 'images'):
raise ValueError(f"Unsupported category: {chinaso_category}")
if chinaso_category == 'news' and chinaso_news_source not in t.get_args(ChinasoNewsSourceType):
if chinaso_news_source not in t.get_args(ChinasoNewsSourceType):
raise ValueError(f"Unsupported news source: {chinaso_news_source}")
def request(query, params):
query_params = {"q": query}
query_params = {'q': query, 'pn': params["pageno"], 'ps': results_per_page}
if time_range_dict.get(params['time_range']):
query_params["stime"] = time_range_dict[params['time_range']]
query_params["etime"] = 'now'
category_config = {
'news': {'endpoint': '/v5/general/v1/web/search', 'params': {'pn': params["pageno"], 'ps': results_per_page}},
'images': {
'endpoint': '/v5/general/v1/search/image',
'params': {'start_index': (params["pageno"] - 1) * results_per_page, 'rn': results_per_page},
},
'videos': {
'endpoint': '/v5/general/v1/search/video',
'params': {'start_index': (params["pageno"] - 1) * results_per_page, 'rn': results_per_page},
},
}
if chinaso_news_source != 'all':
if chinaso_news_source == 'EPAPER':
category_config['news']['params']["type"] = 'EPAPER'
query_params["type"] = 'EPAPER'
else:
category_config['news']['params']["cate"] = chinaso_news_source
query_params["cate"] = chinaso_news_source
query_params.update(category_config[chinaso_category]['params'])
params["url"] = f"{base_url}{category_config[chinaso_category]['endpoint']}?{urlencode(query_params)}"
params["url"] = f"{base_url}/v5/general/v1/web/search?{urlencode(query_params)}"
cookie = {
"uid": base64.b64encode(secrets.token_bytes(16)).decode("utf-8"),
}
@@ -156,12 +111,13 @@ def response(resp):
except Exception as e:
raise SearxEngineAPIException(f"Invalid response: {e}") from e
parsers = {'news': parse_news, 'images': parse_images, 'videos': parse_videos}
# Upstream returns {'status': 0, 'msg': 'empty result', 'data': {}} when there
# are no results; this is a valid empty result rather than an API error.
if not isinstance(data, dict) or "data" not in data:
raise SearxEngineAPIException("Invalid response")
if not data["data"]:
return []
return parsers[chinaso_category](data)
def parse_news(data):
results = []
if not data.get("data", {}).get("data"):
raise SearxEngineAPIException("Invalid response")
@@ -183,47 +139,3 @@ def parse_news(data):
}
)
return results
def parse_images(data):
results = []
if not data.get("data", {}).get("arrRes"):
raise SearxEngineAPIException("Invalid response")
for entry in data["data"]["arrRes"]:
results.append(
{
'url': entry["web_url"],
'title': html_to_text(entry["title"]),
'content': html_to_text(entry.get("ImageInfo", "")),
'template': 'images.html',
'img_src': entry["url"].replace("http://", "https://"),
'thumbnail_src': entry["largeimage"].replace("http://", "https://"),
}
)
return results
def parse_videos(data):
results = []
if not data.get("data", {}).get("arrRes"):
raise SearxEngineAPIException("Invalid response")
for entry in data["data"]["arrRes"]:
published_date = None
if entry.get("VideoPubDate"):
try:
published_date = datetime.fromtimestamp(int(entry["VideoPubDate"]))
except (ValueError, TypeError):
pass
results.append(
{
'url': entry["url"],
'title': html_to_text(entry["raw_title"]),
'template': 'videos.html',
'publishedDate': published_date,
'thumbnail': entry["image_src"].replace("http://", "https://"),
}
)
return results

118
searx/engines/findfiles.py Normal file
View File

@@ -0,0 +1,118 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""FindFiles.net_ is a Germany-based file search engine.
FindFiles.net_ is a specialized file search engine designed to help you search
files online with precision. Unlike traditional search engines that mainly index
web pages, FindFiles focuses on finding real files on the internet - including
PDFs, documents, archives, videos, datasets, and more.
.. _FindFiles.net: https://findfiles.net
"""
from os.path import basename
from urllib.parse import urlencode
import typing as t
from lxml import html
from searx.result_types import EngineResults
from searx.utils import extract_text, eval_xpath, eval_xpath_list
if t.TYPE_CHECKING:
from extended_types import SXNG_Response
from search.processors import OnlineParams
about = {
"website": "https://findfiles.net",
"wikidata_id": None,
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "HTML",
}
base_url = "https://findfiles.net"
categories = ["files"]
paging = True
safeserach = True
safesearch_map = {
0: "contentguard.off",
1: "contentguard.moderate",
2: "contentguard.strict",
}
FindFilesCategory = t.Literal[
"all",
"document",
"text",
"image",
"audio",
"video",
]
FINDFILES_CATEGORIES = t.get_args(FindFilesCategory)
findfiles_categ: FindFilesCategory = "all"
"""Category to search in."""
def setup(_: dict[str, t.Any]) -> bool:
if findfiles_categ not in FINDFILES_CATEGORIES:
raise ValueError("invalid category: %s" % findfiles_categ)
return True
def request(query: str, params: "OnlineParams") -> None:
args = {
"query": query,
"contentguard": safesearch_map[params["safesearch"]],
"page": params["pageno"],
}
# the language in the path doesn't change anything about the results, it
# only changes the UI
params["url"] = f"{base_url}/en/serp/{findfiles_categ}/?{urlencode(args)}"
def response(resp: "SXNG_Response") -> EngineResults:
res = EngineResults()
dom = html.fromstring(resp.text)
if findfiles_categ == "image":
for result in eval_xpath_list(
dom, "//div[contains(@class, 'image-mosaic')]/div[contains(@class, 'image-item')]"
):
res.add(
res.types.Image(
url=extract_text(eval_xpath(result, ".//div[contains(@class, 'caption')]/a/@href")) or "",
title=extract_text(eval_xpath(result, ".//div[contains(@class, 'caption')]/a")) or "",
thumbnail_src=extract_text(eval_xpath(result, ".//img/@src")) or "",
)
)
elif findfiles_categ == "video":
for result in eval_xpath_list(
dom, "//div[contains(@class, 'video-mosaic')]/div[contains(@class, 'video-item')]"
):
video_src = extract_text(eval_xpath(result, ".//video/@src")) or ""
res.add(
res.types.LegacyResult(
template="videos.html",
url=video_src,
title=extract_text(eval_xpath(result, ".//div[contains(@class, 'caption')]/span")) or "",
iframe_src=video_src or "",
)
)
else:
for result in eval_xpath_list(dom, "//ol/li[contains(@class, 'result-item')]/article"):
filename = basename(extract_text(eval_xpath(result, ".//h3")) or "")
res.add(
res.types.File(
url=extract_text(eval_xpath(result, ".//h3/a/@href")) or "",
title=filename,
content=" ".join(extract_text(el) or "" for el in eval_xpath_list(result, "./div/span")),
filename=filename,
size=extract_text(eval_xpath(result, "(.//span[@id])[1]")) or "",
embedded=extract_text(eval_xpath(result, ".//audio/@src")) or "",
)
)
return res

127
searx/engines/giphy.py Normal file
View File

@@ -0,0 +1,127 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Giphy (images)"""
import random
from urllib.parse import urlencode
import re
import typing as t
from lxml import html
from searx.enginelib import EngineCache
from searx.exceptions import SearxEngineAPIException
from searx.network import get
from searx.result_types import EngineResults
from searx.result_types.image import ImageRef
from searx.utils import eval_xpath_list, humanize_bytes
if t.TYPE_CHECKING:
from searx.extended_types import SXNG_Response
from searx.search.processors import OnlineParams
about = {
"website": "https://giphy.com",
"wikidata_id": "Q17054335",
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "JSON",
}
base_url = "https://giphy.com"
api_url = "https://api.giphy.com"
categories = ["images"]
paging = True
page_size = 15
GiphyCategs = t.Literal["gifs", "stickers", "clips"]
giphy_categ: GiphyCategs = "gifs"
"""Giphy category to search in."""
CACHE: EngineCache
"""Cache for storing the extracted api key."""
_GIPHY_API_KEY_RE = re.compile(r"[Aa]piKey\s*:\s*\"(\w+)\"")
def setup(engine_settings: dict[str, str]) -> bool:
if giphy_categ not in t.get_args(GiphyCategs):
raise ValueError("invalid category: %s" % giphy_categ)
global CACHE # pylint: disable=global-statement
CACHE = EngineCache(engine_settings["name"])
return True
def _get_api_key() -> str:
"""
Extract the Giphy API key from the JavaScript code. There are different API keys
(e.g. for mobile, desktop, ...), so we just pick a random one of these.
"""
cached = CACHE.get("api_key")
if cached:
return cached
homepage_resp = get(base_url)
homepage_doc = html.fromstring(homepage_resp.text)
for script_src in eval_xpath_list(homepage_doc, "//script[contains(@src, 'layout')]/@src"):
script_resp = get(base_url + script_src)
api_keys = _GIPHY_API_KEY_RE.findall(script_resp.text)
if api_keys:
api_key = random.choice(api_keys)
CACHE.set("api_key", api_key, expire=60 * 60 * 6) # 6 hours
return api_key
raise SearxEngineAPIException("failed to extract api keys")
def request(query: str, params: "OnlineParams") -> None:
args = {
"q": query,
"api_key": _get_api_key(),
"limit": page_size,
"offset": (params["pageno"] - 1) * page_size,
"type": giphy_categ,
}
params["url"] = f"{api_url}/v1/{giphy_categ}/search?{urlencode(args)}"
def response(resp: "SXNG_Response"):
res = EngineResults()
result: dict[str, t.Any]
for result in resp.json()["data"]:
img = result['images']['original']
formats = [
ImageRef(url=img["mp4"], subtype="mp4"), # type: ignore
ImageRef(url=img["webp"], subtype="webp"), # type: ignore
]
thumb = (
result["images"].get("downsized")
or result["images"].get("downsized_medium")
or result["images"].get("downsized_small")
or result["images"].get("downsized_large")
)
res.add(
res.types.Image(
title=result["title"],
content=", ".join(result.get("tags", [])),
url=result["url"],
thumbnail_src=thumb.get("url") or img["url"],
img_src=img["url"],
resolution=f"{img['width']}x{img['height']}",
img_format="GIF",
formats=formats,
author=result["username"],
filesize=humanize_bytes(int(img["size"])),
source=result.get("source_tld") or "",
)
)
return res

88
searx/engines/iseek.py Normal file
View File

@@ -0,0 +1,88 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""iseek_ is a search engine by the AI company Vantage Labs LLC,
that focuses on medical and educational applicances.
Although it's an AI company, it doesn't include any AI stuff in its results.
.. _iseek : https://www.iseek.ai/
"""
import base64
from hashlib import sha256
import typing as t
from urllib.parse import urlencode
from searx.result_types import EngineResults
if t.TYPE_CHECKING:
from searx.search.processors import OnlineParams
from searx.extended_types import SXNG_Response
about = {
"website": 'https://www.iseek.com',
"wikidata_id": None,
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "JSON",
}
categories = ["general"]
paging = True
base_url = "https://api.iseek.com"
page_size = 10
def _get_new_token(query: str, pageno: int) -> str:
"""Create a new ``qToken``. This reduced the time for fetching subsequent pages
from 4 seconds to 200ms when testing."""
# The website uses a random value as qToken for the first page. For our use case,
# it's easier if the qToken can be deterministically re-calculated based on the search query,
# so that we can the same result when calling _get_new_token for the second, third, ... page
#
# var qToken = Math.ceil(Math.random() * parseInt("ZZZZ", 36)).toString(36);
# while (qToken.length < 4) qToken = '0' + qToken;
# qToken = qToken + "_" + pageno
query_hash = sha256(query.encode()).digest()
hash_start = base64.b64encode(query_hash).decode()[0:4]
return f"{hash_start}_{pageno}"
def request(query: str, params: "OnlineParams"):
offset = (params["pageno"] - 1) * page_size
# always seems to find 20 results max
if offset >= 20:
params["url"] = None
return
args = {
"q": query,
"key": "core-web",
"num": str(page_size),
"off": offset,
"rSort": "__metasearch_score_d:desc",
# it supports many more fields, but none of them are really relevant
"names": "title_t,content_txt,url_s",
"qNames": "title_t",
"qToken": _get_new_token(query, params["pageno"]),
}
params["url"] = f"{base_url}/search?{urlencode(args)}"
def response(resp: "SXNG_Response") -> EngineResults:
res = EngineResults()
for group in resp.json()["data"]:
group: dict[str, t.Any]
for result in group["doclist"]["docs"]:
result: dict[str, str]
res.add(
res.types.MainResult(
url=result["url_s"],
title=result["title_t"],
content="".join(result["content_txt"]),
)
)
return res

View File

@@ -44,7 +44,7 @@ about = {
base_url = "https://api2.marginalia-search.com"
safesearch = True
categories = ["general"]
categories = ["general", "blogs"]
paging = True
results_per_page = 20
api_key = None

View File

@@ -101,7 +101,7 @@ def _image_results(doc: "ElementBase") -> EngineResults:
res.types.Image(
url=extract_text(eval_xpath(result, "./@href")) or "",
title=extract_text(eval_xpath(result, "./img/@alt")) or "",
thumbnail_src=extract_text(eval_xpath(result, "./img/@src")) or "",
img_src=extract_text(eval_xpath(result, "./img/@src")) or "",
),
)
)

View File

@@ -0,0 +1,107 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Startpagina is a Netherlands search engine by `Kompas`_. It takes all its
results from Google.
.. _Kompas: https://www.kompaspublishing.nl/
"""
import typing as t
from urllib.parse import urlencode
from dateutil import parser
from searx.utils import format_duration
from searx.result_types import EngineResults
if t.TYPE_CHECKING:
from searx.extended_types import SXNG_Response
from searx.search.processors import OnlineParams
about = {
"website": "https://startpagina.nl",
"wikidata_id": None,
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "JSON",
}
language = "ne"
paging = True
safesearch = True
categories = ["general"]
startpagina_categ = "web"
"""Category to search in. Can be either "web", "images", "videos" or "news"."""
page_size = 10
api_url = "https://search.kompas.services"
def init(_):
if startpagina_categ not in ("web", "images", "videos", "news"):
raise ValueError("invalid search type: %s" % startpagina_categ)
def request(query: str, params: "OnlineParams") -> None:
args = {"q": query, "page_size": page_size, "page": params["pageno"]}
params["url"] = f"{api_url}/api/v2/search/{startpagina_categ}/?{urlencode(args)}"
def response(resp: "SXNG_Response"):
res = EngineResults()
json_resp = resp.json()
for result in json_resp["results"]:
if startpagina_categ == "web":
res.add(
res.types.MainResult(
url=result["original_url"],
title=result["title"],
content=result["description"],
)
)
elif startpagina_categ == "news":
publishedDate = None
try:
publishedDate = parser.parse(result["date"])
except parser.ParserError:
pass
res.add(
res.types.MainResult(
url=result["original_url"],
title=result["title"],
content=result["description"],
thumbnail=result["image"]["thumbnail_url"],
publishedDate=publishedDate,
)
)
elif startpagina_categ == "videos":
res.add(
res.types.LegacyResult(
template="videos.html",
url=result["original_url"],
title=result["title"],
content=result["description"],
thumbnail=result["video"]["thumbnail_url"],
length=format_duration(result["video"]["duration"]),
)
)
elif startpagina_categ == "images":
res.add(
res.types.Image(
url=result["original_url"],
title=result["title"],
content=result["description"],
thumbnail_src=result["image"]["thumbnail_url"],
resolution=f"{result['image']['width']}x{result['image']['height']}",
)
)
for related in json_resp["related_searches"]:
res.add(res.types.LegacyResult(suggestion=related["query"]))
return res

View File

@@ -73,7 +73,7 @@ def _obtain_session_code() -> str:
if cached_session:
return cached_session
results_page = get(f"{base_url}/_internCode.aspx")
results_page = get(f"{base_url}/checkCode.aspx")
doc = html.fromstring(results_page.text)
extra_data: dict[str, str] = {}
@@ -107,7 +107,7 @@ def _obtain_session_code() -> str:
}
challenge_response = post(
f"{base_url}/_internCode.aspx",
f"{base_url}/checkCode.aspx",
cookies=results_page.cookies,
data=data,
)
@@ -125,7 +125,9 @@ def request(query: str, params: "OnlineParams"):
code = _obtain_session_code()
args = {"w": query, "page": params["pageno"]}
params["url"] = f"{base_url}/{tiger_category}?{urlencode(args)}"
params["cookies"]["Tiger.ch"] = f"Code={code}"
# Setting Checked=1 shows related search terms / suggestions
# Language and country could be set with Lng= and Land= in the future
params["cookies"]["Tiger.ch"] = f"Tiger.ch=&Code={code}&Checked=1"
def response(resp: "SXNG_Response") -> EngineResults:
@@ -144,6 +146,9 @@ def response(resp: "SXNG_Response") -> EngineResults:
content=extract_text(eval_xpath(result, ".//*[contains(@class, 'webbodynopic')]")) or "",
)
)
for suggestion in eval_xpath_list(doc, "//a[contains(@class, 'linkAnders')]"):
res.add(res.types.LegacyResult(suggestion=extract_text(suggestion)))
elif tiger_category == "News":
for result in eval_xpath_list(doc, "//div[@id='panNews']/div"):
publishedDate = None

162
searx/engines/tusksearch.py Normal file
View File

@@ -0,0 +1,162 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Tusksearch_ is an American search engine that claims to fight censorship.
Its search results are (at least partially) from Brave.
.. _Tusksearch: https://tusksearch.com/about
"""
from json import loads
import random
import typing as t
from urllib.parse import urlencode
from dateutil import parser
from searx.exceptions import SearxEngineAPIException
from searx.network import get
from searx.utils import html_to_text
from searx.result_types import EngineResults
if t.TYPE_CHECKING:
from searx.extended_types import SXNG_Response
from searx.search.processors import OnlineParams
about = {
"website": "https://tusksearch.com",
"wikidata_id": None,
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "JSON",
}
paging = True
categories = ["general"]
tusk_categ = "web"
"""Category to search in. Can be either "web", "images", "videos" or "news"."""
api_url = "https://api.tusksearch.com"
def init(_):
if tusk_categ not in ("web", "images", "videos", "news"):
raise ValueError("invalid search type: %s" % tusk_categ)
def _obtain_x_sid() -> tuple[str, str]:
"""
The session ID ("sid") is encoded as a byte array in ``embed.js``.
It is only valid for exactly one request, so we can't cache it.
The header key is usually called `x-sid-{UUIDv4}`, and the value is
usually a plain UUIDv4 (but a different one than in the header key).
"""
resp = get(f"{api_url}/revcontent/embed.js")
if not resp.ok:
raise SearxEngineAPIException("failed to obtain request x-sid token")
# data is prefixed by 'var x='
data_array = loads(resp.text[6:])
def _byte_array_to_ascii(text: list[int]) -> str:
"""
Converts a byte array (e.g. [81, 101, 97, 114, 88, 78, 71]) to the ASCII
string representation (e.g. "SearXNG").
"""
return "".join([chr(x) for x in text])
x_sid_header = _byte_array_to_ascii(data_array[3])
x_sid_value = _byte_array_to_ascii(data_array[4])
return x_sid_header, x_sid_value
def request(query: str, params: "OnlineParams") -> None:
# images don't support pagination, news and videos only support two pages
if tusk_categ == "images" and params["pageno"] > 1 or tusk_categ in ("news", "videos") and params["pageno"] > 2:
params["url"] = None
return
args = {
"q": query,
"p": params["pageno"],
"l": "center", # political direction: "left", "center" or "right"
}
if tusk_categ == "images":
params["url"] = f"{api_url}/Search/Image?{urlencode(args)}"
else:
# web response also contains news and videos
params["url"] = f"{api_url}/Search/Web?{urlencode(args)}"
x_sid_header, x_sid_value = _obtain_x_sid()
params["headers"] = {
x_sid_header: x_sid_value,
# required - we send a random longitude and latitude instead of the actual user location
'x-lon': str(random.random() * 90),
'x-lat': str(random.random() * 90),
}
def response(resp: "SXNG_Response"):
res = EngineResults()
json_resp = resp.json()["results"]
if tusk_categ == "web":
for result in (json_resp.get("web") or {}).get("results", []):
res.add(
res.types.MainResult(
url=result["url"],
title=html_to_text(result["title"]),
content=html_to_text(result["description"]),
thumbnail=(result["thumbnail"] or {}).get("src") or "",
)
)
elif tusk_categ == "news":
for result in (json_resp.get("news") or {}).get("results", []):
publishedDate = None
try:
publishedDate = parser.parse(result["age"])
except parser.ParserError:
pass
res.add(
res.types.MainResult(
url=result["url"],
title=html_to_text(result["title"]),
content=html_to_text(result["description"]),
thumbnail=result["thumbnail"]["src"],
publishedDate=publishedDate,
)
)
elif tusk_categ == "videos":
for result in (json_resp.get("videos") or {}).get("results", []):
publishedDate = None
try:
publishedDate = parser.parse(result["age"])
except parser.ParserError:
pass
res.add(
res.types.LegacyResult(
template="videos.html",
url=result["url"],
title=html_to_text(result["title"]),
content=html_to_text(result["description"]),
thumbnail=result["thumbnail"]["src"],
publishedDate=publishedDate,
length=result["video"].get("duration"),
)
)
elif tusk_categ == "images":
for result in json_resp:
res.add(
res.types.Image(
url=result["url"],
title=html_to_text(result["title"]),
img_src=result["properties"]["url"],
thumbnail_src=result["thumbnail"]["src"],
)
)
return res

View File

@@ -292,7 +292,7 @@ def response(resp) -> EngineResults: # pylint: disable=too-many-branches
if results_xpath:
for result in eval_xpath_list(dom, results_xpath):
url = extract_url(eval_xpath_list(result, url_xpath, min_len=1), search_url)
url = extract_url(eval_xpath(result, url_xpath), search_url)
title = extract_text(eval_xpath_list(result, title_xpath, min_len=1))
content = extract_text(eval_xpath_list(result, content_xpath))
tmp_result = {'url': url, 'title': title, 'content': content}

View File

@@ -14,6 +14,7 @@ template.
# pylint: disable=too-few-public-methods
__all__ = ["Image", "ImageRef"]
import mimetypes
import types
import typing as t
from collections.abc import Callable
@@ -71,7 +72,7 @@ class Image(MainResult, kw_only=True):
"""The resolution of the image (e.g. ``1920 x 1080`` pixel)"""
img_format: str = ""
"""The format of the image (e.g. ``png``)."""
"""The format of the image :py:obj:`.MainResult.img_src` (e.g. ``png``)."""
source: str = ""
"""Source of the image."""
@@ -83,6 +84,19 @@ class Image(MainResult, kw_only=True):
formats: list[ImageRef] = []
"""List of links to alternative image formats."""
def __post_init__(self):
super().__post_init__()
if not self.img_format:
# automatically guess the image format based on the path of the image
mimetype = mimetypes.guess_type(self.img_src)[0]
if mimetype:
subtype = mimetype.split("/")[-1]
if subtype in MIMESUB:
self.img_format = MIMESUB[subtype]
else:
self.img_format = subtype.upper()
def filter_urls(self, filter_func: "Callable[[Result | LegacyResult, str, str], str | bool ]"):
for _ref in self.formats[:]:

View File

@@ -322,6 +322,7 @@ engines:
- name: abcnyheter
engine: xpath
categories: general
paging: true
search_url: https://startsiden.abcnyheter.no/sok/?q={query}&page={pageno}
shortcut: abc
@@ -442,27 +443,12 @@ engines:
timeout: 6.0
shortcut: conda
disabled: true
- name: aol
engine: aol
search_type: search
categories: [general]
shortcut: aol
disabled: true
- name: aol images
engine: aol
search_type: image
categories: [images]
shortcut: aoli
disabled: true
- name: aol videos
engine: aol
search_type: video
categories: [videos]
shortcut: aolv
disabled: true
about:
website: https://anaconda.org/search
wikidata_id: Q18209310
official_api_documentation: https://api.anaconda.org/search
use_official_api: false
results: HTML
- name: arch linux wiki
engine: archlinux
@@ -493,6 +479,7 @@ engines:
- name: ayo
engine: xpath
categories: general
shortcut: ayo
search_url: https://search.ayo.de/search?q={query}
results_xpath: //div[contains(@class, 'search-result')]/div
@@ -663,28 +650,29 @@ engines:
engine: chinaso
shortcut: chinaso
categories: [news]
chinaso_category: news
chinaso_news_source: all
disabled: true
inactive: true
- name: chinaso images
engine: chinaso
network: chinaso news
shortcut: chinasoi
categories: [images]
chinaso_category: images
disabled: true
inactive: true
- name: chinaso videos
engine: chinaso
network: chinaso news
shortcut: chinasov
categories: [videos]
chinaso_category: videos
- name: cl0q
engine: json_engine
shortcut: cl
categories: general
paging: true
first_page_num: 0
page_size: 20
search_url: https://cl0q.com/search?q={query}&limit=20&offset={pageno}
results_query: results
url_query: domain
url_prefix: https://
title_query: title
content_query: description
disabled: true
inactive: true
about:
website: https://cl0q.com
description: "Open source network for searching domains"
results: JSON
- name: cloudflareai
engine: cloudflareai
@@ -976,6 +964,34 @@ engines:
shortcut: fd
disabled: true
- name: findfiles
engine: findfiles
findfiles_categ: all
categories: files
shortcut: fif
disabled: true
- name: findfiles images
engine: findfiles
findfiles_categ: image
categories: images
shortcut: fifi
disabled: true
- name: findfiles videos
engine: findfiles
findfiles_categ: video
categories: videos
shortcut: fifv
disabled: true
- name: findfiles music
engine: findfiles
findfiles_categ: audio
categories: music
shortcut: fifm
disabled: true
- name: findthatmeme
engine: findthatmeme
shortcut: ftm
@@ -1079,6 +1095,7 @@ engines:
- name: gabanza
engine: xpath
categories: general
search_url: https://www.gabanza.com/search?query={query}
shortcut: gab
timeout: 4
@@ -1111,6 +1128,11 @@ engines:
search_type: text
timeout: 10
- name: giphy
engine: giphy
shortcut: gif
disabled: true
- name: gitlab
engine: gitlab
base_url: https://gitlab.com
@@ -1292,6 +1314,13 @@ engines:
require_api_key: false
results: JSON
- name: iseek
engine: iseek
shortcut: isk
timeout: 4
disabled: true
inactive: true
- name: il post
engine: il_post
shortcut: pst
@@ -1380,6 +1409,21 @@ engines:
# api_key: "" # required
# kagi_categ: videos
- name: kozmonavt
engine: xpath
search_url: https://kozmonavt.su/s?q={query}
shortcut: koz
disabled: true
inactive: true
results_xpath: //div[contains(@class, 'list')]/section
url_xpath: concat('https://', substring-after(.//a/@href, '?q='))
title_xpath: .//a
content_xpath: .//div[contains(@class, 'snip')]
about:
website: https://kozmonavt.su
description: "Web site directory with its own index"
results: HTML
- name: jisho
engine: jisho
shortcut: js
@@ -1397,6 +1441,22 @@ engines:
shortcut: kc
timeout: 4.0
- name: kukei
engine: xpath
categories: [general, blogs]
search_url: https://kukei.eu/?q={query}
shortcut: kuk
disabled: true
inactive: true
results_xpath: //ul/li[contains(@class, "result-item-first-level")]
url_xpath: .//a/@href
title_xpath: .//h3
content_xpath: .//p
about:
website: https://kukei.eu
description: "Curated search for the small web"
results: HTML
- name: lemmy communities
engine: lemmy
lemmy_type: Communities
@@ -2030,7 +2090,7 @@ engines:
- name: rawweb
engine: json_engine
shortcut: rw
categories: general
categories: [general, blogs]
paging: true
search_url: 'https://api.rawweb.org/api/search?keyword={query}&page={pageno}&lang=*'
results_query: data
@@ -2085,7 +2145,7 @@ engines:
- name: searchmysite
engine: xpath
shortcut: sms
categories: general
categories: [general, blogs]
paging: true
search_url: https://searchmysite.net/search/?q={query}&page={pageno}
results_xpath: //div[contains(@class,'search-result')]
@@ -2401,6 +2461,35 @@ engines:
- 5000
inactive: true
- name: tusksearch
engine: tusksearch
shortcut: tu
tusk_categ: web
categories: general
disabled: true
- name: tusksearch images
engine: tusksearch
shortcut: tui
paging: false
tusk_categ: images
categories: images
disabled: true
- name: tusksearch videos
engine: tusksearch
shortcut: tuv
tusk_categ: videos
categories: videos
disabled: true
- name: tusksearch news
engine: tusksearch
shortcut: tun
tusk_categ: news
categories: news
disabled: true
# tmp suspended - too slow, too many errors
# - name: urbandictionary
# engine : xpath
@@ -2414,6 +2503,24 @@ engines:
engine: unsplash
shortcut: us
- name: unobtanium
engine: xpath
shortcut: uno
categories: [general, blogs]
paging: true
first_page_num: 0
search_url: https://unobtanium.rocks/search?search={query}&page={pageno}
results_xpath: //ul[contains(@class, 'search-results')]/li
url_xpath: .//a/@href
title_xpath: .//a/b
content_xpath: .//p[2]
disabled: true
inactive: true
about:
website: https://unobtanium.rocks
description: "Personal websites focused search engine."
results: HTML
- name: yandex
engine: yandex
categories: general
@@ -2473,7 +2580,7 @@ engines:
url_query: URL
title_query: Title
content_query: Snippet
categories: [general, web]
categories: [general, blogs]
shortcut: wib
disabled: true
about:
@@ -2836,6 +2943,25 @@ engines:
shortcut: rehi
disabled: true
- name: searchch
engine: xpath
shortcut: sch
paging: true
search_url: https://search.ch/web/api/loadmore.html?path=/web/&q={query}&page={pageno}
results_xpath: //div[contains(@class, 'www-feed-web-result')]
# the URL looks like "//search.ch/web/r/redirect?...result!uffe8997e781e241d/https://example.com"
url_xpath: concat('https://', substring-after(.//a[contains(@class, 'sl-gus-result-url')]/@href, '://'))
title_xpath: .//a[contains(@class, 'sl-gus-result-title')]
content_xpath: .//div[contains(@class, 'sl-gus-result-body')]
language: "ch"
disabled: true
about:
website: https://search.ch/web
description: "Swiss search engine with its own Swiss index"
use_official_api: false
require_api_key: false
results: HTML
- name: searchzee
engine: json_engine
search_url: https://searchzee.com/api/search?q={query}&type=web&offset={pageno}
@@ -2879,6 +3005,38 @@ engines:
disabled: true
inactive: true
- name: startpagina
engine: startpagina
shortcut: spnl
startpagina_categ: web
categories: general
disabled: true
inactive: true
- name: startpagina images
engine: startpagina
shortcut: spnli
startpagina_categ: images
categories: images
disabled: true
inactive: true
- name: startpagina videos
engine: startpagina
shortcut: spnlv
startpagina_categ: videos
categories: videos
disabled: true
inactive: true
- name: startpagina news
engine: startpagina
shortcut: spnln
startpagina_categ: news
categories: news
disabled: true
inactive: true
- name: swisscows
engine: swisscows
categories: general
@@ -3001,9 +3159,26 @@ engines:
shortcut: wttr
timeout: 9.0
- name: xonaly
engine: xpath
search_url: https://xonaly.com/?query={query}
categories: general
shortcut: xo
disabled: true
inactive: true
results_xpath: //div[contains(@class, 'results-block')]/ul/li
url_xpath: ./div[contains(@class, 'result-title')]/a/@href
title_xpath: ./div[contains(@class, 'result-title')]/a
content_xpath: ./p[contains(@class, 'excerpt')]
about:
website: https://xonaly.com
description: "Canadian search engine with its own index"
results: HTML
- name: zapmeta
engine: xpath
shortcut: zpm
categories: general
search_url: https://www.zapmeta.com/search?q={query}&pg={pageno}
results_xpath: //article[contains(@class, "organic-results-item")]
url_xpath: ./h2/a/@href

File diff suppressed because one or more lines are too long

View File

@@ -77,7 +77,7 @@
]
},
"src/js/plugin/Calculator.ts": {
"file": "chunk/DDL5uWMz.min.js",
"file": "chunk/CTP0QVHn.min.js",
"name": "calculator",
"src": "src/js/plugin/Calculator.ts",
"isDynamicEntry": true,

View File

@@ -1,3 +1,3 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./chunk/U6YV4Y8e.min.js","./sxng-mapview.min.css","./chunk/DpvWr1cn.min.js","./chunk/DK4yUVpy.min.js","./chunk/DcK-mo-Y.min.js","./chunk/DDL5uWMz.min.js","./chunk/C93hSkpT.min.js","./chunk/5Ako-qGW.min.js","./chunk/DvCYLbJr.min.js","./chunk/B8prKeWj.min.js","./chunk/e2-9fzwE.min.js"])))=>i.map(i=>d[i]);
var e=class{id;constructor(e){this.id=e,queueMicrotask(()=>this.invoke())}async invoke(){try{console.debug(`[PLUGIN] ${this.id}: Running...`);let e=await this.run();if(!e)return;console.debug(`[PLUGIN] ${this.id}: Running post-exec...`),await this.post(e)}catch(e){console.error(`[PLUGIN] ${this.id}:`,e)}finally{console.debug(`[PLUGIN] ${this.id}: Done.`)}}},t={index:`index`,results:`results`,preferences:`preferences`,unknown:`unknown`},n={closeDetail:void 0,scrollPageToSelected:void 0,selectImage:void 0,selectNext:void 0,selectPrevious:void 0},r=()=>{let e=document.querySelector(`meta[name="endpoint"]`)?.getAttribute(`content`);return e&&e in t?e:t.unknown},i=()=>{let e=document.querySelector(`script[client_settings]`)?.getAttribute(`client_settings`);if(!e)return{};try{return JSON.parse(atob(e))}catch(e){return console.error(`Failed to load client_settings:`,e),{}}},a=async(e,t,n)=>{let r=new AbortController,i=setTimeout(()=>r.abort(),n?.timeout??3e4),a=await fetch(t,{body:n?.body,method:e,signal:r.signal}).finally(()=>clearTimeout(i));if(!a.ok)throw Error(a.statusText);return a},o=(e,t,n,r)=>{if(typeof t!=`string`){t.addEventListener(e,n,r);return}document.addEventListener(e,e=>{for(let r of e.composedPath())if(r instanceof HTMLElement&&r.matches(t)){try{n.call(r,e)}catch(e){console.error(e)}break}},r)},s=(e,t)=>{for(let e of t?.on??[])if(!e)return;document.readyState===`loading`?o(`DOMContentLoaded`,document,e,{once:!0}):e()},c=r(),l=i(),u=(e,t)=>{d(t)&&e()},d=e=>{switch(e.on){case`global`:return!0;case`endpoint`:return!!e.where.includes(c)}},f=`modulepreload`,p=function(e,t){return new URL(e,t).href},m={},h=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=p(t,n),t in m)return;m[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:f,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};s(()=>{document.documentElement.classList.remove(`no-js`),document.documentElement.classList.add(`js`),o(`click`,`.close`,function(){this.parentNode?.classList.add(`invisible`)}),o(`click`,`.searxng_init_map`,async function(e){e.preventDefault(),this.classList.remove(`searxng_init_map`),u(()=>h(async()=>{let{default:e}=await import(`./chunk/U6YV4Y8e.min.js`);return{default:e}},__vite__mapDeps([0,1]),import.meta.url).then(({default:e})=>new e(this)),{on:`endpoint`,where:[t.results]})}),l.plugins?.includes(`infiniteScroll`)&&u(()=>h(async()=>{let{default:e}=await import(`./chunk/DpvWr1cn.min.js`);return{default:e}},__vite__mapDeps([2,3,4]),import.meta.url).then(({default:e})=>new e),{on:`endpoint`,where:[t.results]}),l.plugins?.includes(`calculator`)&&u(()=>h(async()=>{let{default:e}=await import(`./chunk/DDL5uWMz.min.js`);return{default:e}},__vite__mapDeps([5,4,3]),import.meta.url).then(({default:e})=>new e),{on:`endpoint`,where:[t.results]})}),s(()=>{h(()=>import(`./chunk/C93hSkpT.min.js`),__vite__mapDeps([6,3]),import.meta.url),h(()=>import(`./chunk/5Ako-qGW.min.js`),__vite__mapDeps([7,4,3]),import.meta.url),l.autocomplete&&h(()=>import(`./chunk/DvCYLbJr.min.js`),__vite__mapDeps([8,3]),import.meta.url)},{on:[c===t.index]}),s(()=>{h(()=>import(`./chunk/C93hSkpT.min.js`),__vite__mapDeps([6,3]),import.meta.url),h(()=>import(`./chunk/B8prKeWj.min.js`),__vite__mapDeps([9,3]),import.meta.url),h(()=>import(`./chunk/5Ako-qGW.min.js`),__vite__mapDeps([7,4,3]),import.meta.url),l.autocomplete&&h(()=>import(`./chunk/DvCYLbJr.min.js`),__vite__mapDeps([8,3]),import.meta.url)},{on:[c===t.results]}),s(()=>{h(()=>import(`./chunk/e2-9fzwE.min.js`),__vite__mapDeps([10,3]),import.meta.url)},{on:[c===t.preferences]});export{e as a,l as i,o as n,n as r,a as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./chunk/U6YV4Y8e.min.js","./sxng-mapview.min.css","./chunk/DpvWr1cn.min.js","./chunk/DK4yUVpy.min.js","./chunk/DcK-mo-Y.min.js","./chunk/CTP0QVHn.min.js","./chunk/C93hSkpT.min.js","./chunk/5Ako-qGW.min.js","./chunk/DvCYLbJr.min.js","./chunk/B8prKeWj.min.js","./chunk/e2-9fzwE.min.js"])))=>i.map(i=>d[i]);
var e=class{id;constructor(e){this.id=e,queueMicrotask(()=>this.invoke())}async invoke(){try{console.debug(`[PLUGIN] ${this.id}: Running...`);let e=await this.run();if(!e)return;console.debug(`[PLUGIN] ${this.id}: Running post-exec...`),await this.post(e)}catch(e){console.error(`[PLUGIN] ${this.id}:`,e)}finally{console.debug(`[PLUGIN] ${this.id}: Done.`)}}},t={index:`index`,results:`results`,preferences:`preferences`,unknown:`unknown`},n={closeDetail:void 0,scrollPageToSelected:void 0,selectImage:void 0,selectNext:void 0,selectPrevious:void 0},r=()=>{let e=document.querySelector(`meta[name="endpoint"]`)?.getAttribute(`content`);return e&&e in t?e:t.unknown},i=()=>{let e=document.querySelector(`script[client_settings]`)?.getAttribute(`client_settings`);if(!e)return{};try{return JSON.parse(atob(e))}catch(e){return console.error(`Failed to load client_settings:`,e),{}}},a=async(e,t,n)=>{let r=new AbortController,i=setTimeout(()=>r.abort(),n?.timeout??3e4),a=await fetch(t,{body:n?.body,method:e,signal:r.signal}).finally(()=>clearTimeout(i));if(!a.ok)throw Error(a.statusText);return a},o=(e,t,n,r)=>{if(typeof t!=`string`){t.addEventListener(e,n,r);return}document.addEventListener(e,e=>{for(let r of e.composedPath())if(r instanceof HTMLElement&&r.matches(t)){try{n.call(r,e)}catch(e){console.error(e)}break}},r)},s=(e,t)=>{for(let e of t?.on??[])if(!e)return;document.readyState===`loading`?o(`DOMContentLoaded`,document,e,{once:!0}):e()},c=r(),l=i(),u=(e,t)=>{d(t)&&e()},d=e=>{switch(e.on){case`global`:return!0;case`endpoint`:return!!e.where.includes(c)}},f=`modulepreload`,p=function(e,t){return new URL(e,t).href},m={},h=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=p(t,n),t in m)return;m[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:f,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};s(()=>{document.documentElement.classList.remove(`no-js`),document.documentElement.classList.add(`js`),o(`click`,`.close`,function(){this.parentNode?.classList.add(`invisible`)}),o(`click`,`.searxng_init_map`,async function(e){e.preventDefault(),this.classList.remove(`searxng_init_map`),u(()=>h(async()=>{let{default:e}=await import(`./chunk/U6YV4Y8e.min.js`);return{default:e}},__vite__mapDeps([0,1]),import.meta.url).then(({default:e})=>new e(this)),{on:`endpoint`,where:[t.results]})}),l.plugins?.includes(`infiniteScroll`)&&u(()=>h(async()=>{let{default:e}=await import(`./chunk/DpvWr1cn.min.js`);return{default:e}},__vite__mapDeps([2,3,4]),import.meta.url).then(({default:e})=>new e),{on:`endpoint`,where:[t.results]}),l.plugins?.includes(`calculator`)&&u(()=>h(async()=>{let{default:e}=await import(`./chunk/CTP0QVHn.min.js`);return{default:e}},__vite__mapDeps([5,4,3]),import.meta.url).then(({default:e})=>new e),{on:`endpoint`,where:[t.results]})}),s(()=>{h(()=>import(`./chunk/C93hSkpT.min.js`),__vite__mapDeps([6,3]),import.meta.url),h(()=>import(`./chunk/5Ako-qGW.min.js`),__vite__mapDeps([7,4,3]),import.meta.url),l.autocomplete&&h(()=>import(`./chunk/DvCYLbJr.min.js`),__vite__mapDeps([8,3]),import.meta.url)},{on:[c===t.index]}),s(()=>{h(()=>import(`./chunk/C93hSkpT.min.js`),__vite__mapDeps([6,3]),import.meta.url),h(()=>import(`./chunk/B8prKeWj.min.js`),__vite__mapDeps([9,3]),import.meta.url),h(()=>import(`./chunk/5Ako-qGW.min.js`),__vite__mapDeps([7,4,3]),import.meta.url),l.autocomplete&&h(()=>import(`./chunk/DvCYLbJr.min.js`),__vite__mapDeps([8,3]),import.meta.url)},{on:[c===t.results]}),s(()=>{h(()=>import(`./chunk/e2-9fzwE.min.js`),__vite__mapDeps([10,3]),import.meta.url)},{on:[c===t.preferences]});export{e as a,l as i,o as n,n as r,a as t};
//# sourceMappingURL=sxng-core.min.js.map

View File

@@ -9,7 +9,6 @@
'''
sxng_locales = (
('af', 'Afrikaans', '', 'Afrikaans', '\U0001f310'),
('ar', 'العربية', '', 'Arabic', '\U0001f310'),
('ar-SA', 'العربية', 'المملكة العربية السعودية', 'Arabic', '\U0001f1f8\U0001f1e6'),
('bg', 'Български', '', 'Bulgarian', '\U0001f310'),
@@ -46,7 +45,6 @@ sxng_locales = (
('es-ES', 'Español', 'España', 'Spanish', '\U0001f1ea\U0001f1f8'),
('es-MX', 'Español', 'México', 'Spanish', '\U0001f1f2\U0001f1fd'),
('es-PE', 'Español', 'Perú', 'Spanish', '\U0001f1f5\U0001f1ea'),
('es-VE', 'Español', 'Venezuela', 'Spanish', '\U0001f1fb\U0001f1ea'),
('et', 'Eesti', '', 'Estonian', '\U0001f310'),
('et-EE', 'Eesti', 'Eesti', 'Estonian', '\U0001f1ea\U0001f1ea'),
('fi', 'Suomi', '', 'Finnish', '\U0001f310'),
@@ -58,7 +56,6 @@ sxng_locales = (
('fr-CA', 'Français', 'Canada', 'French', '\U0001f1e8\U0001f1e6'),
('fr-CH', 'Français', 'Suisse', 'French', '\U0001f1e8\U0001f1ed'),
('fr-FR', 'Français', 'France', 'French', '\U0001f1eb\U0001f1f7'),
('gl', 'Galego', '', 'Galician', '\U0001f310'),
('hi', 'हिन्दी', '', 'Hindi', '\U0001f310'),
('hi-IN', 'हिन्दी', 'भारत', 'Hindi', '\U0001f1ee\U0001f1f3'),
('hr', 'Hrvatski', '', 'Croatian', '\U0001f310'),
@@ -74,6 +71,8 @@ sxng_locales = (
('ja-JP', '日本語', '日本', 'Japanese', '\U0001f1ef\U0001f1f5'),
('ko', '한국어', '', 'Korean', '\U0001f310'),
('ko-KR', '한국어', '대한민국', 'Korean', '\U0001f1f0\U0001f1f7'),
('mi', 'Māori', '', 'Māori', '\U0001f310'),
('mi-NZ', 'Māori', 'Aotearoa', 'Māori', '\U0001f1f3\U0001f1ff'),
('nb', 'Norsk Bokmål', '', 'Norwegian Bokmål', '\U0001f310'),
('nb-NO', 'Norsk Bokmål', 'Norge', 'Norwegian Bokmål', '\U0001f1f3\U0001f1f4'),
('nl', 'Nederlands', '', 'Dutch', '\U0001f310'),
@@ -90,8 +89,6 @@ sxng_locales = (
('ro-RO', 'Română', 'România', 'Romanian', '\U0001f1f7\U0001f1f4'),
('ru', 'Русский', '', 'Russian', '\U0001f310'),
('ru-RU', 'Русский', 'Россия', 'Russian', '\U0001f1f7\U0001f1fa'),
('sk', 'Slovenčina', '', 'Slovak', '\U0001f310'),
('sq', 'Shqip', '', 'Albanian', '\U0001f310'),
('sv', 'Svenska', '', 'Swedish', '\U0001f310'),
('sv-FI', 'Svenska', 'Finland', 'Swedish', '\U0001f1eb\U0001f1ee'),
('sv-SE', 'Svenska', 'Sverige', 'Swedish', '\U0001f1f8\U0001f1ea'),
@@ -99,7 +96,6 @@ sxng_locales = (
('th-TH', 'ไทย', 'ไทย', 'Thai', '\U0001f1f9\U0001f1ed'),
('tr', 'Türkçe', '', 'Turkish', '\U0001f310'),
('tr-TR', 'Türkçe', 'Türkiye', 'Turkish', '\U0001f1f9\U0001f1f7'),
('uk', 'Українська', '', 'Ukrainian', '\U0001f310'),
('vi', 'Tiếng Việt', '', 'Vietnamese', '\U0001f310'),
('vi-VN', 'Tiếng Việt', 'Việt Nam', 'Vietnamese', '\U0001f1fb\U0001f1f3'),
('zh', '中文', '', 'Chinese', '\U0001f310'),

View File

@@ -17,22 +17,23 @@
# APoniatowski <aponiatowski@users.noreply.translate.codeberg.org>, 2025.
# French <french@noreply.codeberg.org>, 2025.
# return42 <return42@noreply.codeberg.org>, 2025, 2026.
# Raithlin <raithlin@noreply.codeberg.org>, 2025.
# Raithlin <raithlin@noreply.codeberg.org>, 2025, 2026.
# grumpyoldtechie <grumpyoldtechie@noreply.codeberg.org>, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-05-25 10:44+0000\n"
"Last-Translator: grumpyoldtechie <grumpyoldtechie@noreply.codeberg.org>\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-19 05:08+0000\n"
"Last-Translator: Raithlin <raithlin@noreply.codeberg.org>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -76,7 +77,7 @@ msgid "videos"
msgstr "videos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -550,8 +551,8 @@ msgstr "geantwoord"
msgid "No item found"
msgstr "Geen item gevind"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Bron"
@@ -559,15 +560,15 @@ msgstr "Bron"
msgid "Error loading the next page"
msgstr "Fout met die laai van die volgende bladsy"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Ongeldige opstellings, redigeer asb jou voorkeure"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Ongeldige opstellings"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "soekfout"
@@ -649,7 +650,7 @@ msgstr "Bereken {func} van die opsies"
#: searx/engines/boardreader.py:107
#, python-brace-format
msgid "Posted by {author}"
msgstr ""
msgstr "Geplaas deur {author}"
#: searx/engines/openstreetmap.py:155
msgid "Show route in map .."
@@ -664,19 +665,19 @@ msgstr "{title} (UITGEDIEN)"
msgid "This entry has been superseded by"
msgstr "Hierdie inskrywing was vervang deur"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanaal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bitsnelheid"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "stemme"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klikke"
@@ -734,11 +735,11 @@ msgstr "Filter uit onion resultate wat op Ahmia se swartlys is."
#: searx/plugins/calculator.py:25
msgid "Calculator"
msgstr ""
msgstr "Sakrekenaar"
#: searx/plugins/calculator.py:26
msgid "Parses and solves mathematical expressions."
msgstr ""
msgstr "Ontleed en los wiskundige uitdrukkings op."
#: searx/plugins/hash_plugin.py:33
msgid "Hash plugin"
@@ -934,7 +935,7 @@ msgstr "sienings"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Outeur"
@@ -1625,7 +1626,7 @@ msgid "This site did not provide any description."
msgstr "Hierdie webwerf het geen beskrywing verskaf nie."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Lêergrootte"
@@ -1643,21 +1644,25 @@ msgstr "Tik"
msgid "Download"
msgstr "Laai af"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolusie"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formaat"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Beeldformate"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "oorspronklike formaat"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Enjin"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Sien Bron"
msgstr "Bekyk bron"
#: searx/templates/simple/result_templates/map.html:12
msgid "address"
@@ -2159,3 +2164,5 @@ msgstr "versteek video"
#~ msgid "Number of results"
#~ msgstr "Aantal resultate"
#~ msgid "Format"
#~ msgstr "Formaat"

View File

@@ -30,20 +30,19 @@
# mustafa-phd <mustafa-phd@noreply.codeberg.org>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-27 12:07+0000\n"
"Last-Translator: mustafa-phd <mustafa-phd@noreply.codeberg.org>\n"
"Language-Team: Arabic <https://translate.codeberg.org/projects/searxng/"
"searxng/ar/>\n"
"Language: ar\n"
"Language-Team: Arabic "
"<https://translate.codeberg.org/projects/searxng/searxng/ar/>\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"MIME-Version: 1.0\n"
"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 2026.5\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -87,7 +86,7 @@ msgid "videos"
msgstr "ڤيديوهات"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "إذاعة"
@@ -561,8 +560,8 @@ msgstr "تمت الإجابة"
msgid "No item found"
msgstr "لم يتم العثور على عنصر"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "مصدر"
@@ -570,15 +569,15 @@ msgstr "مصدر"
msgid "Error loading the next page"
msgstr "خطأ في تحميل الصفحة التالية"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "إعدادات غير صالحة، يرجى تعديل تفضيلاتك"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "إعدادات غير صالحة"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "خطأ في البحث"
@@ -675,19 +674,19 @@ msgstr "{title} (قديم)"
msgid "This entry has been superseded by"
msgstr "تم استبدال هذا الإدخال بـ"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "القناة"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "معدل البت"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "تصويتات"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "نقرات"
@@ -942,7 +941,7 @@ msgstr "المشاهدات"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "الكاتب"
@@ -993,8 +992,8 @@ msgid ""
"This is a preview of the settings used by the 'Search URL' you used to "
"get here."
msgstr ""
"هذه معاينة للإعدادات المستخدمة في 'عنوان URL للبحث' الذي استخدمته للوصول إلى "
"هنا."
"هذه معاينة للإعدادات المستخدمة في 'عنوان URL للبحث' الذي استخدمته للوصول "
"إلى هنا."
#: searx/templates/simple/preferences.html:158
msgid "Press save to copy these preferences to your browser."
@@ -1630,7 +1629,7 @@ msgid "This site did not provide any description."
msgstr "هذا الموقع لم يقدم أي وصف."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "حجم الملف"
@@ -1648,19 +1647,23 @@ msgstr "نوع"
msgid "Download"
msgstr "تنزيل"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "الدقة"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "صيغة"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "محرك"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "عرض المصدر"
@@ -2396,3 +2399,7 @@ msgstr "إخفاء الفيديو"
#~ msgid "Number of results"
#~ msgstr "حصيلة نتائج البحث"
#~ msgid "Format"
#~ msgstr "صيغة"

View File

@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: bg\n"
@@ -76,7 +76,7 @@ msgid "videos"
msgstr "видео"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "радио"
@@ -550,8 +550,8 @@ msgstr "Отговорено"
msgid "No item found"
msgstr "Не е намерен артикул"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Източник"
@@ -559,15 +559,15 @@ msgstr "Източник"
msgid "Error loading the next page"
msgstr "Грешка при зареждането на следващата страница"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Неправилни настройки, моля редактирайте предпочитанията си"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Невалидни настройки"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "Грешка при търсенето"
@@ -664,19 +664,19 @@ msgstr "{title} (ОСТАРЯЛО)"
msgid "This entry has been superseded by"
msgstr "Този запис е заменен от"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Канал"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "Скорост"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "Гласове"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "клика"
@@ -929,7 +929,7 @@ msgstr "Изгледи"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Автор"
@@ -1627,7 +1627,7 @@ msgid "This site did not provide any description."
msgstr "Този сайт не предостави никакво описание."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Размер на файла"
@@ -1645,19 +1645,23 @@ msgstr "Тип"
msgid "Download"
msgstr "Изтегляне"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Резолюция"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Формат"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Търсачка"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Покажи източник"
@@ -2397,3 +2401,6 @@ msgstr "скрий видеото"
#~ msgid "Number of results"
#~ msgstr "Брой резултати"
#~ msgid "Format"
#~ msgstr "Формат"

View File

@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: bn\n"
@@ -82,7 +82,7 @@ msgid "videos"
msgstr "ভিডিও"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "বেতার"
@@ -556,8 +556,8 @@ msgstr "উত্তরকৃত"
msgid "No item found"
msgstr "কোন আইটেম পাওয়া যায়নি"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "উৎস"
@@ -565,15 +565,15 @@ msgstr "উৎস"
msgid "Error loading the next page"
msgstr "পরবর্তী পৃষ্ঠাটি লোড করায় ত্রুটি দেখা যাচ্ছে"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "অকেজো সেটিংস, অনুগ্রহ করে আপনার পছন্দগুলি সম্পাদনা করুন"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "অকেজো সেটিংস"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "সার্চ ত্রুটি"
@@ -670,19 +670,19 @@ msgstr "{title} (অচল)"
msgid "This entry has been superseded by"
msgstr "এই এনট্রিটি দ্বারা বাতিল করা হয়েছে৷"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "চ্যানেল"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "বিটরেট"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "ভোট"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "ক্লিক সংখ্যা"
@@ -936,7 +936,7 @@ msgstr "ভিউ"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "লেখক"
@@ -1619,7 +1619,7 @@ msgid "This site did not provide any description."
msgstr "এই সাইট কোন বিবরণ প্রদান করেনি।"
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "ফাইলের আকার"
@@ -1637,19 +1637,23 @@ msgstr "ধরন"
msgid "Download"
msgstr "ডাউনলোড"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "আকার"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "সজ্জা"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "ইঞ্জিন"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "উৎস দেখুন"
@@ -2155,3 +2159,6 @@ msgstr "ভিডিও লুকিয়ে ফেলুন"
#~ msgid "Number of results"
#~ msgstr "ফলাফলের সংখ্যা"
#~ msgid "Format"
#~ msgstr "সজ্জা"

View File

@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: bo\n"
@@ -66,7 +66,7 @@ msgid "videos"
msgstr "བརྙན་ཟློས།"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr ""
@@ -540,8 +540,8 @@ msgstr ""
msgid "No item found"
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr ""
@@ -549,15 +549,15 @@ msgstr ""
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།ཁྱེད་ཀྱིས་གདམ་ཀ་ལ་བཅོས་སྒྲིག་གཏོང་རོགས།"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "འཚོལ་བཤེར་ལ་ནོར་འཁྲུལ་བྱུང་།"
@@ -654,19 +654,19 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr "འཚོལ་བྱང་འདི་གཞན་གྱིས་ཚབ་བྱེད་འདུག"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr ""
@@ -903,7 +903,7 @@ msgstr ""
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr ""
@@ -1576,7 +1576,7 @@ msgid "This site did not provide any description."
msgstr ""
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "ཡིག་ཆའི་ཆེ་ཆུང་།"
@@ -1594,19 +1594,23 @@ msgstr ""
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr ""
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr ""
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "ཡོངས་ཁུངས་ལ་ལྟ།"
@@ -2288,3 +2292,6 @@ msgstr "རྙན་ཟློས་སྦས།"
#~ msgid "Number of results"
#~ msgstr "འཚོལ་འབྲས་ཀྱི་ཁ་གྲངས།"
#~ msgid "Format"
#~ msgstr ""

View File

@@ -29,18 +29,19 @@
# MaCl0wSt <macl0wst@noreply.codeberg.org>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language-Team: Catalan <https://translate.codeberg.org/projects/searxng/"
"searxng/ca/>\n"
"Language: ca\n"
"Language-Team: Catalan "
"<https://translate.codeberg.org/projects/searxng/searxng/ca/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -84,7 +85,7 @@ msgid "videos"
msgstr "vídeos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -558,8 +559,8 @@ msgstr "contestat"
msgid "No item found"
msgstr "No s'ha trobat cap element"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Origen"
@@ -567,15 +568,15 @@ msgstr "Origen"
msgid "Error loading the next page"
msgstr "S'ha produït un error en carregar la següent pàgina"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "La configuració no és vàlida, editeu-la"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "La configuració no és vàlida"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "error de cerca"
@@ -672,19 +673,19 @@ msgstr "{title} (OBSOLET)"
msgid "This entry has been superseded by"
msgstr "Aquesta entrada ha estat substituïda per"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Canal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "tasa de bits"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "vots"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "clics"
@@ -935,7 +936,7 @@ msgstr "Vistes"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autor"
@@ -1627,7 +1628,7 @@ msgid "This site did not provide any description."
msgstr "Aquest lloc no proporciona cap descripció."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Mida del fitxer"
@@ -1645,19 +1646,23 @@ msgstr "Tipus"
msgid "Download"
msgstr "Baixa"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolució"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "format original"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Cercador"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Veure el codi font"
@@ -2417,3 +2422,5 @@ msgstr "oculta el vídeo"
#~ msgid "Number of results"
#~ msgstr "Nombre de resultats"
#~ msgid "Format"
#~ msgstr "Format"

View File

@@ -25,19 +25,20 @@
# radekjuthner <radekjuthner@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-03-26 03:57+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
"Last-Translator: Fjuro <fjuro@noreply.codeberg.org>\n"
"Language-Team: Czech <https://translate.codeberg.org/projects/searxng/"
"searxng/cs/>\n"
"Language: cs\n"
"Language-Team: Czech "
"<https://translate.codeberg.org/projects/searxng/searxng/cs/>\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && "
"n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n "
"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
"X-Generator: Weblate 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -81,7 +82,7 @@ msgid "videos"
msgstr "videa"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "rádio"
@@ -555,8 +556,8 @@ msgstr "zodpovězené"
msgid "No item found"
msgstr "Nic nenalezeno"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "zdroj"
@@ -564,15 +565,15 @@ msgstr "zdroj"
msgid "Error loading the next page"
msgstr "Chyba při načítání další stránky"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Neplatné nastavení, upravte své předvolby"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Neplatné nastavení"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "chyba vyhledávání"
@@ -669,19 +670,19 @@ msgstr "{title} (ZASTARALÉ)"
msgid "This entry has been superseded by"
msgstr "Tato položka byla nahrazena položkou"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanál"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "datový tok"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "hlasy"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "kliknutí"
@@ -936,7 +937,7 @@ msgstr "Zhlédnutí"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autor"
@@ -1628,7 +1629,7 @@ msgid "This site did not provide any description."
msgstr "Tato stránka nemá žádný popis."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Velikost"
@@ -1646,19 +1647,23 @@ msgstr "Typ"
msgid "Download"
msgstr "Stáhnout"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Rozlišení"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formát"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Formáty obrázků"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "původní formát"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Vyhledávač"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Zobrazit zdroj"
@@ -2403,3 +2408,5 @@ msgstr "skrýt video"
#~ msgid "Number of results"
#~ msgstr "Počet výsledků"
#~ msgid "Format"
#~ msgstr "Formát"

View File

@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: cy\n"
@@ -74,7 +74,7 @@ msgid "videos"
msgstr "fideos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -548,8 +548,8 @@ msgstr "wedi'i ateb"
msgid "No item found"
msgstr "Ni chanfuwyd eitem"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Ffynhonnell"
@@ -557,15 +557,15 @@ msgstr "Ffynhonnell"
msgid "Error loading the next page"
msgstr "Gwall wrth lwytho'r dudalen nesaf"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Gosodiadau annilys, golygwch eich dewisiadau"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Gosodiadau annilys"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "gwall chwilio"
@@ -662,19 +662,19 @@ msgstr "{title} (OBSOLETE)"
msgid "This entry has been superseded by"
msgstr "Mae'r cofnod hwn wedi ei ddisodli gan"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Sianel"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "cyfradd didau"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "pleidleisiau"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "cliciau"
@@ -926,7 +926,7 @@ msgstr ""
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Awdur"
@@ -1608,7 +1608,7 @@ msgid "This site did not provide any description."
msgstr "Ni wnaeth y wefan ddarparu disgrifiad."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Maint ffeil"
@@ -1626,19 +1626,23 @@ msgstr "Math"
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Cydraniad"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Fformat"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Peiriant"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Gweld y ffynhonnell"
@@ -2356,3 +2360,6 @@ msgstr "cuddio'r fideo"
#~ msgid "Number of results"
#~ msgstr "Nifer o ganlyniadau"
#~ msgid "Format"
#~ msgstr "Fformat"

View File

@@ -17,18 +17,19 @@
# return42 <return42@noreply.codeberg.org>, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
"Last-Translator: AndersNordh <andersnordh@noreply.codeberg.org>\n"
"Language-Team: Danish <https://translate.codeberg.org/projects/searxng/"
"searxng/da/>\n"
"Language: da\n"
"Language-Team: Danish "
"<https://translate.codeberg.org/projects/searxng/searxng/da/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -72,7 +73,7 @@ msgid "videos"
msgstr "videoer"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "Radio"
@@ -546,8 +547,8 @@ msgstr "svaret"
msgid "No item found"
msgstr "Intet fundet"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Kilde"
@@ -555,15 +556,15 @@ msgstr "Kilde"
msgid "Error loading the next page"
msgstr "Fejl ved indlæsning af den næste side"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Ugyldige indstillinger, redigér venligst dine valg"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Ugyldig indstilling"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "søgefejl"
@@ -660,19 +661,19 @@ msgstr "{title} (FORÆLDET)"
msgid "This entry has been superseded by"
msgstr "Denne værdi er blevet overskrevet af"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "Bitrate"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "Stemmer"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "Klik"
@@ -930,7 +931,7 @@ msgstr "Visninger"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Forfatter"
@@ -1624,7 +1625,7 @@ msgid "This site did not provide any description."
msgstr "Denne side gav ikke nogen beskrivelse."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Filstørrelse"
@@ -1642,19 +1643,23 @@ msgstr "Type"
msgid "Download"
msgstr "Download"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Opløsning"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Billedformater"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "originalt format"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Maskine"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Vis kilde"
@@ -2412,3 +2417,5 @@ msgstr "skjul video"
#~ msgid "Number of results"
#~ msgstr "Antal resultater"
#~ msgid "Format"
#~ msgstr "Format"

View File

@@ -32,18 +32,19 @@
# Serpensin <serpensin@noreply.codeberg.org>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-03-26 03:57+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language-Team: German <https://translate.codeberg.org/projects/searxng/"
"searxng/de/>\n"
"Language: de\n"
"Language-Team: German "
"<https://translate.codeberg.org/projects/searxng/searxng/de/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -87,7 +88,7 @@ msgid "videos"
msgstr "Videos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "Radio"
@@ -561,8 +562,8 @@ msgstr "beantwortet"
msgid "No item found"
msgstr "Keine Einträge gefunden"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Quelle"
@@ -570,15 +571,15 @@ msgstr "Quelle"
msgid "Error loading the next page"
msgstr "Fehler beim Laden der nächsten Seite"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Ungültige Einstellungen, bitte Einstellungen ändern"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Ungültige Einstellungen"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "Suchfehler"
@@ -675,19 +676,19 @@ msgstr "{title} (OBSOLET)"
msgid "This entry has been superseded by"
msgstr "Dieser Eintrag wurde überschrieben von"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "Bitrate"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "Stimmen"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "Clicks"
@@ -947,7 +948,7 @@ msgstr "Aufrufe"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autor"
@@ -1635,7 +1636,7 @@ msgstr "Medien anzeigen"
#: searx/templates/simple/result_templates/default.html:6
#: searx/templates/simple/result_templates/file.html:54
msgid "hide media"
msgstr "Medien verstecken"
msgstr "Medien ausblenden"
#: searx/templates/simple/result_templates/default.html:14
#: searx/templates/simple/result_templates/videos.html:14
@@ -1643,7 +1644,7 @@ msgid "This site did not provide any description."
msgstr "Diese Seite besitzt keine Beschreibung."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Dateigröße"
@@ -1661,19 +1662,23 @@ msgstr "Medium"
msgid "Download"
msgstr "Herunterladen"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Auflösung"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Bildformate"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "Originalformat"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Suchmaschine"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Seite besuchen"
@@ -2459,3 +2464,5 @@ msgstr "Video verstecken"
#~ msgid "Number of results"
#~ msgstr "Trefferanzahl"
#~ msgid "Format"
#~ msgstr "Format"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2025-08-13 08:09+0000\n"
"Last-Translator: ijxp <ijxp@noreply.codeberg.org>\n"
"Language: dv\n"
@@ -63,7 +63,7 @@ msgid "videos"
msgstr "ވީޑިޔޯތައް"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "ރޭޑިއޯ އިންނެވެ"
@@ -537,8 +537,8 @@ msgstr ""
msgid "No item found"
msgstr ""
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr ""
@@ -546,15 +546,15 @@ msgstr ""
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr ""
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr ""
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr ""
@@ -651,19 +651,19 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr ""
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr ""
@@ -900,7 +900,7 @@ msgstr ""
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr ""
@@ -1571,7 +1571,7 @@ msgid "This site did not provide any description."
msgstr ""
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr ""
@@ -1589,19 +1589,23 @@ msgstr ""
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr ""
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr ""
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr ""
@@ -2019,3 +2023,6 @@ msgstr ""
#~ msgid "Number of results"
#~ msgstr ""
#~ msgid "Format"
#~ msgstr ""

View File

@@ -23,18 +23,19 @@
# gkalathas <gkalathas@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language-Team: Greek <https://translate.codeberg.org/projects/searxng/"
"searxng/el/>\n"
"Language: el_GR\n"
"Language-Team: Greek "
"<https://translate.codeberg.org/projects/searxng/searxng/el/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -78,7 +79,7 @@ msgid "videos"
msgstr "Βίντεο"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "ράδιο"
@@ -552,8 +553,8 @@ msgstr "απάντησε"
msgid "No item found"
msgstr "Δεν βρέθηκαν αντικείμενα"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Πηγή"
@@ -561,15 +562,15 @@ msgstr "Πηγή"
msgid "Error loading the next page"
msgstr "Σφάλμα φόρτωσης της επόμενης σελίδας"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Μη έγκυρες ρυθμίσεις, παρακαλούμε ελέγξτε τις προτιμήσεις σας"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Μη έγκυρες ρυθμίσεις"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "σφάλμα αναζήτησης"
@@ -651,7 +652,7 @@ msgstr "Υπολογίστε τη {func} των ορισμάτων"
#: searx/engines/boardreader.py:107
#, python-brace-format
msgid "Posted by {author}"
msgstr ""
msgstr "Δημοσιεύτηκε απο {author}"
#: searx/engines/openstreetmap.py:155
msgid "Show route in map .."
@@ -666,19 +667,19 @@ msgstr "{title} (ΠΑΡΩΧΗΜΕΝΟΣ)"
msgid "This entry has been superseded by"
msgstr "Αυτή η καταχώριση έχει αντικατασταθεί από"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Κανάλι"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "ρυθμός μετάδοσης"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "ψήφους"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "κλικ"
@@ -738,11 +739,11 @@ msgstr ""
#: searx/plugins/calculator.py:25
msgid "Calculator"
msgstr ""
msgstr "Αριθμομηχανή"
#: searx/plugins/calculator.py:26
msgid "Parses and solves mathematical expressions."
msgstr ""
msgstr "Κάνει συντακτική ανάλυση και λύνει μαθηματικές εκφράσεις"
#: searx/plugins/hash_plugin.py:33
msgid "Hash plugin"
@@ -938,7 +939,7 @@ msgstr "Προβολές"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Συγγραφέας"
@@ -1638,7 +1639,7 @@ msgid "This site did not provide any description."
msgstr "Αυτός ο ιστότοπος δεν παρείχε καμία περιγραφή."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Μέγεθος αρχείου"
@@ -1656,19 +1657,23 @@ msgstr "Τύπος"
msgid "Download"
msgstr "Λήψη"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Ανάλυση"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Μορφή"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Μηχανή"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Προβολή πηγής"
@@ -2432,3 +2437,5 @@ msgstr "απόκρυψη βίντεο"
#~ msgid "Number of results"
#~ msgstr "Αριθμός αποτελεσμάτων"
#~ msgid "Format"
#~ msgstr "Μορφή"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
@@ -59,7 +59,7 @@ msgid "videos"
msgstr ""
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr ""
@@ -533,8 +533,8 @@ msgstr ""
msgid "No item found"
msgstr ""
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr ""
@@ -542,15 +542,15 @@ msgstr ""
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr ""
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr ""
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr ""
@@ -647,19 +647,19 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr ""
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr ""
@@ -896,7 +896,7 @@ msgstr ""
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr ""
@@ -1567,7 +1567,7 @@ msgid "This site did not provide any description."
msgstr ""
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr ""
@@ -1585,19 +1585,23 @@ msgstr ""
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr ""
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr ""
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr ""
@@ -2280,3 +2284,6 @@ msgstr ""
#~ msgid "Number of results"
#~ msgstr ""
#~ msgid "Format"
#~ msgstr ""

View File

@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: eo\n"
@@ -76,7 +76,7 @@ msgid "videos"
msgstr "videoj"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -550,8 +550,8 @@ msgstr ""
msgid "No item found"
msgstr "Nenio trovita"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Fonto"
@@ -559,15 +559,15 @@ msgstr "Fonto"
msgid "Error loading the next page"
msgstr "Eraro dum la ŝarĝado de la sekvan paĝon"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Nevalidaj agordoj, bonvolu redaktu viajn agordojn"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Nevalidaj agordoj"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "serĉa eraro"
@@ -664,19 +664,19 @@ msgstr "{title} (MALAKTUALA)"
msgid "This entry has been superseded by"
msgstr "Tiu ĉi enigo estis anstataŭigita per"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanalo"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bito-rapido"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "voĉoj"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klakoj"
@@ -925,7 +925,7 @@ msgstr ""
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Verkisto"
@@ -1610,7 +1610,7 @@ msgid "This site did not provide any description."
msgstr "Ĉi tiu retejo ne disponigis ajnan priskribon."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Dosiergrandeco"
@@ -1628,19 +1628,23 @@ msgstr "Tipo"
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Distingivo"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formato"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Serĉilo"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Vidi fonton"
@@ -2368,3 +2372,6 @@ msgstr "kaŝi videojn"
#~ msgid "Number of results"
#~ msgstr "Nombro da rezultoj"
#~ msgid "Format"
#~ msgstr "Formato"

View File

@@ -50,18 +50,19 @@
# gallegonovato <gallegonovato@noreply.codeberg.org>, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-03-27 07:33+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-14 13:07+0000\n"
"Last-Translator: gallegonovato <gallegonovato@noreply.codeberg.org>\n"
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
"searxng/es/>\n"
"Language: es\n"
"Language-Team: Spanish "
"<https://translate.codeberg.org/projects/searxng/searxng/es/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -105,7 +106,7 @@ msgid "videos"
msgstr "vídeos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -579,8 +580,8 @@ msgstr "contestado"
msgid "No item found"
msgstr "Ningún artículo encontrado"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Fuente"
@@ -588,15 +589,15 @@ msgstr "Fuente"
msgid "Error loading the next page"
msgstr "Error al cargar la siguiente página"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Ajustes inválidos, por favor, cambia tus preferencias"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Ajustes inválidos"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "error en la búsqueda"
@@ -693,19 +694,19 @@ msgstr "{title} (OBSOLETO)"
msgid "This entry has been superseded by"
msgstr "Esta entrada ha sido sustituida por"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Canal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bitrate"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "votos"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "clics"
@@ -962,7 +963,7 @@ msgstr "Visualizaciones"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autor"
@@ -1657,7 +1658,7 @@ msgid "This site did not provide any description."
msgstr "Este sitio no provee ninguna descripción."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Tamaño de archivo"
@@ -1675,19 +1676,23 @@ msgstr "Tipo"
msgid "Download"
msgstr "Descargar"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolución"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formato"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Formatos de imagen"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "formato original"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Motor"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Ver fuente"
@@ -2456,3 +2461,5 @@ msgstr "ocultar video"
#~ msgid "Number of results"
#~ msgstr "Número de resultados"
#~ msgid "Format"
#~ msgstr "Formato"

View File

@@ -19,18 +19,19 @@
# return42 <return42@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-03-27 07:33+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-14 13:07+0000\n"
"Last-Translator: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>\n"
"Language-Team: Estonian <https://translate.codeberg.org/projects/searxng/"
"searxng/et/>\n"
"Language: et\n"
"Language-Team: Estonian "
"<https://translate.codeberg.org/projects/searxng/searxng/et/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -74,7 +75,7 @@ msgid "videos"
msgstr "videod"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "raadio"
@@ -548,8 +549,8 @@ msgstr "vastatud"
msgid "No item found"
msgstr "Üksust ei leitud"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Allikas"
@@ -557,15 +558,15 @@ msgstr "Allikas"
msgid "Error loading the next page"
msgstr "Viga järgmise lehekülje laadimisel"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Sobimatud seaded, palun muuda oma eelistusi"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Sobimatud seaded"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "otsingu viga"
@@ -662,19 +663,19 @@ msgstr "{title} (VANANENUD)"
msgid "This entry has been superseded by"
msgstr "See üksus on asendatud"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bitikiirus"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "hääled"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klikid"
@@ -931,7 +932,7 @@ msgstr "Vaateid"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autor"
@@ -1622,7 +1623,7 @@ msgid "This site did not provide any description."
msgstr "See sait ei andnud mingit kirjeldust."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Failisuurus"
@@ -1640,19 +1641,23 @@ msgstr "Tüüp"
msgid "Download"
msgstr "Laadi alla"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolutsioon"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Vorming"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Pildivormingud"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "algne vorming"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Otsingumootor"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Vaata lähtekoodi"
@@ -2390,3 +2395,5 @@ msgstr "peida video"
#~ msgid "Number of results"
#~ msgstr "Tulemuste arv"
#~ msgid "Format"
#~ msgstr "Vorming"

View File

@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-01 07:50+0000\n"
"Last-Translator: alexgabi <alexgabi@noreply.codeberg.org>\n"
"Language: eu\n"
@@ -73,7 +73,7 @@ msgid "videos"
msgstr "bideoak"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "irratia"
@@ -547,8 +547,8 @@ msgstr "erantzunda"
msgid "No item found"
msgstr "Ez da elementurik aurkitu"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Iturria"
@@ -556,15 +556,15 @@ msgstr "Iturria"
msgid "Error loading the next page"
msgstr "Errorea hurrengo orrialdea kargatzean"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Ezarpen baliogabeak, editatu zure hobespenak"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Ezarpen baliogabeak"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "bilaketa akatsa"
@@ -661,19 +661,19 @@ msgstr "{title} (ZAHARKITUA)"
msgid "This entry has been superseded by"
msgstr "Sarrera hau hurrengoarekin ordezkatu da"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanala"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bit emaria"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "botoak"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klikak"
@@ -930,7 +930,7 @@ msgstr "Ikuspegiak"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Egilea"
@@ -1621,7 +1621,7 @@ msgid "This site did not provide any description."
msgstr "Gune honek ez du deskribapenik eman."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Fitxategiaren tamaina"
@@ -1639,19 +1639,23 @@ msgstr "Mota"
msgid "Download"
msgstr "Deskargatu"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Ebazpena"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formatua"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Bilatzailea"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Ikusi iturria"
@@ -2388,3 +2392,6 @@ msgstr "ezkutatu bideoa"
#~ msgid "Number of results"
#~ msgstr "Emaitza kopurua"
#~ msgid "Format"
#~ msgstr "Formatua"

View File

@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: fa_IR\n"
@@ -82,7 +82,7 @@ msgid "videos"
msgstr "ویدیوها"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "رادیو"
@@ -556,8 +556,8 @@ msgstr "جواب داده شده"
msgid "No item found"
msgstr "چیزی پیدا نشد"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "منبع"
@@ -565,15 +565,15 @@ msgstr "منبع"
msgid "Error loading the next page"
msgstr "خطا در بارگزاری صفحه جدید"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "تنظیمات نادرست است، لطفا تنظیمات جستجو را تغییر دهید"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "تنظیمات نادرست"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "خطای جست‌وجو"
@@ -670,19 +670,19 @@ msgstr "{title} (منسوخ شده)"
msgid "This entry has been superseded by"
msgstr "این ورودی معلق شده است، توسط"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "کانال"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "بیت ریت"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "رای ها"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "کلیک ها"
@@ -933,7 +933,7 @@ msgstr "بازدید‌ها"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "نویسنده"
@@ -1620,7 +1620,7 @@ msgid "This site did not provide any description."
msgstr "این سایت هیچ توصیفی ندارد."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "اندازهٔ پرونده"
@@ -1638,19 +1638,23 @@ msgstr "نوع"
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "رزولیشن"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "قالب"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "موتور"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "نمایش منبع"
@@ -2400,3 +2404,6 @@ msgstr "پنهان‌سازی ویدئو"
#~ msgid "Number of results"
#~ msgstr "تعداد نتایج"
#~ msgid "Format"
#~ msgstr "قالب"

View File

@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: fi\n"
@@ -76,7 +76,7 @@ msgid "videos"
msgstr "videot"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -550,8 +550,8 @@ msgstr "vastattu"
msgid "No item found"
msgstr "Tietuetta ei löytynyt"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Lähde"
@@ -559,15 +559,15 @@ msgstr "Lähde"
msgid "Error loading the next page"
msgstr "Virhe ladattaessa seuraavaa sivua"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Virheelliset asetukset, muokkaa siis asetuksia"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Virheelliset asetukset"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "hakuvirhe"
@@ -664,19 +664,19 @@ msgstr "{title} (VANHENTUNUT)"
msgid "This entry has been superseded by"
msgstr "Tämän kohdan on korvannut"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanava"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bittinopeus"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "ääntä"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klikkaukset"
@@ -933,7 +933,7 @@ msgstr "Näkymät"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Tekijä"
@@ -1625,7 +1625,7 @@ msgid "This site did not provide any description."
msgstr "Tämä sivu ei antanut mitään kuvausta."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Tiedostokoko"
@@ -1643,19 +1643,23 @@ msgstr "Tyyppi"
msgid "Download"
msgstr "Lataa"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resoluutio"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Muoto"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Hakukone"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Näytä lähde"
@@ -2407,3 +2411,6 @@ msgstr "piilota video"
#~ msgid "Number of results"
#~ msgstr "Tulosten määrä"
#~ msgid "Format"
#~ msgstr "Muoto"

View File

@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: fil\n"
@@ -76,7 +76,7 @@ msgid "videos"
msgstr "mga bidyo"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radyo"
@@ -550,8 +550,8 @@ msgstr "sinagot"
msgid "No item found"
msgstr "Walang nakita na aytem"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Pinagmulan"
@@ -559,15 +559,15 @@ msgstr "Pinagmulan"
msgid "Error loading the next page"
msgstr "Error sa paglo-load ng susunod na pahina"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Di-wastong mga setting, pakibago ang iyong mga kagustuhan"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Di-wastong mga setting"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "nagkaproblema sa paghahanap ng mga resulta"
@@ -664,19 +664,19 @@ msgstr "{title} (Luma)"
msgid "This entry has been superseded by"
msgstr "Ang tala na ito ay ipinagpaliban ng"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Tyanel"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bitrate"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "mga boto"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "mga click"
@@ -928,7 +928,7 @@ msgstr "mga pananaw"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Awtor"
@@ -1621,7 +1621,7 @@ msgid "This site did not provide any description."
msgstr "Ang site na ito ay hindi nagbigay ng deskripsyon."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Laki ng file"
@@ -1639,19 +1639,23 @@ msgstr "Uri"
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolusyon"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Anyo"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Engine"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Tignan ang source"
@@ -2417,3 +2421,6 @@ msgstr "itago ang video"
#~ msgid "Number of results"
#~ msgstr "Bilang ng resulta"
#~ msgid "Format"
#~ msgstr "Anyo"

View File

@@ -47,18 +47,19 @@
# Minami-o <minami-o@noreply.codeberg.org>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -102,7 +103,7 @@ msgid "videos"
msgstr "vidéos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -576,8 +577,8 @@ msgstr "répondu"
msgid "No item found"
msgstr "Pas d'élément trouvé"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Source"
@@ -585,15 +586,15 @@ msgstr "Source"
msgid "Error loading the next page"
msgstr "Erreur lors du chargement de la page suivante"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Paramètres non valides, veuillez modifier vos préférences"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Paramètres non valides"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "erreur de recherche"
@@ -690,19 +691,19 @@ msgstr "{title} (OBSOLÈTE)"
msgid "This entry has been superseded by"
msgstr "Cet item a été remplacé par"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Chaîne"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "débit"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "voix"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "clics"
@@ -962,7 +963,7 @@ msgstr "vues"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Auteur"
@@ -1656,7 +1657,7 @@ msgid "This site did not provide any description."
msgstr "Ce site n'a pas fourni de description."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Taille du fichier"
@@ -1674,19 +1675,23 @@ msgstr "Type"
msgid "Download"
msgstr "Télécharger"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Résolution"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Formats d'images"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "Format original"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Moteur"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Voir la source"
@@ -2463,3 +2468,5 @@ msgstr "cacher la vidéo"
#~ msgid "Number of results"
#~ msgstr "Nombre de résultats"
#~ msgid "Format"
#~ msgstr "Format"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-05 12:37+0000\n"
"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@noreply.codeberg.org>"
"\n"
@@ -65,7 +65,7 @@ msgid "videos"
msgstr "físeáin"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "raidió"
@@ -539,8 +539,8 @@ msgstr "freagraí"
msgid "No item found"
msgstr "Níor aimsíodh aon rud"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Foinse"
@@ -548,15 +548,15 @@ msgstr "Foinse"
msgid "Error loading the next page"
msgstr "Earráid ag luchtú an chéad leathanach eile"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Socruithe neamhbhailí, cuir do chuid roghanna in"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Socruithe neamhbhaintí"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "earráid cuardaigh"
@@ -653,19 +653,19 @@ msgstr "{title} (ÚSÁIDEACH)"
msgid "This entry has been superseded by"
msgstr "Cuireadh an iontráil seo in ionad ag"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Cainéal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "ráta giotán"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "vótaí"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "cliceáil"
@@ -924,7 +924,7 @@ msgstr "Amharcanna"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Údar"
@@ -1621,7 +1621,7 @@ msgid "This site did not provide any description."
msgstr "Níor thug an suíomh seo aon tuairisc ar fáil."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Méid na Comhad"
@@ -1639,19 +1639,23 @@ msgstr "Cineál"
msgid "Download"
msgstr "Íoslódáil"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Réiteach"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formáid"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Inneall"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Féach foinse"
@@ -1963,3 +1967,6 @@ msgstr "físeán a cheilt"
#~ msgid "Number of results"
#~ msgstr "Líon na dtorthaí"
#~ msgid "Format"
#~ msgstr "Formáid"

View File

@@ -14,18 +14,19 @@
# return42 <return42@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-03-26 03:57+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
"Last-Translator: ghose <ghose@noreply.codeberg.org>\n"
"Language-Team: Galician <https://translate.codeberg.org/projects/searxng/"
"searxng/gl/>\n"
"Language: gl\n"
"Language-Team: Galician "
"<https://translate.codeberg.org/projects/searxng/searxng/gl/>\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 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -69,7 +70,7 @@ msgid "videos"
msgstr "vídeos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -543,8 +544,8 @@ msgstr "respondido"
msgid "No item found"
msgstr "Non se atoparon elementos"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Fonte"
@@ -552,15 +553,15 @@ msgstr "Fonte"
msgid "Error loading the next page"
msgstr "Erro ao cargar a páxina seguinte"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Axustes non válidos, por favor edita a configuración"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Axustes non válidos"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "fallo na busca"
@@ -657,19 +658,19 @@ msgstr "{title} (OBSOLETO)"
msgid "This entry has been superseded by"
msgstr "Esta entrada foi proporcionada por"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Canle"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "taxa de bits"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "votos"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "clicks"
@@ -926,7 +927,7 @@ msgstr "Visualizacións"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autoría"
@@ -1621,7 +1622,7 @@ msgid "This site did not provide any description."
msgstr "A web non proporcionou unha descrición."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Tamaño do ficheiro"
@@ -1639,19 +1640,23 @@ msgstr "Tipo"
msgid "Download"
msgstr "Descargar"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolución"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formato"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Formatos de imaxe"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "formato orixinal"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Motor"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Ver fonte"
@@ -2412,3 +2417,5 @@ msgstr "agochar vídeo"
#~ msgid "Number of results"
#~ msgstr "Número de resultados"
#~ msgid "Format"
#~ msgstr "Formato"

View File

@@ -28,7 +28,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: he\n"
@@ -82,7 +82,7 @@ msgid "videos"
msgstr "וידאו"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "רדיו"
@@ -556,8 +556,8 @@ msgstr "נענו"
msgid "No item found"
msgstr "לא נמצא פריט"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "מקור"
@@ -565,15 +565,15 @@ msgstr "מקור"
msgid "Error loading the next page"
msgstr "שגיאה בטעינת העמוד הבא"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "הגדרות לא תקינות, עליך לתקן את ההעדפות שלך"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "הגדרות לא תקינות"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "שגיאת חיפוש"
@@ -670,19 +670,19 @@ msgstr "{title} (OBSOLETE)"
msgid "This entry has been superseded by"
msgstr "רשומה זו הוחלפה על ידי"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "ערוץ"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "קצב נתונים"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "הצבעות"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "לחיצות"
@@ -932,7 +932,7 @@ msgstr "צפיות"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "מחבר"
@@ -1617,7 +1617,7 @@ msgid "This site did not provide any description."
msgstr "אתר זה לא סיפק תיאור."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "גודל קובץ"
@@ -1635,19 +1635,23 @@ msgstr "סוג"
msgid "Download"
msgstr "הורדה"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "רזולוציה"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "פורמט"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "מנוע"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "צפה במקור"
@@ -2367,3 +2371,6 @@ msgstr "הסתר וידאו"
#~ msgid "Number of results"
#~ msgstr "מספר תוצאות"
#~ msgid "Format"
#~ msgstr "פורמט"

View File

@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: hr\n"
@@ -78,7 +78,7 @@ msgid "videos"
msgstr "video zapisi"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -552,8 +552,8 @@ msgstr "odgovoren"
msgid "No item found"
msgstr "Nije pronađena nijedna stavka"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Izvor"
@@ -561,15 +561,15 @@ msgstr "Izvor"
msgid "Error loading the next page"
msgstr "Greška u učitavnju sljedeće stranice"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Nevažeće postavke, molimo uredite svoje postavke"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Nevažeće postavke"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "greška u pretraživanju"
@@ -666,19 +666,19 @@ msgstr "{title} (ZASTARJELO)"
msgid "This entry has been superseded by"
msgstr "Ovaj je unos zamijenio"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Kanal"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bitrata"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "glasovi"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klikovi"
@@ -935,7 +935,7 @@ msgstr "Pogledi"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autor"
@@ -1626,7 +1626,7 @@ msgid "This site did not provide any description."
msgstr "Ova stranica nije dala nikakav opis."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Veličina datoteke"
@@ -1644,19 +1644,23 @@ msgstr "Tip"
msgid "Download"
msgstr "Preuzmi"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Razlučivost"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Motor"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Prikaži izvor"
@@ -2400,3 +2404,6 @@ msgstr "sakrij video"
#~ msgid "Number of results"
#~ msgstr "Broj rezultata"
#~ msgid "Format"
#~ msgstr "Format"

View File

@@ -23,18 +23,19 @@
# return42 <return42@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-03-26 03:57+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
"Last-Translator: kratos <makesocialfoss32@keemail.me>\n"
"Language-Team: Hungarian <https://translate.codeberg.org/projects/searxng/"
"searxng/hu/>\n"
"Language: hu\n"
"Language-Team: Hungarian "
"<https://translate.codeberg.org/projects/searxng/searxng/hu/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -78,7 +79,7 @@ msgid "videos"
msgstr "videók"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "rádió"
@@ -552,8 +553,8 @@ msgstr "megválaszolt"
msgid "No item found"
msgstr "Nincs találat"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Forrás"
@@ -561,15 +562,15 @@ msgstr "Forrás"
msgid "Error loading the next page"
msgstr "Hiba a következő oldal betöltése során"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Érvénytelen beállítások, módosítsa őket"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Érvénytelen beállítások"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "keresési hiba"
@@ -666,19 +667,19 @@ msgstr "{title} (elavult)"
msgid "This entry has been superseded by"
msgstr "Ezt a bejegyzést leváltotta:"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Csatorna"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "bitráta:"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "szavazatok:"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "kattintások"
@@ -882,7 +883,7 @@ msgstr "keresőoldalra"
#: searx/templates/simple/base.html:51
msgid "Donate"
msgstr "Adományozás"
msgstr "Adakozás"
#: searx/templates/simple/base.html:56 searx/templates/simple/base.html:58
#: searx/templates/simple/preferences.html:152
@@ -937,7 +938,7 @@ msgstr "Nézetek"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Szerző"
@@ -1634,7 +1635,7 @@ msgid "This site did not provide any description."
msgstr "Ennek a weblapnak nincsen leírása."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Fájlméret"
@@ -1652,19 +1653,23 @@ msgstr "Típus"
msgid "Download"
msgstr "Letöltés"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Felbontás"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formátum"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Képformátumok"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "eredeti formátum"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Motor"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Forrás megtekintése"
@@ -2414,3 +2419,5 @@ msgstr "videó elrejtése"
#~ msgid "Number of results"
#~ msgstr "Találatok száma"
#~ msgid "Format"
#~ msgstr "Formátum"

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: ia\n"
@@ -65,7 +65,7 @@ msgid "videos"
msgstr "videos"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr ""
@@ -539,8 +539,8 @@ msgstr ""
msgid "No item found"
msgstr "Nulle item trovate"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr ""
@@ -548,15 +548,15 @@ msgstr ""
msgid "Error loading the next page"
msgstr ""
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Configurationes non valide, per favor, modifica tu preferentias"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Configurationes invalide"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "error in recerca"
@@ -653,19 +653,19 @@ msgstr ""
msgid "This entry has been superseded by"
msgstr "Iste entrata esseva substituite per"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr ""
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr ""
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr ""
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr ""
@@ -906,7 +906,7 @@ msgstr ""
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr ""
@@ -1586,7 +1586,7 @@ msgid "This site did not provide any description."
msgstr ""
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Dimension del file"
@@ -1604,19 +1604,23 @@ msgstr ""
msgid "Download"
msgstr ""
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr ""
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr ""
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Vider fonte"
@@ -2333,3 +2337,6 @@ msgstr "occultar video"
#~ msgid "Number of results"
#~ msgstr "Numero de resultatos"
#~ msgid "Format"
#~ msgstr ""

View File

@@ -20,26 +20,28 @@
# Linerly <linerly@noreply.codeberg.org>, 2025, 2026.
# return42 <return42@noreply.codeberg.org>, 2025.
# rmdzn <rmdzn@noreply.codeberg.org>, 2025.
# M Alif fadlan <maliffadlan@gmail.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"PO-Revision-Date: 2026-04-01 18:57+0000\n"
"Last-Translator: Linerly <linerly@noreply.codeberg.org>\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
"Last-Translator: M Alif fadlan <maliffadlan@gmail.com>\n"
"Language-Team: Indonesian <https://translate.codeberg.org/projects/searxng/"
"searxng/id/>\n"
"Language: id\n"
"Language-Team: Indonesian "
"<https://translate.codeberg.org/projects/searxng/searxng/id/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 2026.6.1\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
#: searx/searxng.msg
msgid "without further subgrouping"
msgstr "tanpa penyubkelompokkan khusus"
msgstr "tanpa pengelompokan lebih lanjut"
#. CONSTANT_NAMES['DEFAULT_CATEGORY']
#: searx/searxng.msg
@@ -77,7 +79,7 @@ msgid "videos"
msgstr "video"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -551,8 +553,8 @@ msgstr "dijawab"
msgid "No item found"
msgstr "Item tidak ditemukan"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Sumber"
@@ -560,15 +562,15 @@ msgstr "Sumber"
msgid "Error loading the next page"
msgstr "Gagal memuat laman berikutnya"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Pengaturan takvalid. Mohon ubah preferensi Anda"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Pengaturan takvalid"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "galat pencarian"
@@ -665,19 +667,19 @@ msgstr "{title} (USANG)"
msgid "This entry has been superseded by"
msgstr "Entri ini telah digantikan oleh"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Saluran"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "kecepatan bit"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "suara"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "klik"
@@ -933,7 +935,7 @@ msgstr "Tampilan"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Penulis"
@@ -1627,7 +1629,7 @@ msgid "This site did not provide any description."
msgstr "Situs ini tidak memberikan deskripsi apa pun."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Ukuran berkas"
@@ -1645,19 +1647,23 @@ msgstr "Jenis"
msgid "Download"
msgstr "Unduh"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Resolusi"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Format"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr "Format gambar"
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr "format asli"
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Mesin"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Tampilkan sumber"
@@ -2303,3 +2309,5 @@ msgstr "sembunyikan video"
#~ msgid "Number of results"
#~ msgstr "Jumlah hasil"
#~ msgid "Format"
#~ msgstr "Format"

View File

@@ -48,7 +48,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: it\n"
@@ -101,7 +101,7 @@ msgid "videos"
msgstr "video"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "radio"
@@ -575,8 +575,8 @@ msgstr "risposto"
msgid "No item found"
msgstr "Nessun oggetto trovato"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "Sorgente"
@@ -584,15 +584,15 @@ msgstr "Sorgente"
msgid "Error loading the next page"
msgstr "Errore di caricamento della pagina successiva"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "Impostazioni non valide, modifica le tue preferenze"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "Impostazioni non valide"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "errore di ricerca"
@@ -689,19 +689,19 @@ msgstr "{title} (OBSOLETO)"
msgid "This entry has been superseded by"
msgstr "Questa voce è stata sostituita da"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "Canale"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "velocità in bit"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "voti"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "clic"
@@ -956,7 +956,7 @@ msgstr "Visualizzazioni"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "Autore"
@@ -1652,7 +1652,7 @@ msgid "This site did not provide any description."
msgstr "Questo sito non fornisce nessuna descrizione."
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "Dimensioni file"
@@ -1670,19 +1670,23 @@ msgstr "Tipo"
msgid "Download"
msgstr "Scarica"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "Risoluzione"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "Formato"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "Motore"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "Guarda la fonte"
@@ -2450,3 +2454,6 @@ msgstr "nascondi video"
#~ msgid "Number of results"
#~ msgstr "Numero di risultati"
#~ msgid "Format"
#~ msgstr "Formato"

View File

@@ -36,7 +36,7 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-05-25 10:44+0000\n"
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"Language: ja\n"
@@ -89,7 +89,7 @@ msgid "videos"
msgstr "動画"
#. CATEGORY_NAMES['RADIO']
#: searx/engines/radio_browser.py:146 searx/searxng.msg
#: searx/engines/radio_browser.py:159 searx/searxng.msg
msgid "radio"
msgstr "ラジオ"
@@ -563,8 +563,8 @@ msgstr "回答"
msgid "No item found"
msgstr "アイテムが見つかりません"
#: searx/engines/qwant.py:291
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:328
#: searx/engines/qwant.py:258
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
msgid "Source"
msgstr "ソース"
@@ -572,15 +572,15 @@ msgstr "ソース"
msgid "Error loading the next page"
msgstr "次のページの読み込み中にエラーが発生しました"
#: searx/webapp.py:479 searx/webapp.py:877
#: searx/webapp.py:478 searx/webapp.py:876
msgid "Invalid settings, please edit your preferences"
msgstr "設定が無効です、設定を変更してください"
#: searx/webapp.py:495
#: searx/webapp.py:494
msgid "Invalid settings"
msgstr "無効な設定です"
#: searx/webapp.py:571 searx/webapp.py:661
#: searx/webapp.py:570 searx/webapp.py:660
msgid "search error"
msgstr "検索エラー"
@@ -677,19 +677,19 @@ msgstr "{title} (廃止)"
msgid "This entry has been superseded by"
msgstr "このエントリは、置き換えられました:"
#: searx/engines/qwant.py:293
#: searx/engines/qwant.py:260
msgid "Channel"
msgstr "チャンネル"
#: searx/engines/radio_browser.py:148
#: searx/engines/radio_browser.py:161
msgid "bitrate"
msgstr "ビットレート"
#: searx/engines/radio_browser.py:149
#: searx/engines/radio_browser.py:162
msgid "votes"
msgstr "票数"
#: searx/engines/radio_browser.py:150
#: searx/engines/radio_browser.py:163
msgid "clicks"
msgstr "クリック"
@@ -928,7 +928,7 @@ msgstr "閲覧数"
#: searx/templates/simple/macros.html:43
#: searx/templates/simple/result_templates/file.html:18
#: searx/templates/simple/result_templates/images.html:19
#: searx/templates/simple/result_templates/images.html:52
#: searx/templates/simple/result_templates/paper.html:14
msgid "Author"
msgstr "作者"
@@ -1599,7 +1599,7 @@ msgid "This site did not provide any description."
msgstr "このサイトは説明を提供しませんでした。"
#: searx/templates/simple/result_templates/file.html:30
#: searx/templates/simple/result_templates/images.html:22
#: searx/templates/simple/result_templates/images.html:61
#: searx/templates/simple/result_templates/torrent.html:18
msgid "Filesize"
msgstr "ファイルサイズ"
@@ -1617,19 +1617,23 @@ msgstr "分類"
msgid "Download"
msgstr "ダウンロード"
#: searx/templates/simple/result_templates/images.html:20
#: searx/templates/simple/result_templates/images.html:53
msgid "Resolution"
msgstr "解像度"
#: searx/templates/simple/result_templates/images.html:21
msgid "Format"
msgstr "フォーマット"
#: searx/templates/simple/result_templates/images.html:55
msgid "Image formats"
msgstr ""
#: searx/templates/simple/result_templates/images.html:24
#: searx/templates/simple/result_templates/images.html:56
msgid "original format"
msgstr ""
#: searx/templates/simple/result_templates/images.html:63
msgid "Engine"
msgstr "エンジン"
#: searx/templates/simple/result_templates/images.html:25
#: searx/templates/simple/result_templates/images.html:64
msgid "View source"
msgstr "ソースを閲覧する"
@@ -2318,3 +2322,6 @@ msgstr "動画を隠す"
#~ msgid "Number of results"
#~ msgstr "通知の数"
#~ msgid "Format"
#~ msgstr "フォーマット"

Some files were not shown because too many files have changed in this diff Show More