mirror of
https://github.com/searxng/searxng.git
synced 2026-07-29 11:21:23 +00:00
Compare commits
39 Commits
8456831a04
...
ci-data-up
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7595a2c32 | ||
|
|
c01178d031 | ||
|
|
c73861ab46 | ||
|
|
891bc69550 | ||
|
|
d661b6114d | ||
|
|
8372f5d855 | ||
|
|
8f8b5d2b8d | ||
|
|
b060c780d0 | ||
|
|
6d8b550280 | ||
|
|
0909dbc9ef | ||
|
|
b4e94417b7 | ||
|
|
4f64d95013 | ||
|
|
ef8f6470e0 | ||
|
|
6da6eee265 | ||
|
|
277d8469cd | ||
|
|
81c9c23862 | ||
|
|
6913fba208 | ||
|
|
2daa4d4815 | ||
|
|
de8f73f434 | ||
|
|
9f9c00819e | ||
|
|
b72a87676f | ||
|
|
f2432e33d6 | ||
|
|
7b2199ecdf | ||
|
|
4a9c19d7bf | ||
|
|
5cb4cb2bc5 | ||
|
|
5a448596ab | ||
|
|
9c49b7e0d7 | ||
|
|
58e02a01ae | ||
|
|
7fa9f16225 | ||
|
|
9e25585aec | ||
|
|
c19d86faa3 | ||
|
|
21fa7b0be1 | ||
|
|
74b4e7c8d1 | ||
|
|
39f4dd24a5 | ||
|
|
62a1ab7edd | ||
|
|
4abac08de5 | ||
|
|
6a4d5148d6 | ||
|
|
799086874d | ||
|
|
83139c26b3 |
134
.github/workflows/container.yml
vendored
134
.github/workflows/container.yml
vendored
@@ -25,25 +25,21 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
|
if: |
|
||||||
|
github.event_name == 'workflow_dispatch'
|
||||||
|
|| (github.repository_owner == 'searxng' && github.event.workflow_run.conclusion == 'success')
|
||||||
name: Build (${{ matrix.arch }})
|
name: Build (${{ matrix.arch }})
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.runner }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- arch: amd64
|
- runner: ubuntu-26.04
|
||||||
march: amd64
|
arch: amd64
|
||||||
os: ubuntu-24.04
|
- runner: ubuntu-26.04-arm
|
||||||
emulation: false
|
arch: arm64
|
||||||
- arch: arm64
|
- runner: ubuntu-26.04-arm
|
||||||
march: arm64
|
arch: armv7
|
||||||
os: ubuntu-24.04-arm
|
|
||||||
emulation: false
|
|
||||||
- arch: armv7
|
|
||||||
march: arm64
|
|
||||||
os: ubuntu-24.04-arm
|
|
||||||
emulation: true
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
packages: write
|
packages: write
|
||||||
@@ -53,33 +49,25 @@ jobs:
|
|||||||
git_url: ${{ steps.build.outputs.git_url }}
|
git_url: ${{ steps.build.outputs.git_url }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# yamllint disable rule:line-length
|
- name: Login to GHCR
|
||||||
- name: Setup podman
|
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
||||||
env:
|
with:
|
||||||
PODMAN_VERSION: "v5.7.1"
|
registry: "ghcr.io"
|
||||||
run: |
|
username: "${{ github.repository_owner }}"
|
||||||
sudo apt-get purge -y podman runc crun conmon
|
password: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
curl -fsSLO "https://github.com/mgoltzsche/podman-static/releases/download/${{ env.PODMAN_VERSION }}/podman-linux-${{ matrix.march }}.tar.gz"
|
|
||||||
curl -fsSLO "https://github.com/mgoltzsche/podman-static/releases/download/${{ env.PODMAN_VERSION }}/podman-linux-${{ matrix.march }}.tar.gz.asc"
|
|
||||||
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 0CCF102C4F95D89E583FF1D4F8B5AF50344BB503
|
|
||||||
gpg --batch --verify "podman-linux-${{ matrix.march }}.tar.gz.asc" "podman-linux-${{ matrix.march }}.tar.gz"
|
|
||||||
|
|
||||||
tar -xzf "podman-linux-${{ matrix.march }}.tar.gz"
|
|
||||||
sudo cp -rfv ./podman-linux-${{ matrix.march }}/etc/. /etc/
|
|
||||||
sudo cp -rfv ./podman-linux-${{ matrix.march }}/usr/. /usr/
|
|
||||||
|
|
||||||
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
|
|
||||||
# yamllint enable rule:line-length
|
|
||||||
|
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
|
- name: Setup QEMU
|
||||||
|
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
|
ref: "${{ github.event.workflow_run.head_sha || github.sha }}"
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
fetch-depth: "0"
|
fetch-depth: "0"
|
||||||
|
|
||||||
@@ -91,71 +79,52 @@ jobs:
|
|||||||
python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-
|
python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-
|
||||||
path: "./local/"
|
path: "./local/"
|
||||||
|
|
||||||
- name: Get date
|
|
||||||
id: date
|
|
||||||
run: echo "date=$(date +'%Y%m%d')" >>$GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Setup cache container
|
- name: Setup cache container
|
||||||
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
key: "container-${{ matrix.arch }}-${{ steps.date.outputs.date }}-${{ hashFiles('./requirements*.txt') }}"
|
key: "container-${{ matrix.arch }}-${{ hashFiles('./requirements*.txt') }}"
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
container-${{ matrix.arch }}-${{ steps.date.outputs.date }}-
|
|
||||||
container-${{ matrix.arch }}-
|
container-${{ matrix.arch }}-
|
||||||
path: "/var/tmp/buildah-cache-*/*"
|
path: "/var/tmp/buildah-cache-*/*"
|
||||||
|
|
||||||
- if: ${{ matrix.emulation }}
|
|
||||||
name: Setup QEMU
|
|
||||||
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
|
|
||||||
|
|
||||||
- name: Login to GHCR
|
|
||||||
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.0
|
|
||||||
with:
|
|
||||||
registry: "ghcr.io"
|
|
||||||
username: "${{ github.repository_owner }}"
|
|
||||||
password: "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
id: build
|
id: build
|
||||||
env:
|
env:
|
||||||
OVERRIDE_ARCH: "${{ matrix.arch }}"
|
OVERRIDE_ARCH: "${{ matrix.arch }}"
|
||||||
run: make podman.build
|
run: make container.build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
name: Test (${{ matrix.arch }})
|
name: Test (${{ matrix.arch }})
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.runner }}
|
||||||
needs: build
|
needs: build
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- arch: amd64
|
- runner: ubuntu-26.04
|
||||||
os: ubuntu-24.04
|
arch: amd64
|
||||||
emulation: false
|
- runner: ubuntu-26.04-arm
|
||||||
- arch: arm64
|
arch: arm64
|
||||||
os: ubuntu-24.04-arm
|
- runner: ubuntu-26.04-arm
|
||||||
emulation: false
|
arch: armv7
|
||||||
- arch: armv7
|
|
||||||
os: ubuntu-24.04-arm
|
|
||||||
emulation: true
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
||||||
with:
|
|
||||||
persist-credentials: "false"
|
|
||||||
|
|
||||||
- if: ${{ matrix.emulation }}
|
|
||||||
name: Setup QEMU
|
|
||||||
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
|
|
||||||
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.0
|
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
||||||
with:
|
with:
|
||||||
registry: "ghcr.io"
|
registry: "ghcr.io"
|
||||||
username: "${{ github.repository_owner }}"
|
username: "${{ github.repository_owner }}"
|
||||||
password: "${{ secrets.GITHUB_TOKEN }}"
|
password: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
|
- name: Setup QEMU
|
||||||
|
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
with:
|
||||||
|
ref: "${{ github.event.workflow_run.head_sha || github.sha }}"
|
||||||
|
persist-credentials: "false"
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
env:
|
env:
|
||||||
OVERRIDE_ARCH: "${{ matrix.arch }}"
|
OVERRIDE_ARCH: "${{ matrix.arch }}"
|
||||||
@@ -165,7 +134,7 @@ jobs:
|
|||||||
release:
|
release:
|
||||||
if: github.repository_owner == 'searxng' && github.ref_name == 'master'
|
if: github.repository_owner == 'searxng' && github.ref_name == 'master'
|
||||||
name: Release
|
name: Release
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-26.04-arm
|
||||||
needs:
|
needs:
|
||||||
- build
|
- build
|
||||||
- test
|
- test
|
||||||
@@ -174,24 +143,25 @@ jobs:
|
|||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Login to Docker Hub
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
registry: "docker.io"
|
||||||
|
username: "${{ secrets.DOCKER_USER }}"
|
||||||
|
password: "${{ secrets.DOCKER_TOKEN }}"
|
||||||
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.0
|
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
||||||
with:
|
with:
|
||||||
registry: "ghcr.io"
|
registry: "ghcr.io"
|
||||||
username: "${{ github.repository_owner }}"
|
username: "${{ github.repository_owner }}"
|
||||||
password: "${{ secrets.GITHUB_TOKEN }}"
|
password: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Checkout
|
||||||
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
registry: "docker.io"
|
ref: "${{ github.event.workflow_run.head_sha || github.sha }}"
|
||||||
username: "${{ secrets.DOCKER_USER }}"
|
persist-credentials: "false"
|
||||||
password: "${{ secrets.DOCKER_TOKEN }}"
|
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
env:
|
env:
|
||||||
|
|||||||
20
.github/workflows/data-update.yml
vendored
20
.github/workflows/data-update.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
|||||||
data:
|
data:
|
||||||
if: github.repository_owner == 'searxng'
|
if: github.repository_owner == 'searxng'
|
||||||
name: ${{ matrix.fetch }}
|
name: ${{ matrix.fetch }}
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-26.04-arm
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -40,12 +40,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
|
|
||||||
@@ -64,23 +64,17 @@ jobs:
|
|||||||
run: V=1 ./manage pyenv.cmd python "./searxng_extra/update/${{ matrix.fetch }}"
|
run: V=1 ./manage pyenv.cmd python "./searxng_extra/update/${{ matrix.fetch }}"
|
||||||
|
|
||||||
- name: Create PR
|
- name: Create PR
|
||||||
id: cpr
|
|
||||||
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
||||||
with:
|
with:
|
||||||
author: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
author: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
||||||
committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
||||||
title: "[data] update searx.data - ${{ matrix.fetch }}"
|
title: "[mod] data: update searx.data - ${{ matrix.fetch }}"
|
||||||
commit-message: "[data] update searx.data - ${{ matrix.fetch }}"
|
commit-message: "[mod] data: update searx.data - ${{ matrix.fetch }}"
|
||||||
branch: "update_data_${{ matrix.fetch }}"
|
branch: "ci-data-${{ matrix.fetch }}"
|
||||||
delete-branch: "true"
|
delete-branch: "true"
|
||||||
draft: "false"
|
draft: "false"
|
||||||
signoff: "false"
|
signoff: "false"
|
||||||
body: |
|
body: |
|
||||||
[data] update searx.data - ${{ matrix.fetch }}
|
Update searx.data - ${{ matrix.fetch }}
|
||||||
labels: |
|
labels: |
|
||||||
data
|
data
|
||||||
|
|
||||||
- name: Display information
|
|
||||||
run: |
|
|
||||||
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
|
|
||||||
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
|
|
||||||
|
|||||||
8
.github/workflows/documentation.yml
vendored
8
.github/workflows/documentation.yml
vendored
@@ -25,19 +25,19 @@ jobs:
|
|||||||
release:
|
release:
|
||||||
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
|
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
|
||||||
name: Release
|
name: Release
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-26.04-arm
|
||||||
permissions:
|
permissions:
|
||||||
# for JamesIves/github-pages-deploy-action to push
|
# for JamesIves/github-pages-deploy-action to push
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
fetch-depth: "0"
|
fetch-depth: "0"
|
||||||
@@ -65,7 +65,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
folder: "dist/docs"
|
folder: "dist/docs"
|
||||||
branch: "gh-pages"
|
branch: "gh-pages"
|
||||||
commit-message: "[doc] build from commit ${{ github.sha }}"
|
commit-message: "[mod] docs: build from commit ${{ github.sha }}"
|
||||||
# Automatically remove deleted files from the deploy branch
|
# Automatically remove deleted files from the deploy branch
|
||||||
clean: "true"
|
clean: "true"
|
||||||
single-commit: "true"
|
single-commit: "true"
|
||||||
|
|||||||
37
.github/workflows/integration.yml
vendored
37
.github/workflows/integration.yml
vendored
@@ -23,7 +23,7 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Python ${{ matrix.python-version }}
|
name: Python ${{ matrix.python-version }}
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-26.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version:
|
python-version:
|
||||||
@@ -34,12 +34,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ matrix.python-version }}"
|
python-version: "${{ matrix.python-version }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
|
|
||||||
@@ -59,29 +59,24 @@ jobs:
|
|||||||
|
|
||||||
theme:
|
theme:
|
||||||
name: Theme
|
name: Theme
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-26.04-arm
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||||
|
with:
|
||||||
|
node-version: "26"
|
||||||
|
check-latest: "true"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
||||||
with:
|
|
||||||
node-version-file: "./.nvmrc"
|
|
||||||
|
|
||||||
- name: Setup cache Node.js
|
|
||||||
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
||||||
with:
|
|
||||||
key: "nodejs-${{ runner.arch }}-${{ hashFiles('./.nvmrc', './package.json') }}"
|
|
||||||
path: "./client/simple/node_modules/"
|
|
||||||
|
|
||||||
- name: Setup cache Python
|
- name: Setup cache Python
|
||||||
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
@@ -90,6 +85,14 @@ jobs:
|
|||||||
python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-
|
python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-
|
||||||
path: "./local/"
|
path: "./local/"
|
||||||
|
|
||||||
|
- name: Setup cache Node.js
|
||||||
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||||
|
with:
|
||||||
|
key: "nodejs-${{ runner.arch }}-${{ hashFiles('**/package-lock.json') }}"
|
||||||
|
restore-keys: |
|
||||||
|
nodejs-${{ runner.arch }}-
|
||||||
|
path: "./client/simple/node_modules/"
|
||||||
|
|
||||||
- name: Setup venv
|
- name: Setup venv
|
||||||
run: make V=1 install
|
run: make V=1 install
|
||||||
|
|
||||||
|
|||||||
30
.github/workflows/l10n.yml
vendored
30
.github/workflows/l10n.yml
vendored
@@ -26,21 +26,21 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update:
|
update:
|
||||||
if: github.repository_owner == 'searxng' && github.event.workflow_run.conclusion == 'success'
|
if: github.event.workflow_run.conclusion == 'success' && github.repository_owner == 'searxng'
|
||||||
name: Update
|
name: Update
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-26.04-arm
|
||||||
permissions:
|
permissions:
|
||||||
# For "make V=1 weblate.push.translations"
|
# For "make V=1 weblate.push.translations"
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
|
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
|
||||||
fetch-depth: "0"
|
fetch-depth: "0"
|
||||||
@@ -59,7 +59,7 @@ jobs:
|
|||||||
- name: Setup Weblate
|
- name: Setup Weblate
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ~/.config
|
mkdir -p ~/.config
|
||||||
echo "${{ secrets.WEBLATE_CONFIG }}" > ~/.config/weblate
|
echo "${{ secrets.WEBLATE_CONFIG }}" >~/.config/weblate
|
||||||
|
|
||||||
- name: Setup Git
|
- name: Setup Git
|
||||||
run: |
|
run: |
|
||||||
@@ -74,7 +74,7 @@ jobs:
|
|||||||
github.repository_owner == 'searxng'
|
github.repository_owner == 'searxng'
|
||||||
&& (github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
|
&& (github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
|
||||||
name: Pull Request
|
name: Pull Request
|
||||||
runs-on: ubuntu-24.04-arm
|
runs-on: ubuntu-26.04-arm
|
||||||
permissions:
|
permissions:
|
||||||
# For "make V=1 weblate.translations.commit"
|
# For "make V=1 weblate.translations.commit"
|
||||||
contents: write
|
contents: write
|
||||||
@@ -83,12 +83,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
|
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
|
||||||
fetch-depth: "0"
|
fetch-depth: "0"
|
||||||
@@ -107,7 +107,7 @@ jobs:
|
|||||||
- name: Setup Weblate
|
- name: Setup Weblate
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ~/.config
|
mkdir -p ~/.config
|
||||||
echo "${{ secrets.WEBLATE_CONFIG }}" > ~/.config/weblate
|
echo "${{ secrets.WEBLATE_CONFIG }}" >~/.config/weblate
|
||||||
|
|
||||||
- name: Setup Git
|
- name: Setup Git
|
||||||
run: |
|
run: |
|
||||||
@@ -118,23 +118,17 @@ jobs:
|
|||||||
run: make V=1 weblate.translations.commit
|
run: make V=1 weblate.translations.commit
|
||||||
|
|
||||||
- name: Create PR
|
- name: Create PR
|
||||||
id: cpr
|
|
||||||
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
||||||
with:
|
with:
|
||||||
author: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
author: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
||||||
committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
|
||||||
title: "[l10n] update translations from Weblate"
|
title: "[mod] i18n: update translations from Weblate"
|
||||||
commit-message: "[l10n] update translations from Weblate"
|
commit-message: "[mod] i18n: update translations from Weblate"
|
||||||
branch: "translations_update"
|
branch: "translations_update"
|
||||||
delete-branch: "true"
|
delete-branch: "true"
|
||||||
draft: "false"
|
draft: "false"
|
||||||
signoff: "false"
|
signoff: "false"
|
||||||
body: |
|
body: |
|
||||||
[l10n] update translations from Weblate
|
Update translations from Weblate
|
||||||
labels: |
|
labels: |
|
||||||
area:i18n
|
area:i18n
|
||||||
|
|
||||||
- name: Display information
|
|
||||||
run: |
|
|
||||||
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
|
|
||||||
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
|
|
||||||
|
|||||||
46
.github/workflows/security.yml
vendored
46
.github/workflows/security.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
name: Security
|
|
||||||
|
|
||||||
# yamllint disable-line rule:truthy
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: "42 05 * * *"
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
container:
|
|
||||||
if: github.repository_owner == 'searxng'
|
|
||||||
name: Container
|
|
||||||
runs-on: ubuntu-24.04-arm
|
|
||||||
permissions:
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
||||||
with:
|
|
||||||
persist-credentials: "false"
|
|
||||||
|
|
||||||
- name: Sync GHCS from Docker Scout
|
|
||||||
uses: docker/scout-action@ce97ec1bb85613e8eb35d086fad0c77a6cedf983 # v1.23.0
|
|
||||||
with:
|
|
||||||
organization: "searxng"
|
|
||||||
dockerhub-user: "${{ secrets.DOCKER_USER }}"
|
|
||||||
dockerhub-password: "${{ secrets.DOCKER_TOKEN }}"
|
|
||||||
image: "registry://ghcr.io/searxng/searxng:latest"
|
|
||||||
command: "cves"
|
|
||||||
sarif-file: "./scout.sarif"
|
|
||||||
exit-code: "false"
|
|
||||||
write-comment: "false"
|
|
||||||
|
|
||||||
- name: Upload SARIFs
|
|
||||||
uses: github/codeql-action/upload-sarif@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
|
|
||||||
with:
|
|
||||||
sarif_file: "./scout.sarif"
|
|
||||||
896
client/simple/package-lock.json
generated
896
client/simple/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -29,21 +29,21 @@
|
|||||||
"swiped-events": "1.2.0"
|
"swiped-events": "1.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "2.5.2",
|
"@biomejs/biome": "2.5.5",
|
||||||
"@types/node": "^26.1.0",
|
"@types/node": "^26.1.1",
|
||||||
"browserslist": "^4.28.4",
|
"browserslist": "^4.28.7",
|
||||||
"browserslist-to-esbuild": "^2.1.1",
|
"browserslist-to-esbuild": "^2.1.1",
|
||||||
"edge.js": "^6.5.1",
|
"edge.js": "^6.5.1",
|
||||||
"less": "^4.6.7",
|
"less": "^4.8.0",
|
||||||
"mathjs": "^15.2.0",
|
"mathjs": "^15.2.0",
|
||||||
"sharp": "~0.35.3",
|
"sharp": "~0.35.3",
|
||||||
"sort-package-json": "^4.0.0",
|
"sort-package-json": "^4.0.0",
|
||||||
"stylelint": "^17.14.0",
|
"stylelint": "^17.14.1",
|
||||||
"stylelint-config-standard-less": "^4.1.0",
|
"stylelint-config-standard-less": "^4.1.0",
|
||||||
"stylelint-prettier": "^5.0.3",
|
"stylelint-prettier": "^5.0.3",
|
||||||
"svgo": "^4.0.1",
|
"svgo": "^4.0.2",
|
||||||
"typescript": "~6.0.3",
|
"typescript": "~7.0.2",
|
||||||
"vite": "^8.1.3",
|
"vite": "^8.1.5",
|
||||||
"vite-bundle-analyzer": "^1.3.8"
|
"vite-bundle-analyzer": "^1.3.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,15 @@ if [ "$(id -u)" -eq 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ENVs aliases
|
# ENVs aliases
|
||||||
export GRANIAN_PORT="${SEARXNG_PORT:-$GRANIAN_PORT}"
|
# https://github.com/searxng/searxng/issues/5934
|
||||||
|
case "${SEARXNG_PORT:-}" in
|
||||||
|
'') ;;
|
||||||
|
*[!0-9]*)
|
||||||
|
unset SEARXNG_PORT
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
export GRANIAN_PORT="$SEARXNG_PORT"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
exec /usr/local/searxng/.venv/bin/granian searx.webapp:app
|
exec /usr/local/searxng/.venv/bin/granian searx.webapp:app
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ By default and without any extensions, SearXNG serves these resolvers:
|
|||||||
- ``yandex``
|
- ``yandex``
|
||||||
|
|
||||||
With the above setting favicons are displayed, the user has the option to
|
With the above setting favicons are displayed, the user has the option to
|
||||||
deactivate this feature in his settings. If the user is to have the option of
|
deactivate this feature in their settings. If the user is to have the option of
|
||||||
selecting from several *resolvers*, a further setting is required / but this
|
selecting from several *resolvers*, a further setting is required / but this
|
||||||
setting will be discussed :ref:`later <register resolvers>` in this article,
|
setting will be discussed :ref:`later <register resolvers>` in this article,
|
||||||
first we have to setup the favicons cache.
|
first we have to setup the favicons cache.
|
||||||
|
|||||||
8
docs/dev/engines/online/exaapi.rst
Normal file
8
docs/dev/engines/online/exaapi.rst
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.. _exaapi engine:
|
||||||
|
|
||||||
|
==============
|
||||||
|
Exa API Engine
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. automodule:: searx.engines.exaapi
|
||||||
|
:members:
|
||||||
2
manage
2
manage
@@ -48,7 +48,7 @@ PATH="${PY_ENV}/bin:${REPO_ROOT}/node_modules/.bin:${GOROOT}/bin:${GOPATH}/bin:$
|
|||||||
|
|
||||||
PYOBJECTS="searx"
|
PYOBJECTS="searx"
|
||||||
PY_SETUP_EXTRAS='[test]'
|
PY_SETUP_EXTRAS='[test]'
|
||||||
GECKODRIVER_VERSION="v0.36.0"
|
GECKODRIVER_VERSION="v0.37.0"
|
||||||
# SPHINXOPTS=
|
# SPHINXOPTS=
|
||||||
BLACK_OPTIONS=("--target-version" "py311" "--line-length" "120" "--skip-string-normalization")
|
BLACK_OPTIONS=("--target-version" "py311" "--line-length" "120" "--skip-string-normalization")
|
||||||
BLACK_TARGETS=("--exclude" "(searx/static|searx/languages.py)" "--include" 'searxng.msg|\.pyi?$' "searx" "searxng_extra" "tests")
|
BLACK_TARGETS=("--exclude" "(searx/static|searx/languages.py)" "--include" 'searxng.msg|\.pyi?$' "searx" "searxng_extra" "tests")
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ cov-core==1.15.0
|
|||||||
black==25.9.0
|
black==25.9.0
|
||||||
pylint==4.0.6
|
pylint==4.0.6
|
||||||
splinter==0.21.0
|
splinter==0.21.0
|
||||||
selenium==4.45.0
|
selenium==4.46.0
|
||||||
Sphinx==8.2.3;python_version <= "3.11"
|
Sphinx==8.2.3;python_version <= "3.11"
|
||||||
Sphinx==9.1.0; python_version > "3.11"
|
Sphinx==9.1.0; python_version > "3.11"
|
||||||
sphinx-issues==6.0.0
|
sphinx-issues==6.0.0
|
||||||
@@ -23,6 +23,6 @@ coloredlogs==15.0.1
|
|||||||
docutils>=0.21.2;python_version <= "3.11"
|
docutils>=0.21.2;python_version <= "3.11"
|
||||||
docutils>=0.22.4; python_version > "3.11"
|
docutils>=0.22.4; python_version > "3.11"
|
||||||
parameterized==0.9.0
|
parameterized==0.9.0
|
||||||
granian[reload]==2.7.8
|
granian[reload]==2.7.9
|
||||||
basedpyright==1.39.9
|
basedpyright==1.39.9
|
||||||
types-lxml==2026.2.16
|
types-lxml==2026.2.16
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
granian==2.7.8
|
granian==2.7.9
|
||||||
granian[pname]==2.7.8
|
granian[pname]==2.7.9
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
certifi==2026.6.17
|
certifi==2026.7.22
|
||||||
babel==2.18.0
|
babel==2.18.0
|
||||||
flask-babel==4.0.0
|
flask-babel==4.0.0
|
||||||
flask==3.1.3
|
flask==3.1.3
|
||||||
@@ -13,7 +13,7 @@ sniffio==1.3.1
|
|||||||
valkey==6.1.1
|
valkey==6.1.1
|
||||||
markdown-it-py==4.2.0
|
markdown-it-py==4.2.0
|
||||||
msgspec==0.21.1
|
msgspec==0.21.1
|
||||||
typer==0.26.8
|
typer==0.27.0
|
||||||
isodate==0.7.2
|
isodate==0.7.2
|
||||||
whitenoise==6.12.0
|
whitenoise==6.12.0
|
||||||
typing-extensions==4.16.0
|
typing-extensions==4.16.0
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ class ExpireCacheCfg(msgspec.Struct): # pylint: disable=too-few-public-methods
|
|||||||
MAXHOLD_TIME: int = 60 * 60 * 24 * 7 # 7 days
|
MAXHOLD_TIME: int = 60 * 60 * 24 * 7 # 7 days
|
||||||
"""Hold time (default in sec.), after which a value is removed from the cache."""
|
"""Hold time (default in sec.), after which a value is removed from the cache."""
|
||||||
|
|
||||||
MAINTENANCE_PERIOD: int = 60 * 60 # 2h
|
MAINTENANCE_PERIOD: int = 60 * 60 # 1h
|
||||||
"""Maintenance period in seconds / when :py:obj:`MAINTENANCE_MODE` is set to
|
"""Maintenance period in seconds / when :py:obj:`MAINTENANCE_MODE` is set to
|
||||||
``auto``."""
|
``auto``."""
|
||||||
|
|
||||||
@@ -458,12 +458,22 @@ class ExpireCacheSQLite(sqlitedb.SQLiteAppl, ExpireCache):
|
|||||||
# Before values are taken from the table, a maintenance interval may
|
# Before values are taken from the table, a maintenance interval may
|
||||||
# need to be carried out.
|
# need to be carried out.
|
||||||
self.maintenance()
|
self.maintenance()
|
||||||
sql = f"SELECT value FROM {table} WHERE key = ?"
|
sql = f"SELECT value, expire FROM {table} WHERE key = ?"
|
||||||
row = self.DB.execute(sql, (key,)).fetchone()
|
row = self.DB.execute(sql, (key,)).fetchone()
|
||||||
if row is None:
|
if row is None:
|
||||||
return default
|
return default
|
||||||
|
|
||||||
return self.deserialize(row[0])
|
# Check if value is expired. It's possible that it's expired but has not
|
||||||
|
# yet been automatically deleted by the periodic maintenance
|
||||||
|
(value, expire) = row
|
||||||
|
now = time.time()
|
||||||
|
if expire < now:
|
||||||
|
# The record is deleted during the maintenance interval. Deleting
|
||||||
|
# the record at this point offers no advantage, as a SELECT
|
||||||
|
# statement must be executed for every cache.get request anyways.
|
||||||
|
return default
|
||||||
|
|
||||||
|
return self.deserialize(value)
|
||||||
|
|
||||||
def pairs(self, ctx: str) -> Iterator[tuple[str, typing.Any]]:
|
def pairs(self, ctx: str) -> Iterator[tuple[str, typing.Any]]:
|
||||||
"""Iterate over key/value pairs from table given by argument ``ctx``.
|
"""Iterate over key/value pairs from table given by argument ``ctx``.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
],
|
],
|
||||||
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}",
|
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}",
|
||||||
"versions": [
|
"versions": [
|
||||||
"152.0",
|
"153.0",
|
||||||
"151.0"
|
"152.0"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ ENGINES_CACHE: ExpireCacheSQLite = ExpireCacheSQLite.build_cache(
|
|||||||
ExpireCacheCfg(
|
ExpireCacheCfg(
|
||||||
name="ENGINES_CACHE",
|
name="ENGINES_CACHE",
|
||||||
MAXHOLD_TIME=60 * 60 * 24 * 7, # 7 days
|
MAXHOLD_TIME=60 * 60 * 24 * 7, # 7 days
|
||||||
MAINTENANCE_PERIOD=60 * 60, # 2h
|
MAINTENANCE_PERIOD=60 * 60, # 1h
|
||||||
MAX_VALUE_LEN=1024 * 1024 * 1024, # 1MB
|
MAX_VALUE_LEN=1024 * 1024 * 1024, # 1MB
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ def extract_video_data(video_block):
|
|||||||
published_date = None
|
published_date = None
|
||||||
if create_time:
|
if create_time:
|
||||||
try:
|
try:
|
||||||
published_date = datetime.strptime(create_time.strip(), "%Y-%m-%d")
|
published_date = datetime.fromisoformat(create_time.strip())
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ def response(resp: "SXNG_Response") -> EngineResults:
|
|||||||
comments_elements = eval_xpath_getindex(entry, xpath_comment, 0, default=None)
|
comments_elements = eval_xpath_getindex(entry, xpath_comment, 0, default=None)
|
||||||
comments: str = "" if comments_elements is None else comments_elements.text
|
comments: str = "" if comments_elements is None else comments_elements.text
|
||||||
|
|
||||||
publishedDate = datetime.strptime(eval_xpath_getindex(entry, xpath_published, 0).text, "%Y-%m-%dT%H:%M:%SZ")
|
publishedDate = datetime.fromisoformat(eval_xpath_getindex(entry, xpath_published, 0).text.rstrip("Z"))
|
||||||
|
|
||||||
res.add(
|
res.add(
|
||||||
res.types.Paper(
|
res.types.Paper(
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ def parse_images(data):
|
|||||||
img_date = item.get("bdImgnewsDate")
|
img_date = item.get("bdImgnewsDate")
|
||||||
publishedDate = None
|
publishedDate = None
|
||||||
if img_date:
|
if img_date:
|
||||||
publishedDate = datetime.strptime(img_date, "%Y-%m-%d %H:%M")
|
publishedDate = datetime.fromisoformat(img_date)
|
||||||
results.append(
|
results.append(
|
||||||
{
|
{
|
||||||
"template": "images.html",
|
"template": "images.html",
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ def response(resp):
|
|||||||
"url": 'https://www.bitchute.com/video/' + item['video_id'],
|
"url": 'https://www.bitchute.com/video/' + item['video_id'],
|
||||||
"content": html_to_text(item['description']),
|
"content": html_to_text(item['description']),
|
||||||
"author": item['channel']['channel_name'],
|
"author": item['channel']['channel_name'],
|
||||||
"publishedDate": datetime.strptime(item["date_published"], "%Y-%m-%dT%H:%M:%S.%fZ"),
|
"publishedDate": datetime.fromisoformat(item["date_published"].rstrip("Z")),
|
||||||
"length": item['duration'],
|
"length": item['duration'],
|
||||||
"views": item['view_count'],
|
"views": item['view_count'],
|
||||||
"thumbnail": item['thumbnail_url'],
|
"thumbnail": item['thumbnail_url'],
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ def response(resp: "SXNG_Response") -> EngineResults:
|
|||||||
title=_remove_keyword_marker(result["Subject"]),
|
title=_remove_keyword_marker(result["Subject"]),
|
||||||
content=_remove_keyword_marker(result["Text"]),
|
content=_remove_keyword_marker(result["Text"]),
|
||||||
url=result["Url"],
|
url=result["Url"],
|
||||||
publishedDate=datetime.strptime(result["Published"], "%Y-%m-%d %H:%M:%S"),
|
publishedDate=datetime.fromisoformat(result["Published"]),
|
||||||
metadata=gettext.gettext("Posted by {author}").format(author=result["Author"]),
|
metadata=gettext.gettext("Posted by {author}").format(author=result["Author"]),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ def response(resp):
|
|||||||
|
|
||||||
publishedDate = None
|
publishedDate = None
|
||||||
if recipe['submissionDate']:
|
if recipe['submissionDate']:
|
||||||
publishedDate = datetime.strptime(result['recipe']['submissionDate'][:19], "%Y-%m-%dT%H:%M:%S")
|
publishedDate = datetime.fromisoformat(result['recipe']['submissionDate'][:19])
|
||||||
|
|
||||||
content = [
|
content = [
|
||||||
f"Schwierigkeitsstufe (1-3): {recipe['difficulty']}",
|
f"Schwierigkeitsstufe (1-3): {recipe['difficulty']}",
|
||||||
|
|||||||
168
searx/engines/exaapi.py
Normal file
168
searx/engines/exaapi.py
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
"""Engine to search using the official `Exa Search API`_. Exa is a search engine for AI agents.
|
||||||
|
|
||||||
|
.. _Exa Search API: https://exa.ai/docs/reference/search
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
The engine has the following mandatory setting:
|
||||||
|
|
||||||
|
- :py:obj:`api_key`
|
||||||
|
|
||||||
|
You can obtain an API key from the `API Key section <https://dashboard.exa.ai/api-keys>`_ in the Exa dashboard.
|
||||||
|
|
||||||
|
Optional settings are:
|
||||||
|
|
||||||
|
- :py:obj:`results_per_page`
|
||||||
|
- :py:obj:`search_type`
|
||||||
|
- :py:obj:`content_mode`
|
||||||
|
- :py:obj:`content_max_characters`
|
||||||
|
|
||||||
|
.. code:: yaml
|
||||||
|
|
||||||
|
- name: exaapi
|
||||||
|
engine: exaapi
|
||||||
|
shortcut: exa
|
||||||
|
api_key: "..."
|
||||||
|
results_per_page: 10
|
||||||
|
search_type: auto
|
||||||
|
content_mode: highlights
|
||||||
|
inactive: false
|
||||||
|
|
||||||
|
The API supports SafeSearch and region-aware results.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import typing as t
|
||||||
|
|
||||||
|
from dateutil import parser
|
||||||
|
|
||||||
|
from searx.exceptions import SearxEngineAPIException
|
||||||
|
from searx.result_types import EngineResults
|
||||||
|
from searx.utils import html_to_text
|
||||||
|
|
||||||
|
if t.TYPE_CHECKING:
|
||||||
|
from searx.extended_types import SXNG_Response
|
||||||
|
from searx.search.processors import OnlineParams
|
||||||
|
|
||||||
|
|
||||||
|
SearchType = t.Literal["fast", "auto", "instant", "deep", "deep-lite", "deep-reasoning"]
|
||||||
|
ContentMode = t.Literal["highlights", "text"]
|
||||||
|
|
||||||
|
about = {
|
||||||
|
"website": "https://exa.ai",
|
||||||
|
"wikidata_id": None,
|
||||||
|
"official_api_documentation": "https://exa.ai/docs/reference/search",
|
||||||
|
"use_official_api": True,
|
||||||
|
"require_api_key": True,
|
||||||
|
"results": "JSON",
|
||||||
|
}
|
||||||
|
|
||||||
|
api_key: str = ""
|
||||||
|
"""API key for Exa Search API (required)."""
|
||||||
|
|
||||||
|
categories = ["general", "web"]
|
||||||
|
safesearch = True
|
||||||
|
|
||||||
|
base_url = "https://api.exa.ai/search"
|
||||||
|
results_per_page: int = 10
|
||||||
|
"""Maximum number of results per request. Value must be between 1 and 100, default is 10."""
|
||||||
|
|
||||||
|
search_type: SearchType = "auto"
|
||||||
|
"""Search type. Default is auto, see documentation for more information."""
|
||||||
|
|
||||||
|
content_mode: ContentMode = "highlights"
|
||||||
|
"""Content to request from the API: ``highlights`` (excerpts) or ``text`` (page text)."""
|
||||||
|
|
||||||
|
content_max_characters: int = 500
|
||||||
|
"""Maximum characters for the requested content."""
|
||||||
|
|
||||||
|
|
||||||
|
def init(_):
|
||||||
|
if not api_key:
|
||||||
|
raise SearxEngineAPIException("No API key provided")
|
||||||
|
if not 1 <= results_per_page <= 100:
|
||||||
|
raise ValueError("results_per_page must be between 1 and 100")
|
||||||
|
if search_type not in t.get_args(SearchType):
|
||||||
|
raise ValueError(f"Unsupported search type: {search_type}")
|
||||||
|
if content_mode not in t.get_args(ContentMode):
|
||||||
|
raise ValueError(f"Unsupported content mode: {content_mode}")
|
||||||
|
if content_max_characters < 1:
|
||||||
|
raise ValueError("content_max_characters must be at least 1")
|
||||||
|
|
||||||
|
|
||||||
|
def _contents_payload() -> dict[str, t.Any]:
|
||||||
|
if content_mode == "text":
|
||||||
|
return {"text": {"maxCharacters": content_max_characters, "stripLinks": True}}
|
||||||
|
return {"highlights": {"maxCharacters": content_max_characters}}
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_content(result: dict[str, t.Any]) -> str:
|
||||||
|
if content_mode == "text":
|
||||||
|
return html_to_text(result.get("text") or "")
|
||||||
|
return html_to_text(" ".join(result.get("highlights") or []))
|
||||||
|
|
||||||
|
|
||||||
|
def request(query: str, params: "OnlineParams") -> None:
|
||||||
|
"""Create the API request."""
|
||||||
|
body: dict[str, t.Any] = {
|
||||||
|
"query": query,
|
||||||
|
"type": search_type,
|
||||||
|
"numResults": results_per_page,
|
||||||
|
"contents": _contents_payload(),
|
||||||
|
}
|
||||||
|
|
||||||
|
# Apply SafeSearch if enabled
|
||||||
|
if params["safesearch"]:
|
||||||
|
body["moderation"] = True
|
||||||
|
|
||||||
|
# Apply region-aware results if specified
|
||||||
|
locale_parts = params["searxng_locale"].split("-")
|
||||||
|
region = locale_parts[-1]
|
||||||
|
if len(locale_parts) > 1:
|
||||||
|
body["userLocation"] = region.upper()
|
||||||
|
|
||||||
|
params["url"] = base_url
|
||||||
|
params["method"] = "POST"
|
||||||
|
params["headers"]["x-api-key"] = api_key
|
||||||
|
params["json"] = body
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_published_date(value: str | None):
|
||||||
|
"""Extract and parse the published date from the API response.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
value: Raw date string from the API
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Parsed datetime object or None if parsing fails
|
||||||
|
"""
|
||||||
|
if not value:
|
||||||
|
return None
|
||||||
|
try:
|
||||||
|
return parser.parse(value)
|
||||||
|
except (parser.ParserError, TypeError, OverflowError):
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def response(resp: "SXNG_Response") -> EngineResults:
|
||||||
|
"""Process the API response and return results."""
|
||||||
|
res = EngineResults()
|
||||||
|
|
||||||
|
for result in resp.json().get("results", []):
|
||||||
|
url = result.get("url")
|
||||||
|
if not url:
|
||||||
|
continue
|
||||||
|
|
||||||
|
res.add(
|
||||||
|
res.types.MainResult(
|
||||||
|
url=url,
|
||||||
|
title=html_to_text(result.get("title") or url),
|
||||||
|
content=_extract_content(result),
|
||||||
|
thumbnail=result.get("image") or "",
|
||||||
|
publishedDate=_extract_published_date(result.get("publishedDate")),
|
||||||
|
author=result.get("author") or "",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return res
|
||||||
@@ -37,7 +37,7 @@ def response(resp):
|
|||||||
for item in search_res:
|
for item in search_res:
|
||||||
img = 'https://s3.thehackerblog.com/findthatmeme/' + item['image_path']
|
img = 'https://s3.thehackerblog.com/findthatmeme/' + item['image_path']
|
||||||
thumb = 'https://s3.thehackerblog.com/findthatmeme/thumb/' + item.get('thumbnail', '')
|
thumb = 'https://s3.thehackerblog.com/findthatmeme/thumb/' + item.get('thumbnail', '')
|
||||||
date = datetime.strptime(item["updated_at"].split("T")[0], "%Y-%m-%d")
|
date = datetime.fromisoformat(item["updated_at"].split("T")[0])
|
||||||
formatted_date = datetime.fromtimestamp(date.timestamp())
|
formatted_date = datetime.fromtimestamp(date.timestamp())
|
||||||
|
|
||||||
results.append(
|
results.append(
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ def response(resp: "SXNG_Response"):
|
|||||||
title=result["title"],
|
title=result["title"],
|
||||||
content=result["description"],
|
content=result["description"],
|
||||||
thumbnail=result["smallImageURL"],
|
thumbnail=result["smallImageURL"],
|
||||||
publishedDate=datetime.strptime(result["status_since"], "%Y-%m-%d %H:%M:%S"),
|
publishedDate=datetime.fromisoformat(result["status_since"]),
|
||||||
metadata=f"Rank: {result['rank']} || {result['episode_count']} episodes",
|
metadata=f"Rank: {result['rank']} || {result['episode_count']} episodes",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -68,7 +68,9 @@ def _get_api_token(query: str) -> str:
|
|||||||
if cached_token:
|
if cached_token:
|
||||||
return cached_token
|
return cached_token
|
||||||
|
|
||||||
resp = get(f"{base_url}/search?q={query}", headers={"User-Agent": gen_useragent()})
|
resp = get(
|
||||||
|
f"{base_url}/search?q={query}", headers={"User-Agent": gen_useragent(), "Accept-Language": "en-US,en:q=0.9"}
|
||||||
|
)
|
||||||
if not resp.ok:
|
if not resp.ok:
|
||||||
raise SearxEngineAPIException("failed to obtain request token: invalid response code")
|
raise SearxEngineAPIException("failed to obtain request token: invalid response code")
|
||||||
|
|
||||||
@@ -76,7 +78,7 @@ def _get_api_token(query: str) -> str:
|
|||||||
if not token:
|
if not token:
|
||||||
raise SearxEngineAPIException("failed to obtain request token: no token found")
|
raise SearxEngineAPIException("failed to obtain request token: no token found")
|
||||||
|
|
||||||
CACHE.set("token", token)
|
CACHE.set("token", token, expire=3 * 60)
|
||||||
return token
|
return token
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ def response(resp) -> EngineResults:
|
|||||||
|
|
||||||
published_date = None
|
published_date = None
|
||||||
try:
|
try:
|
||||||
published_date = datetime.strptime(entry["createdAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
published_date = datetime.fromisoformat(entry["createdAt"].rstrip("Z"))
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ def _result(video: dict[str, typing.Any], album_info: dict[str, typing.Any]):
|
|||||||
release_time = album_info.get("releaseTime", {}).get("value")
|
release_time = album_info.get("releaseTime", {}).get("value")
|
||||||
if release_time:
|
if release_time:
|
||||||
try:
|
try:
|
||||||
published_date = datetime.strptime(release_time, "%Y-%m-%d")
|
published_date = datetime.fromisoformat(release_time)
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ def _get_communities(json):
|
|||||||
'title': result['community']['title'],
|
'title': result['community']['title'],
|
||||||
'content': markdown_to_text(result['community'].get('description', '')),
|
'content': markdown_to_text(result['community'].get('description', '')),
|
||||||
'thumbnail': result['community'].get('icon', result['community'].get('banner')),
|
'thumbnail': result['community'].get('icon', result['community'].get('banner')),
|
||||||
'publishedDate': datetime.strptime(counts['published'][:19], '%Y-%m-%dT%H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(counts['published'][:19]),
|
||||||
'metadata': metadata,
|
'metadata': metadata,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -141,7 +141,7 @@ def _get_posts(json):
|
|||||||
'title': result['post']['name'],
|
'title': result['post']['name'],
|
||||||
'content': content,
|
'content': content,
|
||||||
'thumbnail': thumbnail,
|
'thumbnail': thumbnail,
|
||||||
'publishedDate': datetime.strptime(result['post']['published'][:19], '%Y-%m-%dT%H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(result['post']['published'][:19]),
|
||||||
'metadata': metadata,
|
'metadata': metadata,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -170,7 +170,7 @@ def _get_comments(json):
|
|||||||
'url': result['comment']['ap_id'],
|
'url': result['comment']['ap_id'],
|
||||||
'title': result['post']['name'],
|
'title': result['post']['name'],
|
||||||
'content': markdown_to_text(result['comment']['content']),
|
'content': markdown_to_text(result['comment']['content']),
|
||||||
'publishedDate': datetime.strptime(result['comment']['published'][:19], '%Y-%m-%dT%H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(result['comment']['published'][:19]),
|
||||||
'metadata': metadata,
|
'metadata': metadata,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ def response(resp):
|
|||||||
'title': result['username'] + f" ({result['followers_count']} followers)",
|
'title': result['username'] + f" ({result['followers_count']} followers)",
|
||||||
'content': result['note'],
|
'content': result['note'],
|
||||||
'thumbnail': result.get('avatar'),
|
'thumbnail': result.get('avatar'),
|
||||||
'publishedDate': datetime.strptime(result['created_at'][:10], "%Y-%m-%d"),
|
'publishedDate': datetime.fromisoformat(result['created_at'][:10]),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
elif mastodon_type == "hashtags":
|
elif mastodon_type == "hashtags":
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ def response(resp) -> EngineResults:
|
|||||||
|
|
||||||
cve_id = item["cve"]["id"]
|
cve_id = item["cve"]["id"]
|
||||||
description = item["cve"]["descriptions"][0]["value"]
|
description = item["cve"]["descriptions"][0]["value"]
|
||||||
date = datetime.strptime(item["cve"]["published"], "%Y-%m-%dT%H:%M:%S.%f")
|
date = datetime.fromisoformat(item["cve"]["published"])
|
||||||
|
|
||||||
# Extract severity (Low, Medium, High, or Critical) and CVSS score, if available
|
# Extract severity (Low, Medium, High, or Critical) and CVSS score, if available
|
||||||
info = item["cve"].get("metrics", {}).get("cvssMetricV31", [{}])[0].get("cvssData", {})
|
info = item["cve"].get("metrics", {}).get("cvssMetricV31", [{}])[0].get("cvssData", {})
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ def response(resp):
|
|||||||
release_time = item["release_time"]
|
release_time = item["release_time"]
|
||||||
duration = item["duration"]
|
duration = item["duration"]
|
||||||
|
|
||||||
release_date = datetime.strptime(release_time.split("T")[0], "%Y-%m-%d")
|
release_date = datetime.fromisoformat(release_time.split("T")[0])
|
||||||
formatted_date = datetime.fromtimestamp(release_date.timestamp())
|
formatted_date = datetime.fromtimestamp(release_date.timestamp())
|
||||||
|
|
||||||
url = f"https://odysee.com/{name}:{claim_id}"
|
url = f"https://odysee.com/{name}:{claim_id}"
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ def response(resp: "SXNG_Response"):
|
|||||||
title=result["title"],
|
title=result["title"],
|
||||||
content=result["description"],
|
content=result["description"],
|
||||||
thumbnail=result["image_url"],
|
thumbnail=result["image_url"],
|
||||||
publishedDate=datetime.strptime(result["created_at"], "%Y-%m-%d %H:%M:%S"),
|
publishedDate=datetime.fromisoformat(result["created_at"]),
|
||||||
metadata=" | ".join(metadata),
|
metadata=" | ".join(metadata),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ def response(resp):
|
|||||||
results.append(
|
results.append(
|
||||||
{
|
{
|
||||||
'template': 'images.html',
|
'template': 'images.html',
|
||||||
'url': _clean_url(f"{about['website']}/images/{result['objectID']}"),
|
'url': _clean_url(f"{pdia_base_url}/images/{result['objectID']}"),
|
||||||
'img_src': _clean_url(base_image_url),
|
'img_src': _clean_url(base_image_url),
|
||||||
'thumbnail_src': _clean_url(base_image_url + THUMBNAIL_SUFFIX),
|
'thumbnail_src': _clean_url(base_image_url + THUMBNAIL_SUFFIX),
|
||||||
'title': f"{result['title'].strip()} by {result['artist']} {result.get('displayYear', '')}",
|
'title': f"{result['title'].strip()} by {result['artist']} {result.get('displayYear', '')}",
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ def parse_news_uchq(data):
|
|||||||
results = []
|
results = []
|
||||||
for item in data.get('feed', []):
|
for item in data.get('feed', []):
|
||||||
try:
|
try:
|
||||||
published_date = datetime.strptime(item.get('time'), "%Y-%m-%d")
|
published_date = datetime.fromisoformat(item.get('time'))
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
# Sometime Quark will return non-standard format like "1天前", set published_date as None
|
# Sometime Quark will return non-standard format like "1天前", set published_date as None
|
||||||
published_date = None
|
published_date = None
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ from urllib.parse import urlencode
|
|||||||
import babel
|
import babel
|
||||||
from flask_babel import gettext # pyright: ignore[reportUnknownVariableType]
|
from flask_babel import gettext # pyright: ignore[reportUnknownVariableType]
|
||||||
|
|
||||||
|
from searx.enginelib import EngineCache
|
||||||
from searx.enginelib.traits import EngineTraits
|
from searx.enginelib.traits import EngineTraits
|
||||||
from searx.exceptions import (
|
from searx.exceptions import (
|
||||||
SearxEngineAccessDeniedException,
|
SearxEngineAccessDeniedException,
|
||||||
@@ -105,9 +106,19 @@ qwant_news_locales = [
|
|||||||
]
|
]
|
||||||
# fmt: on
|
# fmt: on
|
||||||
|
|
||||||
|
base_url = "https://www.qwant.com"
|
||||||
api_url = "https://api.qwant.com/v3/search/"
|
api_url = "https://api.qwant.com/v3/search/"
|
||||||
"""URL of Qwant's API (JSON)"""
|
"""URL of Qwant's API (JSON)"""
|
||||||
|
|
||||||
|
CACHE: EngineCache
|
||||||
|
"""Cache for storing the ``datadome`` cookie."""
|
||||||
|
|
||||||
|
|
||||||
|
def setup(engine_settings: dict[str, t.Any]) -> bool:
|
||||||
|
global CACHE # pylint: disable=global-statement
|
||||||
|
CACHE = EngineCache(engine_settings["name"])
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: "OnlineParams") -> None:
|
def request(query: str, params: "OnlineParams") -> None:
|
||||||
"""Qwant search request"""
|
"""Qwant search request"""
|
||||||
@@ -129,24 +140,29 @@ def request(query: str, params: "OnlineParams") -> None:
|
|||||||
"tgp": test_group_value,
|
"tgp": test_group_value,
|
||||||
"device": "desktop",
|
"device": "desktop",
|
||||||
"safesearch": params["safesearch"],
|
"safesearch": params["safesearch"],
|
||||||
"display": True,
|
# True would be encoded to "True", instead of "true", which makes the request
|
||||||
"llm": True,
|
# easier to detect and block
|
||||||
|
"displayed": "true",
|
||||||
|
"llm": "true",
|
||||||
}
|
}
|
||||||
|
|
||||||
# shuffle query parameters to be harder to fingerprint
|
|
||||||
args = list(args.items())
|
|
||||||
random.shuffle(args)
|
|
||||||
args = dict(args)
|
|
||||||
|
|
||||||
params["raise_for_httperror"] = False
|
params["raise_for_httperror"] = False
|
||||||
|
|
||||||
params["url"] = f"{api_url}{qwant_categ}?{urlencode(args)}"
|
params["url"] = f"{api_url}{qwant_categ}?{urlencode(args)}"
|
||||||
|
|
||||||
|
params["cookies"]["datadome"] = CACHE.get("datadome")
|
||||||
|
params["headers"].update({"Accept": "application/json", "Referer": f"{base_url}/", "Origin": base_url})
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response") -> EngineResults:
|
def response(resp: "SXNG_Response") -> EngineResults:
|
||||||
"""Parse results from Qwant's API"""
|
"""Parse results from Qwant's API"""
|
||||||
# pylint: disable=too-many-locals, too-many-branches, too-many-statements
|
# pylint: disable=too-many-locals, too-many-branches, too-many-statements
|
||||||
|
|
||||||
|
# cache datadome cookie - changes on each request
|
||||||
|
datadome = resp.cookies.get("datadome")
|
||||||
|
if datadome:
|
||||||
|
CACHE.set("datadome", datadome)
|
||||||
|
|
||||||
res = EngineResults()
|
res = EngineResults()
|
||||||
|
|
||||||
# Try to load JSON result
|
# Try to load JSON result
|
||||||
@@ -163,8 +179,8 @@ def response(resp: "SXNG_Response") -> EngineResults:
|
|||||||
error_code = data.get("error_code")
|
error_code = data.get("error_code")
|
||||||
if error_code == 24:
|
if error_code == 24:
|
||||||
raise SearxEngineTooManyRequestsException()
|
raise SearxEngineTooManyRequestsException()
|
||||||
if search_results.get("data", {}).get("error_data", {}).get("captchaUrl") is not None:
|
if search_results.get("url") is not None:
|
||||||
raise SearxEngineCaptchaException()
|
raise SearxEngineCaptchaException(suspended_time=0)
|
||||||
if resp.status_code == 403:
|
if resp.status_code == 403:
|
||||||
raise SearxEngineAccessDeniedException()
|
raise SearxEngineAccessDeniedException()
|
||||||
msg = ",".join(data.get("message", ["unknown"]))
|
msg = ",".join(data.get("message", ["unknown"]))
|
||||||
@@ -302,7 +318,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
|||||||
from searx.utils import extr
|
from searx.utils import extr
|
||||||
|
|
||||||
resp = get(
|
resp = get(
|
||||||
about["website"], # pyright: ignore[reportArgumentType]
|
base_url, # pyright: ignore[reportArgumentType]
|
||||||
timeout=5,
|
timeout=5,
|
||||||
)
|
)
|
||||||
if not resp.ok:
|
if not resp.ok:
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ def response(resp):
|
|||||||
title = extract_text(result_dom.xpath(title_xpath))
|
title = extract_text(result_dom.xpath(title_xpath))
|
||||||
p_date = extract_text(result_dom.xpath(published_date))
|
p_date = extract_text(result_dom.xpath(published_date))
|
||||||
# fix offset date for line 644 webapp.py check
|
# fix offset date for line 644 webapp.py check
|
||||||
fixed_date = datetime.strptime(p_date, '%Y-%m-%dT%H:%M:%S%z')
|
fixed_date = datetime.fromisoformat(p_date)
|
||||||
earned = extract_text(result_dom.xpath(earned_xpath))
|
earned = extract_text(result_dom.xpath(earned_xpath))
|
||||||
views = extract_text(result_dom.xpath(views_xpath))
|
views = extract_text(result_dom.xpath(views_xpath))
|
||||||
rumbles = extract_text(result_dom.xpath(rumbles_xpath))
|
rumbles = extract_text(result_dom.xpath(rumbles_xpath))
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ def response(resp: "SXNG_Response") -> EngineResults:
|
|||||||
|
|
||||||
publishedDate: datetime | None
|
publishedDate: datetime | None
|
||||||
if "pubDate" in result:
|
if "pubDate" in result:
|
||||||
publishedDate = datetime.strptime(result["pubDate"], "%Y-%m-%d")
|
publishedDate = datetime.fromisoformat(result["pubDate"])
|
||||||
else:
|
else:
|
||||||
publishedDate = None
|
publishedDate = None
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,8 @@ def _parse_date(text):
|
|||||||
date_match = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", text)
|
date_match = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", text)
|
||||||
if date_match:
|
if date_match:
|
||||||
try:
|
try:
|
||||||
return datetime.strptime(date_match.group(1), "%Y-%m-%d")
|
y, m, d = date_match.group(1).split("-")
|
||||||
|
return datetime(year=int(y), month=int(m), day=int(d))
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
pass
|
pass
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ def response(resp):
|
|||||||
published_date = None
|
published_date = None
|
||||||
if entry.get("date") and entry.get("duration"):
|
if entry.get("date") and entry.get("duration"):
|
||||||
try:
|
try:
|
||||||
published_date = datetime.strptime(entry['date'], "%Y-%m-%d")
|
published_date = datetime.fromisoformat(entry['date'])
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
published_date = None
|
published_date = None
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ def response(resp: "SXNG_Response") -> EngineResults:
|
|||||||
return str(record.get(k, ""))
|
return str(record.get(k, ""))
|
||||||
|
|
||||||
for record in json_data["records"]:
|
for record in json_data["records"]:
|
||||||
published = datetime.strptime(record["publicationDate"], "%Y-%m-%d")
|
published = datetime.fromisoformat(record["publicationDate"])
|
||||||
authors: list[str] = [" ".join(author["creator"].split(", ")[::-1]) for author in record["creators"]]
|
authors: list[str] = [" ".join(author["creator"].split(", ")[::-1]) for author in record["creators"]]
|
||||||
|
|
||||||
pdf_url = ""
|
pdf_url = ""
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ def _story(item):
|
|||||||
return {
|
return {
|
||||||
'title': item['title'],
|
'title': item['title'],
|
||||||
'thumbnail': item.get('teaserImage', {}).get('imageVariants', {}).get('16x9-256'),
|
'thumbnail': item.get('teaserImage', {}).get('imageVariants', {}).get('16x9-256'),
|
||||||
'publishedDate': datetime.strptime(item['date'][:19], '%Y-%m-%dT%H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(item['date'][:19]),
|
||||||
'content': item.get('firstSentence'),
|
'content': item.get('firstSentence'),
|
||||||
'url': item['shareURL'] if use_source_url else item['detailsweb'],
|
'url': item['shareURL'] if use_source_url else item['detailsweb'],
|
||||||
}
|
}
|
||||||
@@ -103,7 +103,7 @@ def _video(item):
|
|||||||
'template': 'videos.html',
|
'template': 'videos.html',
|
||||||
'title': title,
|
'title': title,
|
||||||
'thumbnail': item.get('teaserImage', {}).get('imageVariants', {}).get('16x9-256'),
|
'thumbnail': item.get('teaserImage', {}).get('imageVariants', {}).get('16x9-256'),
|
||||||
'publishedDate': datetime.strptime(item['date'][:19], '%Y-%m-%dT%H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(item['date'][:19]),
|
||||||
'content': item.get('firstSentence', ''),
|
'content': item.get('firstSentence', ''),
|
||||||
'iframe_src': video_url,
|
'iframe_src': video_url,
|
||||||
'url': url,
|
'url': url,
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ def _obtain_session_code() -> str:
|
|||||||
if not code:
|
if not code:
|
||||||
raise SearxEngineAPIException("failed to obtain session code")
|
raise SearxEngineAPIException("failed to obtain session code")
|
||||||
|
|
||||||
CACHE.set("session", code, expire=60 * 24 * 60) # cookie is valid for two months
|
CACHE.set("session", code, expire=60 * 24 * 60 * 60) # cookie is valid for two months
|
||||||
return code
|
return code
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ def parse_tineye_match(match_json):
|
|||||||
|
|
||||||
crawl_date = backlink_json.get("crawl_date")
|
crawl_date = backlink_json.get("crawl_date")
|
||||||
if crawl_date:
|
if crawl_date:
|
||||||
crawl_date = datetime.strptime(crawl_date, '%Y-%m-%d')
|
crawl_date = datetime.fromisoformat(crawl_date)
|
||||||
else:
|
else:
|
||||||
crawl_date = datetime.min
|
crawl_date = datetime.min
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ def response(resp):
|
|||||||
'title': title,
|
'title': title,
|
||||||
'content': html_to_text(result['content']),
|
'content': html_to_text(result['content']),
|
||||||
'thumbnail': thumbnail,
|
'thumbnail': thumbnail,
|
||||||
'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(result['created_at']),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from dateutil import parser
|
|||||||
|
|
||||||
from searx.exceptions import SearxEngineAPIException
|
from searx.exceptions import SearxEngineAPIException
|
||||||
from searx.network import get
|
from searx.network import get
|
||||||
from searx.utils import html_to_text
|
from searx.utils import gen_useragent, html_to_text
|
||||||
from searx.result_types import EngineResults
|
from searx.result_types import EngineResults
|
||||||
|
|
||||||
if t.TYPE_CHECKING:
|
if t.TYPE_CHECKING:
|
||||||
@@ -52,7 +52,7 @@ def _obtain_x_sid() -> tuple[str, str]:
|
|||||||
The header key is usually called `x-sid-{UUIDv4}`, and the value is
|
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).
|
usually a plain UUIDv4 (but a different one than in the header key).
|
||||||
"""
|
"""
|
||||||
resp = get(f"{api_url}/revcontent/embed.js")
|
resp = get(f"{api_url}/revcontent/embed.js", headers={"User-Agent": gen_useragent()})
|
||||||
if not resp.ok:
|
if not resp.ok:
|
||||||
raise SearxEngineAPIException("failed to obtain request x-sid token")
|
raise SearxEngineAPIException("failed to obtain request x-sid token")
|
||||||
|
|
||||||
@@ -89,12 +89,14 @@ def request(query: str, params: "OnlineParams") -> None:
|
|||||||
params["url"] = f"{api_url}/Search/Web?{urlencode(args)}"
|
params["url"] = f"{api_url}/Search/Web?{urlencode(args)}"
|
||||||
|
|
||||||
x_sid_header, x_sid_value = _obtain_x_sid()
|
x_sid_header, x_sid_value = _obtain_x_sid()
|
||||||
params["headers"] = {
|
params["headers"].update(
|
||||||
x_sid_header: x_sid_value,
|
{
|
||||||
# required - we send a random longitude and latitude instead of the actual user location
|
x_sid_header: x_sid_value,
|
||||||
'x-lon': str(random.random() * 90),
|
# required - we send a random longitude and latitude instead of the actual user location
|
||||||
'x-lat': str(random.random() * 90),
|
"x-lon": str(round(random.random() * 90, 4)),
|
||||||
}
|
"x-lat": str(round(random.random() * 90, 4)),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response"):
|
def response(resp: "SXNG_Response"):
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ def response(resp):
|
|||||||
'img_src': result['path'],
|
'img_src': result['path'],
|
||||||
'thumbnail_src': result['thumbs']['small'],
|
'thumbnail_src': result['thumbs']['small'],
|
||||||
'resolution': result['resolution'].replace('x', ' x '),
|
'resolution': result['resolution'].replace('x', ' x '),
|
||||||
'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'),
|
'publishedDate': datetime.fromisoformat(result['created_at']),
|
||||||
'img_format': result['file_type'],
|
'img_format': result['file_type'],
|
||||||
'filesize': humanize_bytes(result['file_size']),
|
'filesize': humanize_bytes(result['file_size']),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,12 @@ def _normalize_url_fields(result: "Result | LegacyResult"):
|
|||||||
result.parsed_url = urllib.parse.urlparse(result.url)
|
result.parsed_url = urllib.parse.urlparse(result.url)
|
||||||
|
|
||||||
if result.parsed_url:
|
if result.parsed_url:
|
||||||
|
# properly format special characters (e.g. "ä", "ö") in IDN domains
|
||||||
|
# e.g. "xn--strung-xxa.de" becomes "störung.de"
|
||||||
|
if result.parsed_url.netloc.startswith("xn--"):
|
||||||
|
netloc = result.parsed_url.netloc.encode().decode("idna")
|
||||||
|
result.parsed_url = result.parsed_url._replace(netloc=netloc)
|
||||||
|
|
||||||
result.parsed_url = result.parsed_url._replace(
|
result.parsed_url = result.parsed_url._replace(
|
||||||
# if the result has no scheme, use http as default
|
# if the result has no scheme, use http as default
|
||||||
scheme=result.parsed_url.scheme or "http",
|
scheme=result.parsed_url.scheme or "http",
|
||||||
|
|||||||
@@ -477,6 +477,24 @@ engines:
|
|||||||
engine: arxiv
|
engine: arxiv
|
||||||
shortcut: arx
|
shortcut: arx
|
||||||
|
|
||||||
|
- name: avalw
|
||||||
|
engine: json_engine
|
||||||
|
shortcut: av
|
||||||
|
categories: general
|
||||||
|
paging: true
|
||||||
|
search_url: https://avalw.org/api/search?q={query}&page={pageno}&limit=10&tbm=all
|
||||||
|
results_query: results
|
||||||
|
url_query: url
|
||||||
|
title_query: title
|
||||||
|
content_query: snippet
|
||||||
|
thumbnail: image_url
|
||||||
|
disabled: true
|
||||||
|
inactive: true
|
||||||
|
about:
|
||||||
|
website: https://avalw.com
|
||||||
|
description: "Search engine from the Romanian news company AVALW S.R.L."
|
||||||
|
results: JSON
|
||||||
|
|
||||||
- name: ayo
|
- name: ayo
|
||||||
engine: xpath
|
engine: xpath
|
||||||
categories: general
|
categories: general
|
||||||
@@ -3278,6 +3296,14 @@ engines:
|
|||||||
# brave_category: goggles
|
# brave_category: goggles
|
||||||
# Goggles: # required! This should be a URL ending in .goggle
|
# Goggles: # required! This should be a URL ending in .goggle
|
||||||
|
|
||||||
|
- name: exaapi
|
||||||
|
engine: exaapi
|
||||||
|
shortcut: exa
|
||||||
|
api_key: ""
|
||||||
|
search_type: auto
|
||||||
|
content_mode: highlights
|
||||||
|
inactive: true
|
||||||
|
|
||||||
- name: lib.rs
|
- name: lib.rs
|
||||||
shortcut: lrs
|
shortcut: lrs
|
||||||
engine: lib_rs
|
engine: lib_rs
|
||||||
|
|||||||
8
searx/static/themes/simple/chunk/Bc8fcwWx.min.js
vendored
Normal file
8
searx/static/themes/simple/chunk/Bc8fcwWx.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
searx/static/themes/simple/chunk/BfLIj3Of.min.js
vendored
Normal file
15
searx/static/themes/simple/chunk/BfLIj3Of.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
searx/static/themes/simple/chunk/BuurKv-k.min.js
vendored
Normal file
2
searx/static/themes/simple/chunk/BuurKv-k.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
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.`)}}};export{e as t};
|
||||||
|
//# sourceMappingURL=BuurKv-k.min.js.map
|
||||||
1
searx/static/themes/simple/chunk/BuurKv-k.min.js.map
Normal file
1
searx/static/themes/simple/chunk/BuurKv-k.min.js.map
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"BuurKv-k.min.js","names":[],"sources":["../../../../../client/simple/src/js/Plugin.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/**\n * Base class for client-side plugins.\n *\n * @remarks\n * Handle conditional loading of the plugin in:\n *\n * - client/simple/src/js/router.ts\n *\n * @abstract\n */\nexport abstract class Plugin {\n /**\n * Plugin name.\n */\n protected readonly id: string;\n\n /**\n * @remarks\n * Don't hold references of this instance outside the class.\n */\n protected constructor(id: string) {\n this.id = id;\n\n queueMicrotask(() => this.invoke());\n }\n\n private async invoke(): Promise<void> {\n try {\n console.debug(`[PLUGIN] ${this.id}: Running...`);\n const result = await this.run();\n if (!result) return;\n\n console.debug(`[PLUGIN] ${this.id}: Running post-exec...`);\n // @ts-expect-error\n void (await this.post(result as NonNullable<Awaited<ReturnType<this[\"run\"]>>>));\n } catch (error) {\n console.error(`[PLUGIN] ${this.id}:`, error);\n } finally {\n console.debug(`[PLUGIN] ${this.id}: Done.`);\n }\n }\n\n /**\n * Plugin goes here.\n *\n * @remarks\n * The plugin is already loaded at this point. If you wish to execute\n * conditions to exit early, consider moving the logic to:\n *\n * - client/simple/src/js/router.ts\n *\n * ...to avoid unnecessarily loading this plugin on the client.\n */\n protected abstract run(): Promise<unknown>;\n\n /**\n * Post-execution hook.\n *\n * @remarks\n * The hook is only executed if `#run()` returns a truthy value.\n */\n // @ts-expect-error\n protected abstract post(result: NonNullable<Awaited<ReturnType<this[\"run\"]>>>): Promise<void>;\n}\n"],"mappings":"AAYA,IAAsB,EAAtB,KAA6B,CAI3B,GAMA,YAAsB,EAAY,CAChC,KAAK,GAAK,EAEV,mBAAqB,KAAK,OAAO,CAAC,CACpC,CAEA,MAAc,QAAwB,CACpC,GAAI,CACF,QAAQ,MAAM,YAAY,KAAK,GAAG,aAAa,EAC/C,IAAM,EAAS,MAAM,KAAK,IAAI,EAC9B,GAAI,CAAC,EAAQ,OAEb,QAAQ,MAAM,YAAY,KAAK,GAAG,uBAAuB,EAEzD,MAAY,KAAK,KAAK,CAAuD,CAC/E,OAAS,EAAO,CACd,QAAQ,MAAM,YAAY,KAAK,GAAG,GAAI,CAAK,CAC7C,QAAU,CACR,QAAQ,MAAM,YAAY,KAAK,GAAG,QAAQ,CAC5C,CACF,CAuBF"}
|
||||||
15
searx/static/themes/simple/chunk/C8c7HJzp.min.js
vendored
15
searx/static/themes/simple/chunk/C8c7HJzp.min.js
vendored
File diff suppressed because one or more lines are too long
2
searx/static/themes/simple/chunk/D3mcqWOe.min.js
vendored
Normal file
2
searx/static/themes/simple/chunk/D3mcqWOe.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
import{t as e}from"./BuurKv-k.min.js";import{i as t,t as n}from"../sxng-core.min.js";import{t as r}from"./DK4yUVpy.min.js";import{t as i}from"./DcK-mo-Y.min.js";var a=class extends e{constructor(){super(`infiniteScroll`)}async run(){let e=i(`results`).classList.contains(`only_template_images`),a=`article.result:last-child`,o=document.createElement(`div`);o.className=`loader`;let s=async i=>{let a=document.querySelector(`#search`);r(a);let s=document.querySelector(`#pagination form.next_page`);r(s);let c=a.getAttribute(`action`);if(!c)throw Error(`Form action not defined`);let l=document.querySelector(`#pagination`);r(l),l.replaceChildren(o);try{let t=await(await n(`POST`,c,{body:new FormData(s)})).text();if(!t)return;let r=new DOMParser().parseFromString(t,`text/html`),a=r.querySelectorAll(`#urls article`),o=r.querySelector(`#pagination`);document.querySelector(`#pagination`)?.remove();let l=document.querySelector(`#urls`);if(!l)throw Error(`URLs element not found`);a.length>0&&!e&&l.appendChild(document.createElement(`hr`)),l.append(...a),o&&(document.querySelector(`#results`)?.appendChild(o),i())}catch(e){console.error(`Error loading next page:`,e);let n=Object.assign(document.createElement(`div`),{textContent:t.translations?.error_loading_next_page??`Error loading next page`,className:`dialog-error`});n.setAttribute(`role`,`alert`),document.querySelector(`#pagination`)?.replaceChildren(n)}},c=new IntersectionObserver(async e=>{let[t]=e;t?.isIntersecting&&(c.unobserve(t.target),await s(()=>{let e=document.querySelector(a);e&&c.observe(e)}))},{rootMargin:`320px`}),l=document.querySelector(a);l&&c.observe(l)}async post(){}};export{a as default};
|
||||||
|
//# sourceMappingURL=D3mcqWOe.min.js.map
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
import{a as e,i as t,t as n}from"../sxng-core.min.js";import{t as r}from"./DK4yUVpy.min.js";import{t as i}from"./DcK-mo-Y.min.js";var a=class extends e{constructor(){super(`infiniteScroll`)}async run(){let e=i(`results`).classList.contains(`only_template_images`),a=`article.result:last-child`,o=document.createElement(`div`);o.className=`loader`;let s=async i=>{let a=document.querySelector(`#search`);r(a);let s=document.querySelector(`#pagination form.next_page`);r(s);let c=a.getAttribute(`action`);if(!c)throw Error(`Form action not defined`);let l=document.querySelector(`#pagination`);r(l),l.replaceChildren(o);try{let t=await(await n(`POST`,c,{body:new FormData(s)})).text();if(!t)return;let r=new DOMParser().parseFromString(t,`text/html`),a=r.querySelectorAll(`#urls article`),o=r.querySelector(`#pagination`);document.querySelector(`#pagination`)?.remove();let l=document.querySelector(`#urls`);if(!l)throw Error(`URLs element not found`);a.length>0&&!e&&l.appendChild(document.createElement(`hr`)),l.append(...a),o&&(document.querySelector(`#results`)?.appendChild(o),i())}catch(e){console.error(`Error loading next page:`,e);let n=Object.assign(document.createElement(`div`),{textContent:t.translations?.error_loading_next_page??`Error loading next page`,className:`dialog-error`});n.setAttribute(`role`,`alert`),document.querySelector(`#pagination`)?.replaceChildren(n)}},c=new IntersectionObserver(async e=>{let[t]=e;t?.isIntersecting&&(c.unobserve(t.target),await s(()=>{let e=document.querySelector(a);e&&c.observe(e)}))},{rootMargin:`320px`}),l=document.querySelector(a);l&&c.observe(l)}async post(){}};export{a as default};
|
|
||||||
//# sourceMappingURL=DpvWr1cn.min.js.map
|
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"_BuurKv-k.min.js": {
|
||||||
|
"file": "chunk/BuurKv-k.min.js",
|
||||||
|
"name": "plugin"
|
||||||
|
},
|
||||||
"_DK4yUVpy.min.js": {
|
"_DK4yUVpy.min.js": {
|
||||||
"file": "chunk/DK4yUVpy.min.js",
|
"file": "chunk/DK4yUVpy.min.js",
|
||||||
"name": "assertelement"
|
"name": "assertelement"
|
||||||
@@ -77,33 +81,34 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/js/plugin/Calculator.ts": {
|
"src/js/plugin/Calculator.ts": {
|
||||||
"file": "chunk/C8c7HJzp.min.js",
|
"file": "chunk/BfLIj3Of.min.js",
|
||||||
"name": "calculator",
|
"name": "calculator",
|
||||||
"src": "src/js/plugin/Calculator.ts",
|
"src": "src/js/plugin/Calculator.ts",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"src/js/index.ts",
|
"_BuurKv-k.min.js",
|
||||||
"_DcK-mo-Y.min.js"
|
"_DcK-mo-Y.min.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/js/plugin/InfiniteScroll.ts": {
|
"src/js/plugin/InfiniteScroll.ts": {
|
||||||
"file": "chunk/DpvWr1cn.min.js",
|
"file": "chunk/D3mcqWOe.min.js",
|
||||||
"name": "infinitescroll",
|
"name": "infinitescroll",
|
||||||
"src": "src/js/plugin/InfiniteScroll.ts",
|
"src": "src/js/plugin/InfiniteScroll.ts",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
"_BuurKv-k.min.js",
|
||||||
"src/js/index.ts",
|
"src/js/index.ts",
|
||||||
"_DK4yUVpy.min.js",
|
"_DK4yUVpy.min.js",
|
||||||
"_DcK-mo-Y.min.js"
|
"_DcK-mo-Y.min.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/js/plugin/MapView.ts": {
|
"src/js/plugin/MapView.ts": {
|
||||||
"file": "chunk/BnnvKC7b.min.js",
|
"file": "chunk/Bc8fcwWx.min.js",
|
||||||
"name": "mapview",
|
"name": "mapview",
|
||||||
"src": "src/js/plugin/MapView.ts",
|
"src": "src/js/plugin/MapView.ts",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"src/js/index.ts"
|
"_BuurKv-k.min.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"sxng-mapview.min.css"
|
"sxng-mapview.min.css"
|
||||||
|
|||||||
4
searx/static/themes/simple/sxng-core.min.js
vendored
4
searx/static/themes/simple/sxng-core.min.js
vendored
@@ -1,3 +1,3 @@
|
|||||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./chunk/BnnvKC7b.min.js","./sxng-mapview.min.css","./chunk/DpvWr1cn.min.js","./chunk/DK4yUVpy.min.js","./chunk/DcK-mo-Y.min.js","./chunk/C8c7HJzp.min.js","./chunk/C93hSkpT.min.js","./chunk/5Ako-qGW.min.js","./chunk/DvCYLbJr.min.js","./chunk/od7pNHfk.min.js","./chunk/e2-9fzwE.min.js"])))=>i.map(i=>d[i]);
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./chunk/Bc8fcwWx.min.js","./chunk/BuurKv-k.min.js","./sxng-mapview.min.css","./chunk/D3mcqWOe.min.js","./chunk/DK4yUVpy.min.js","./chunk/DcK-mo-Y.min.js","./chunk/BfLIj3Of.min.js","./chunk/C93hSkpT.min.js","./chunk/5Ako-qGW.min.js","./chunk/DvCYLbJr.min.js","./chunk/od7pNHfk.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}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=p(t,n),t=s(t),t in m)return;m[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:f,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.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/BnnvKC7b.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/C8c7HJzp.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/od7pNHfk.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};
|
var e={index:`index`,results:`results`,preferences:`preferences`,unknown:`unknown`},t={closeDetail:void 0,scrollPageToSelected:void 0,selectImage:void 0,selectNext:void 0,selectPrevious:void 0},n=()=>{let t=document.querySelector(`meta[name="endpoint"]`)?.getAttribute(`content`);return t&&t in e?t:e.unknown},r=()=>{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),{}}},i=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},a=(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)},o=(e,t)=>{for(let e of t?.on??[])if(!e)return;document.readyState===`loading`?a(`DOMContentLoaded`,document,e,{once:!0}):e()},s=n(),c=r(),l=(e,t)=>{u(t)&&e()},u=e=>{switch(e.on){case`global`:return!0;case`endpoint`:return!!e.where.includes(s)}},d=`modulepreload`,f=function(e,t){return new URL(e,t).href},p={},m=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}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=f(t,n),t=s(t),t in p)return;p[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:d,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.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)})};o(()=>{document.documentElement.classList.remove(`no-js`),document.documentElement.classList.add(`js`),a(`click`,`.close`,function(){this.parentNode?.classList.add(`invisible`)}),a(`click`,`.searxng_init_map`,async function(t){t.preventDefault(),this.classList.remove(`searxng_init_map`),l(()=>m(async()=>{let{default:e}=await import(`./chunk/Bc8fcwWx.min.js`);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url).then(({default:e})=>new e(this)),{on:`endpoint`,where:[e.results]})}),c.plugins?.includes(`infiniteScroll`)&&l(()=>m(async()=>{let{default:e}=await import(`./chunk/D3mcqWOe.min.js`);return{default:e}},__vite__mapDeps([3,1,4,5]),import.meta.url).then(({default:e})=>new e),{on:`endpoint`,where:[e.results]}),c.plugins?.includes(`calculator`)&&l(()=>m(async()=>{let{default:e}=await import(`./chunk/BfLIj3Of.min.js`);return{default:e}},__vite__mapDeps([6,1,5,4]),import.meta.url).then(({default:e})=>new e),{on:`endpoint`,where:[e.results]})}),o(()=>{m(()=>import(`./chunk/C93hSkpT.min.js`),__vite__mapDeps([7,4]),import.meta.url),m(()=>import(`./chunk/5Ako-qGW.min.js`),__vite__mapDeps([8,5,4]),import.meta.url),c.autocomplete&&m(()=>import(`./chunk/DvCYLbJr.min.js`),__vite__mapDeps([9,4]),import.meta.url)},{on:[s===e.index]}),o(()=>{m(()=>import(`./chunk/C93hSkpT.min.js`),__vite__mapDeps([7,4]),import.meta.url),m(()=>import(`./chunk/od7pNHfk.min.js`),__vite__mapDeps([10,4]),import.meta.url),m(()=>import(`./chunk/5Ako-qGW.min.js`),__vite__mapDeps([8,5,4]),import.meta.url),c.autocomplete&&m(()=>import(`./chunk/DvCYLbJr.min.js`),__vite__mapDeps([9,4]),import.meta.url)},{on:[s===e.results]}),o(()=>{m(()=>import(`./chunk/e2-9fzwE.min.js`),__vite__mapDeps([11,4]),import.meta.url)},{on:[s===e.preferences]});export{c as i,a as n,t as r,i as t};
|
||||||
//# sourceMappingURL=sxng-core.min.js.map
|
//# sourceMappingURL=sxng-core.min.js.map
|
||||||
File diff suppressed because one or more lines are too long
@@ -60,7 +60,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p class="result-filesize">{{ _label(_("Filesize"), result.filesize) }}</p>
|
<p class="result-filesize">{{ _label(_("Filesize"), result.filesize) }}</p>
|
||||||
<p class="result-source">{{ _label(_("Source"), result.source) }}</p>
|
<p class="result-source">{{ _label(_("Source"), result.source) }}</p>
|
||||||
<p class="result-engine">{{ _label(_("Engine"), result.engine) }}</p>
|
<p class="result-engines">{{ _label(_("Engines"), ", ".join(result.engines)) }}</p>
|
||||||
<p class="result-url"><span>{{ _("View source") }}:</span>{{- "" -}}
|
<p class="result-url"><span>{{ _("View source") }}:</span>{{- "" -}}
|
||||||
<a {{ _target(results_on_new_tab) }} href="{{ result.url }}">{{ result.url }}</a>
|
<a {{ _target(results_on_new_tab) }} href="{{ result.url }}">{{ result.url }}</a>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
Binary file not shown.
@@ -23,17 +23,16 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-19 05:08+0000\n"
|
"PO-Revision-Date: 2026-06-19 05:08+0000\n"
|
||||||
"Last-Translator: Raithlin <raithlin@noreply.codeberg.org>\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: af\n"
|
||||||
|
"Language-Team: Afrikaans "
|
||||||
|
"<https://translate.codeberg.org/projects/searxng/searxng/af/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -77,7 +76,7 @@ msgid "videos"
|
|||||||
msgstr "videos"
|
msgstr "videos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -551,7 +550,7 @@ msgstr "geantwoord"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Geen item gevind"
|
msgstr "Geen item gevind"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Bron"
|
msgstr "Bron"
|
||||||
@@ -647,7 +646,7 @@ msgstr "Genereer verskillende ewekansige waardes"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Bereken {func} van die opsies"
|
msgstr "Bereken {func} van die opsies"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Geplaas deur {author}"
|
msgstr "Geplaas deur {author}"
|
||||||
@@ -665,19 +664,19 @@ msgstr "{title} (UITGEDIEN)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Hierdie inskrywing was vervang deur"
|
msgstr "Hierdie inskrywing was vervang deur"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanaal"
|
msgstr "Kanaal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bitsnelheid"
|
msgstr "bitsnelheid"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "stemme"
|
msgstr "stemme"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klikke"
|
msgstr "klikke"
|
||||||
|
|
||||||
@@ -713,15 +712,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Die prent kon nie afgelaai word nie."
|
msgstr "Die prent kon nie afgelaai word nie."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Taal"
|
msgstr "Taal"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "boekgradering"
|
msgstr "boekgradering"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Lêer kwaliteit"
|
msgstr "Lêer kwaliteit"
|
||||||
|
|
||||||
@@ -1014,6 +1013,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privaatheid"
|
msgstr "Privaatheid"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Enjins"
|
msgstr "Enjins"
|
||||||
|
|
||||||
@@ -1656,10 +1656,6 @@ msgstr "Beeldformate"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "oorspronklike formaat"
|
msgstr "oorspronklike formaat"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Enjin"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Bekyk bron"
|
msgstr "Bekyk bron"
|
||||||
@@ -2166,3 +2162,7 @@ msgstr "versteek video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formaat"
|
#~ msgstr "Formaat"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Enjin"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -31,20 +31,19 @@
|
|||||||
# nebras <nebras@noreply.codeberg.org>, 2026.
|
# nebras <nebras@noreply.codeberg.org>, 2026.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-28 18:07+0000\n"
|
"PO-Revision-Date: 2026-06-28 18:07+0000\n"
|
||||||
"Last-Translator: nebras <nebras@noreply.codeberg.org>\n"
|
"Last-Translator: nebras <nebras@noreply.codeberg.org>\n"
|
||||||
"Language-Team: Arabic <https://translate.codeberg.org/projects/searxng/"
|
|
||||||
"searxng/ar/>\n"
|
|
||||||
"Language: ar\n"
|
"Language: ar\n"
|
||||||
|
"Language-Team: Arabic "
|
||||||
|
"<https://translate.codeberg.org/projects/searxng/searxng/ar/>\n"
|
||||||
|
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
|
||||||
|
"n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
|
||||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -88,7 +87,7 @@ msgid "videos"
|
|||||||
msgstr "ڤيديوهات"
|
msgstr "ڤيديوهات"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "إذاعة"
|
msgstr "إذاعة"
|
||||||
|
|
||||||
@@ -562,7 +561,7 @@ msgstr "تمت الإجابة"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "لم يتم العثور على عنصر"
|
msgstr "لم يتم العثور على عنصر"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "مصدر"
|
msgstr "مصدر"
|
||||||
@@ -658,7 +657,7 @@ msgstr "توليد قِيم عشوائية مختلفة"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "حساب {func} من الحجج"
|
msgstr "حساب {func} من الحجج"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "منشور بواسطة {author}"
|
msgstr "منشور بواسطة {author}"
|
||||||
@@ -676,19 +675,19 @@ msgstr "{title} (قديم)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "تم استبدال هذا الإدخال بـ"
|
msgstr "تم استبدال هذا الإدخال بـ"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "القناة"
|
msgstr "القناة"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "معدل البت"
|
msgstr "معدل البت"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "تصويتات"
|
msgstr "تصويتات"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "نقرات"
|
msgstr "نقرات"
|
||||||
|
|
||||||
@@ -722,15 +721,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "لا يمكن تنزيل الصورة."
|
msgstr "لا يمكن تنزيل الصورة."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "اللغة"
|
msgstr "اللغة"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "تقييم الكتاب"
|
msgstr "تقييم الكتاب"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "جودة الملف"
|
msgstr "جودة الملف"
|
||||||
|
|
||||||
@@ -1022,6 +1021,7 @@ msgid "Privacy"
|
|||||||
msgstr "الخصوصية"
|
msgstr "الخصوصية"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "المحركات"
|
msgstr "المحركات"
|
||||||
|
|
||||||
@@ -1661,10 +1661,6 @@ msgstr "صيغ الصور"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "الصيغة الاصلية"
|
msgstr "الصيغة الاصلية"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "محرك"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "عرض المصدر"
|
msgstr "عرض المصدر"
|
||||||
@@ -2404,3 +2400,7 @@ msgstr "إخفاء الفيديو"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "صيغة"
|
#~ msgstr "صيغة"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "محرك"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -21,18 +21,19 @@
|
|||||||
# muha7a <muha7a@noreply.codeberg.org>, 2025.
|
# muha7a <muha7a@noreply.codeberg.org>, 2025.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
"PO-Revision-Date: 2026-07-17 12:20+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
||||||
|
"Language-Team: Bulgarian <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/bg/>\n"
|
||||||
"Language: bg\n"
|
"Language: bg\n"
|
||||||
"Language-Team: Bulgarian "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/bg/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 2026.6.1\n"
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -76,7 +77,7 @@ msgid "videos"
|
|||||||
msgstr "видео"
|
msgstr "видео"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "радио"
|
msgstr "радио"
|
||||||
|
|
||||||
@@ -550,7 +551,7 @@ msgstr "Отговорено"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Не е намерен артикул"
|
msgstr "Не е намерен артикул"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Източник"
|
msgstr "Източник"
|
||||||
@@ -646,7 +647,7 @@ msgstr "Генерирайте различни произволни стойн
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Изчислете {func} на аргументите"
|
msgstr "Изчислете {func} на аргументите"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -664,19 +665,19 @@ msgstr "{title} (ОСТАРЯЛО)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Този запис е заменен от"
|
msgstr "Този запис е заменен от"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Канал"
|
msgstr "Канал"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "Скорост"
|
msgstr "Скорост"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "Гласове"
|
msgstr "Гласове"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "клика"
|
msgstr "клика"
|
||||||
|
|
||||||
@@ -712,15 +713,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Снимката не може да бъде свалена."
|
msgstr "Снимката не може да бъде свалена."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Език"
|
msgstr "Език"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Рейтинг на книги"
|
msgstr "Рейтинг на книги"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Качество на файл"
|
msgstr "Качество на файл"
|
||||||
|
|
||||||
@@ -1006,6 +1007,7 @@ msgid "Privacy"
|
|||||||
msgstr "Поверителност"
|
msgstr "Поверителност"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Търсачки"
|
msgstr "Търсачки"
|
||||||
|
|
||||||
@@ -1015,7 +1017,7 @@ msgstr "Използвани търсачки в момента"
|
|||||||
|
|
||||||
#: searx/templates/simple/preferences.html:246
|
#: searx/templates/simple/preferences.html:246
|
||||||
msgid "Special Queries"
|
msgid "Special Queries"
|
||||||
msgstr "Специялни Запитвания"
|
msgstr "Специални Запитвания"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:254
|
#: searx/templates/simple/preferences.html:254
|
||||||
msgid "Cookies"
|
msgid "Cookies"
|
||||||
@@ -1657,10 +1659,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Търсачка"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Покажи източник"
|
msgstr "Покажи източник"
|
||||||
@@ -2404,3 +2402,5 @@ msgstr "скрий видеото"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Формат"
|
#~ msgstr "Формат"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Търсачка"
|
||||||
|
|||||||
Binary file not shown.
@@ -29,7 +29,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
||||||
"Language: bn\n"
|
"Language: bn\n"
|
||||||
@@ -82,7 +82,7 @@ msgid "videos"
|
|||||||
msgstr "ভিডিও"
|
msgstr "ভিডিও"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "বেতার"
|
msgstr "বেতার"
|
||||||
|
|
||||||
@@ -556,7 +556,7 @@ msgstr "উত্তরকৃত"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "কোন আইটেম পাওয়া যায়নি"
|
msgstr "কোন আইটেম পাওয়া যায়নি"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "উৎস"
|
msgstr "উৎস"
|
||||||
@@ -652,7 +652,7 @@ msgstr "বিভিন্ন এলোমেলো মান তৈরি ক
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "{func} এই আদেশ কম্পিউট করো"
|
msgstr "{func} এই আদেশ কম্পিউট করো"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -670,19 +670,19 @@ msgstr "{title} (অচল)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "এই এনট্রিটি দ্বারা বাতিল করা হয়েছে৷"
|
msgstr "এই এনট্রিটি দ্বারা বাতিল করা হয়েছে৷"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "চ্যানেল"
|
msgstr "চ্যানেল"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "বিটরেট"
|
msgstr "বিটরেট"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "ভোট"
|
msgstr "ভোট"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "ক্লিক সংখ্যা"
|
msgstr "ক্লিক সংখ্যা"
|
||||||
|
|
||||||
@@ -717,15 +717,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "ছবিটি ডাউনলোড করা যায়নি ।"
|
msgstr "ছবিটি ডাউনলোড করা যায়নি ।"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "ভাষা"
|
msgstr "ভাষা"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "বই পর্যালোচনা"
|
msgstr "বই পর্যালোচনা"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "নথি মান"
|
msgstr "নথি মান"
|
||||||
|
|
||||||
@@ -1013,6 +1013,7 @@ msgid "Privacy"
|
|||||||
msgstr "গোপনীয়তা"
|
msgstr "গোপনীয়তা"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "ইঞ্জিন"
|
msgstr "ইঞ্জিন"
|
||||||
|
|
||||||
@@ -1649,10 +1650,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "ইঞ্জিন"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "উৎস দেখুন"
|
msgstr "উৎস দেখুন"
|
||||||
@@ -2162,3 +2159,6 @@ msgstr "ভিডিও লুকিয়ে ফেলুন"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "সজ্জা"
|
#~ msgstr "সজ্জা"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "ইঞ্জিন"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
||||||
"Language: bo\n"
|
"Language: bo\n"
|
||||||
@@ -66,7 +66,7 @@ msgid "videos"
|
|||||||
msgstr "བརྙན་ཟློས།"
|
msgstr "བརྙན་ཟློས།"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -540,7 +540,7 @@ msgstr ""
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
|
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -636,7 +636,7 @@ msgstr "ངེས་མེད་གྲངས་ཀ་ཁ་ཤས་ཐོབ་
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -654,19 +654,19 @@ msgstr ""
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "འཚོལ་བྱང་འདི་གཞན་གྱིས་ཚབ་བྱེད་འདུག"
|
msgstr "འཚོལ་བྱང་འདི་གཞན་གྱིས་ཚབ་བྱེད་འདུག"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -694,15 +694,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -980,6 +980,7 @@ msgid "Privacy"
|
|||||||
msgstr "མི་སྒེར་གསང་དོན།"
|
msgstr "མི་སྒེར་གསང་དོན།"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "སྒུལ་བྱེད།"
|
msgstr "སྒུལ་བྱེད།"
|
||||||
|
|
||||||
@@ -1606,10 +1607,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "ཡོངས་ཁུངས་ལ་ལྟ།"
|
msgstr "ཡོངས་ཁུངས་ལ་ལྟ།"
|
||||||
@@ -2295,3 +2292,6 @@ msgstr "རྙན་ཟློས་སྦས།"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -29,19 +29,18 @@
|
|||||||
# MaCl0wSt <macl0wst@noreply.codeberg.org>, 2026.
|
# MaCl0wSt <macl0wst@noreply.codeberg.org>, 2026.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
|
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\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: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -85,7 +84,7 @@ msgid "videos"
|
|||||||
msgstr "vídeos"
|
msgstr "vídeos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -559,7 +558,7 @@ msgstr "contestat"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "No s'ha trobat cap element"
|
msgstr "No s'ha trobat cap element"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Origen"
|
msgstr "Origen"
|
||||||
@@ -655,7 +654,7 @@ msgstr "Genera diferents valors aleatoris"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -673,19 +672,19 @@ msgstr "{title} (OBSOLET)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Aquesta entrada ha estat substituïda per"
|
msgstr "Aquesta entrada ha estat substituïda per"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Canal"
|
msgstr "Canal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "tasa de bits"
|
msgstr "tasa de bits"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "vots"
|
msgstr "vots"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "clics"
|
msgstr "clics"
|
||||||
|
|
||||||
@@ -720,15 +719,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "No s'ha pogut baixar la imatge."
|
msgstr "No s'ha pogut baixar la imatge."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Llengua"
|
msgstr "Llengua"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Valoració de llibre"
|
msgstr "Valoració de llibre"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Qualitat del fitxer"
|
msgstr "Qualitat del fitxer"
|
||||||
|
|
||||||
@@ -1013,6 +1012,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privadesa"
|
msgstr "Privadesa"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Motors de cerca"
|
msgstr "Motors de cerca"
|
||||||
|
|
||||||
@@ -1658,10 +1658,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "format original"
|
msgstr "format original"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Cercador"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Veure el codi font"
|
msgstr "Veure el codi font"
|
||||||
@@ -2424,3 +2420,7 @@ msgstr "oculta el vídeo"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Format"
|
#~ msgstr "Format"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Cercador"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -25,20 +25,19 @@
|
|||||||
# radekjuthner <radekjuthner@noreply.codeberg.org>, 2025.
|
# radekjuthner <radekjuthner@noreply.codeberg.org>, 2025.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
|
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
|
||||||
"Last-Translator: Fjuro <fjuro@noreply.codeberg.org>\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: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=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"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -82,7 +81,7 @@ msgid "videos"
|
|||||||
msgstr "videa"
|
msgstr "videa"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "rádio"
|
msgstr "rádio"
|
||||||
|
|
||||||
@@ -556,7 +555,7 @@ msgstr "zodpovězené"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Nic nenalezeno"
|
msgstr "Nic nenalezeno"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "zdroj"
|
msgstr "zdroj"
|
||||||
@@ -652,7 +651,7 @@ msgstr "Generování náhodných hodnot"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Vypočítat {func} argumentů"
|
msgstr "Vypočítat {func} argumentů"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Autor: {author}"
|
msgstr "Autor: {author}"
|
||||||
@@ -670,19 +669,19 @@ msgstr "{title} (ZASTARALÉ)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Tato položka byla nahrazena položkou"
|
msgstr "Tato položka byla nahrazena položkou"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanál"
|
msgstr "Kanál"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "datový tok"
|
msgstr "datový tok"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "hlasy"
|
msgstr "hlasy"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "kliknutí"
|
msgstr "kliknutí"
|
||||||
|
|
||||||
@@ -717,15 +716,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Obrázek se nepodařilo stáhnout."
|
msgstr "Obrázek se nepodařilo stáhnout."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Jazyk"
|
msgstr "Jazyk"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Hodnocení knih"
|
msgstr "Hodnocení knih"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Množství souborů"
|
msgstr "Množství souborů"
|
||||||
|
|
||||||
@@ -1016,6 +1015,7 @@ msgid "Privacy"
|
|||||||
msgstr "Soukromí"
|
msgstr "Soukromí"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Vyhledávače"
|
msgstr "Vyhledávače"
|
||||||
|
|
||||||
@@ -1659,10 +1659,6 @@ msgstr "Formáty obrázků"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "původní formát"
|
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:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Zobrazit zdroj"
|
msgstr "Zobrazit zdroj"
|
||||||
@@ -2410,3 +2406,7 @@ msgstr "skrýt video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formát"
|
#~ msgstr "Formát"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Vyhledávač"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -20,7 +20,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
||||||
"Language: cy\n"
|
"Language: cy\n"
|
||||||
@@ -74,7 +74,7 @@ msgid "videos"
|
|||||||
msgstr "fideos"
|
msgstr "fideos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -548,7 +548,7 @@ msgstr "wedi'i ateb"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Ni chanfuwyd eitem"
|
msgstr "Ni chanfuwyd eitem"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Ffynhonnell"
|
msgstr "Ffynhonnell"
|
||||||
@@ -644,7 +644,7 @@ msgstr "Cynhyrchu gwahanol werthoedd ar hap"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -662,19 +662,19 @@ msgstr "{title} (OBSOLETE)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Mae'r cofnod hwn wedi ei ddisodli gan"
|
msgstr "Mae'r cofnod hwn wedi ei ddisodli gan"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Sianel"
|
msgstr "Sianel"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "cyfradd didau"
|
msgstr "cyfradd didau"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "pleidleisiau"
|
msgstr "pleidleisiau"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "cliciau"
|
msgstr "cliciau"
|
||||||
|
|
||||||
@@ -710,15 +710,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Doedd dim modd islwytho'r ddelwedd."
|
msgstr "Doedd dim modd islwytho'r ddelwedd."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Iaith"
|
msgstr "Iaith"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Gradd llyfr"
|
msgstr "Gradd llyfr"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "ansawdd ffeil"
|
msgstr "ansawdd ffeil"
|
||||||
|
|
||||||
@@ -1003,6 +1003,7 @@ msgid "Privacy"
|
|||||||
msgstr "Preifatrwydd"
|
msgstr "Preifatrwydd"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Peiriannau"
|
msgstr "Peiriannau"
|
||||||
|
|
||||||
@@ -1638,10 +1639,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Peiriant"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Gweld y ffynhonnell"
|
msgstr "Gweld y ffynhonnell"
|
||||||
@@ -2363,3 +2360,6 @@ msgstr "cuddio'r fideo"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Fformat"
|
#~ msgstr "Fformat"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Peiriant"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -17,19 +17,18 @@
|
|||||||
# return42 <return42@noreply.codeberg.org>, 2025, 2026.
|
# return42 <return42@noreply.codeberg.org>, 2025, 2026.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
|
"PO-Revision-Date: 2026-06-16 07:07+0000\n"
|
||||||
"Last-Translator: AndersNordh <andersnordh@noreply.codeberg.org>\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: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -73,7 +72,7 @@ msgid "videos"
|
|||||||
msgstr "videoer"
|
msgstr "videoer"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
|
|
||||||
@@ -547,7 +546,7 @@ msgstr "svaret"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Intet fundet"
|
msgstr "Intet fundet"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Kilde"
|
msgstr "Kilde"
|
||||||
@@ -643,7 +642,7 @@ msgstr "Generér forskellige tilfældige værdier"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Beregn {func} af argumenterne"
|
msgstr "Beregn {func} af argumenterne"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Indsendt af {author}"
|
msgstr "Indsendt af {author}"
|
||||||
@@ -661,19 +660,19 @@ msgstr "{title} (FORÆLDET)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Denne værdi er blevet overskrevet af"
|
msgstr "Denne værdi er blevet overskrevet af"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanal"
|
msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "Bitrate"
|
msgstr "Bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "Stemmer"
|
msgstr "Stemmer"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "Klik"
|
msgstr "Klik"
|
||||||
|
|
||||||
@@ -709,15 +708,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Dette billede kunne ikke downloades."
|
msgstr "Dette billede kunne ikke downloades."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Sprog"
|
msgstr "Sprog"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Bogbedømmelse"
|
msgstr "Bogbedømmelse"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Filkvalitet"
|
msgstr "Filkvalitet"
|
||||||
|
|
||||||
@@ -1010,6 +1009,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privatliv"
|
msgstr "Privatliv"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Søgemaskiner"
|
msgstr "Søgemaskiner"
|
||||||
|
|
||||||
@@ -1655,10 +1655,6 @@ msgstr "Billedformater"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "originalt format"
|
msgstr "originalt format"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Maskine"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Vis kilde"
|
msgstr "Vis kilde"
|
||||||
@@ -2419,3 +2415,7 @@ msgstr "skjul video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Format"
|
#~ msgstr "Format"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Maskine"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -32,19 +32,18 @@
|
|||||||
# Serpensin <serpensin@noreply.codeberg.org>, 2026.
|
# Serpensin <serpensin@noreply.codeberg.org>, 2026.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
|
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\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: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -88,7 +87,7 @@ msgid "videos"
|
|||||||
msgstr "Videos"
|
msgstr "Videos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
|
|
||||||
@@ -562,7 +561,7 @@ msgstr "beantwortet"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Keine Einträge gefunden"
|
msgstr "Keine Einträge gefunden"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Quelle"
|
msgstr "Quelle"
|
||||||
@@ -658,7 +657,7 @@ msgstr "Erzeugt diverse Zufallswerte"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Berechne {func} zu den Argumenten"
|
msgstr "Berechne {func} zu den Argumenten"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Beitrag von {author}"
|
msgstr "Beitrag von {author}"
|
||||||
@@ -676,19 +675,19 @@ msgstr "{title} (OBSOLET)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Dieser Eintrag wurde überschrieben von"
|
msgstr "Dieser Eintrag wurde überschrieben von"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanal"
|
msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "Bitrate"
|
msgstr "Bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "Stimmen"
|
msgstr "Stimmen"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "Clicks"
|
msgstr "Clicks"
|
||||||
|
|
||||||
@@ -724,15 +723,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Das Bild konnte nicht heruntergeladen werden."
|
msgstr "Das Bild konnte nicht heruntergeladen werden."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Sprache"
|
msgstr "Sprache"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Buchbewertung"
|
msgstr "Buchbewertung"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Dateiqualität"
|
msgstr "Dateiqualität"
|
||||||
|
|
||||||
@@ -1031,6 +1030,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privatsphäre"
|
msgstr "Privatsphäre"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Suchmaschinen"
|
msgstr "Suchmaschinen"
|
||||||
|
|
||||||
@@ -1674,10 +1674,6 @@ msgstr "Bildformate"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "Originalformat"
|
msgstr "Originalformat"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Suchmaschine"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Seite besuchen"
|
msgstr "Seite besuchen"
|
||||||
@@ -2466,3 +2462,7 @@ msgstr "Video verstecken"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Format"
|
#~ msgstr "Format"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Suchmaschine"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2025-08-13 08:09+0000\n"
|
"PO-Revision-Date: 2025-08-13 08:09+0000\n"
|
||||||
"Last-Translator: ijxp <ijxp@noreply.codeberg.org>\n"
|
"Last-Translator: ijxp <ijxp@noreply.codeberg.org>\n"
|
||||||
"Language: dv\n"
|
"Language: dv\n"
|
||||||
@@ -63,7 +63,7 @@ msgid "videos"
|
|||||||
msgstr "ވީޑިޔޯތައް"
|
msgstr "ވީޑިޔޯތައް"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "ރޭޑިއޯ އިންނެވެ"
|
msgstr "ރޭޑިއޯ އިންނެވެ"
|
||||||
|
|
||||||
@@ -537,7 +537,7 @@ msgstr ""
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -633,7 +633,7 @@ msgstr ""
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -651,19 +651,19 @@ msgstr ""
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -691,15 +691,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -977,6 +977,7 @@ msgid "Privacy"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1601,10 +1602,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2026,3 +2023,6 @@ msgstr ""
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -23,19 +23,18 @@
|
|||||||
# gkalathas <gkalathas@noreply.codeberg.org>, 2025.
|
# gkalathas <gkalathas@noreply.codeberg.org>, 2025.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
|
"PO-Revision-Date: 2026-06-17 20:19+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\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: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -79,7 +78,7 @@ msgid "videos"
|
|||||||
msgstr "Βίντεο"
|
msgstr "Βίντεο"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "ράδιο"
|
msgstr "ράδιο"
|
||||||
|
|
||||||
@@ -553,7 +552,7 @@ msgstr "απάντησε"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Δεν βρέθηκαν αντικείμενα"
|
msgstr "Δεν βρέθηκαν αντικείμενα"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Πηγή"
|
msgstr "Πηγή"
|
||||||
@@ -649,7 +648,7 @@ msgstr "Δημιουργία διαφορετικών τυχαίων τιμών"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Υπολογίστε τη {func} των ορισμάτων"
|
msgstr "Υπολογίστε τη {func} των ορισμάτων"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Δημοσιεύτηκε απο {author}"
|
msgstr "Δημοσιεύτηκε απο {author}"
|
||||||
@@ -667,19 +666,19 @@ msgstr "{title} (ΠΑΡΩΧΗΜΕΝΟΣ)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Αυτή η καταχώριση έχει αντικατασταθεί από"
|
msgstr "Αυτή η καταχώριση έχει αντικατασταθεί από"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Κανάλι"
|
msgstr "Κανάλι"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "ρυθμός μετάδοσης"
|
msgstr "ρυθμός μετάδοσης"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "ψήφους"
|
msgstr "ψήφους"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "κλικ"
|
msgstr "κλικ"
|
||||||
|
|
||||||
@@ -715,15 +714,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Αποτυχία μεταφόρτωσης εικόνας."
|
msgstr "Αποτυχία μεταφόρτωσης εικόνας."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Γλώσσα"
|
msgstr "Γλώσσα"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Βαθμολογία βιβλίου"
|
msgstr "Βαθμολογία βιβλίου"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Ποιότητα αρχείου"
|
msgstr "Ποιότητα αρχείου"
|
||||||
|
|
||||||
@@ -1016,6 +1015,7 @@ msgid "Privacy"
|
|||||||
msgstr "Ιδιωτικότητα"
|
msgstr "Ιδιωτικότητα"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Μηχανές"
|
msgstr "Μηχανές"
|
||||||
|
|
||||||
@@ -1669,10 +1669,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Μηχανή"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Προβολή πηγής"
|
msgstr "Προβολή πηγής"
|
||||||
@@ -2439,3 +2435,7 @@ msgstr "απόκρυψη βίντεο"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Μορφή"
|
#~ msgstr "Μορφή"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Μηχανή"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
|
"PO-Revision-Date: 2014-01-30 15:22+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
@@ -59,7 +59,7 @@ msgid "videos"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -533,7 +533,7 @@ msgstr ""
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -629,7 +629,7 @@ msgstr ""
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -647,19 +647,19 @@ msgstr ""
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -687,15 +687,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -973,6 +973,7 @@ msgid "Privacy"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1597,10 +1598,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2287,3 +2284,6 @@ msgstr ""
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -23,7 +23,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
"PO-Revision-Date: 2026-05-19 12:07+0000\n"
|
||||||
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
|
||||||
"Language: eo\n"
|
"Language: eo\n"
|
||||||
@@ -76,7 +76,7 @@ msgid "videos"
|
|||||||
msgstr "videoj"
|
msgstr "videoj"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -550,7 +550,7 @@ msgstr ""
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Nenio trovita"
|
msgstr "Nenio trovita"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Fonto"
|
msgstr "Fonto"
|
||||||
@@ -646,7 +646,7 @@ msgstr "Generi diversajn hazardajn valorojn"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -664,19 +664,19 @@ msgstr "{title} (MALAKTUALA)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Tiu ĉi enigo estis anstataŭigita per"
|
msgstr "Tiu ĉi enigo estis anstataŭigita per"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanalo"
|
msgstr "Kanalo"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bito-rapido"
|
msgstr "bito-rapido"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "voĉoj"
|
msgstr "voĉoj"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klakoj"
|
msgstr "klakoj"
|
||||||
|
|
||||||
@@ -711,15 +711,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "La bildo ne eblis elŝuti."
|
msgstr "La bildo ne eblis elŝuti."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Lingvo"
|
msgstr "Lingvo"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Taksado de libro"
|
msgstr "Taksado de libro"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Dosiera kvalito"
|
msgstr "Dosiera kvalito"
|
||||||
|
|
||||||
@@ -1002,6 +1002,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privateco"
|
msgstr "Privateco"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Serĉiloj"
|
msgstr "Serĉiloj"
|
||||||
|
|
||||||
@@ -1640,10 +1641,6 @@ msgstr ""
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Serĉilo"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Vidi fonton"
|
msgstr "Vidi fonton"
|
||||||
@@ -2375,3 +2372,6 @@ msgstr "kaŝi videojn"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formato"
|
#~ msgstr "Formato"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Serĉilo"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -52,8 +52,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-14 13:07+0000\n"
|
"PO-Revision-Date: 2026-07-23 22:07+0000\n"
|
||||||
"Last-Translator: gallegonovato <gallegonovato@noreply.codeberg.org>\n"
|
"Last-Translator: gallegonovato <gallegonovato@noreply.codeberg.org>\n"
|
||||||
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
|
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
|
||||||
"searxng/es/>\n"
|
"searxng/es/>\n"
|
||||||
@@ -78,7 +78,7 @@ msgstr "otro"
|
|||||||
#. CATEGORY_NAMES['FILES']
|
#. CATEGORY_NAMES['FILES']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
msgid "files"
|
msgid "files"
|
||||||
msgstr "files"
|
msgstr "archivos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['GENERAL']
|
#. CATEGORY_NAMES['GENERAL']
|
||||||
#: searx/searxng.msg
|
#: searx/searxng.msg
|
||||||
@@ -106,7 +106,7 @@ msgid "videos"
|
|||||||
msgstr "vídeos"
|
msgstr "vídeos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -580,7 +580,7 @@ msgstr "contestado"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Ningún artículo encontrado"
|
msgstr "Ningún artículo encontrado"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Fuente"
|
msgstr "Fuente"
|
||||||
@@ -676,7 +676,7 @@ msgstr "Generar varios valores aleatorios"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Calcular {func} de los argumentos"
|
msgstr "Calcular {func} de los argumentos"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Publicado por {author}"
|
msgstr "Publicado por {author}"
|
||||||
@@ -694,19 +694,19 @@ msgstr "{title} (OBSOLETO)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Esta entrada ha sido sustituida por"
|
msgstr "Esta entrada ha sido sustituida por"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Canal"
|
msgstr "Canal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bitrate"
|
msgstr "bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "votos"
|
msgstr "votos"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "clics"
|
msgstr "clics"
|
||||||
|
|
||||||
@@ -741,15 +741,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "No se pudo descargar la imagen."
|
msgstr "No se pudo descargar la imagen."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Idioma"
|
msgstr "Idioma"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Valoración del libro"
|
msgstr "Valoración del libro"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Calidad del archivo"
|
msgstr "Calidad del archivo"
|
||||||
|
|
||||||
@@ -1042,6 +1042,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privacidad"
|
msgstr "Privacidad"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Motores"
|
msgstr "Motores"
|
||||||
|
|
||||||
@@ -1688,10 +1689,6 @@ msgstr "Formatos de imagen"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "formato original"
|
msgstr "formato original"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Motor"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Ver fuente"
|
msgstr "Ver fuente"
|
||||||
@@ -2463,3 +2460,6 @@ msgstr "ocultar video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formato"
|
#~ msgstr "Formato"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Motor"
|
||||||
|
|||||||
Binary file not shown.
@@ -19,19 +19,18 @@
|
|||||||
# return42 <return42@noreply.codeberg.org>, 2025.
|
# return42 <return42@noreply.codeberg.org>, 2025.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-06-14 13:07+0000\n"
|
"PO-Revision-Date: 2026-06-14 13:07+0000\n"
|
||||||
"Last-Translator: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>\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: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"X-Generator: Weblate 2026.6.1\n"
|
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -75,7 +74,7 @@ msgid "videos"
|
|||||||
msgstr "videod"
|
msgstr "videod"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "raadio"
|
msgstr "raadio"
|
||||||
|
|
||||||
@@ -549,7 +548,7 @@ msgstr "vastatud"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Üksust ei leitud"
|
msgstr "Üksust ei leitud"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Allikas"
|
msgstr "Allikas"
|
||||||
@@ -645,7 +644,7 @@ msgstr "Genereeri erinevaid juhuslikke väärtusi"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Arvuta argumentidest {func}"
|
msgstr "Arvuta argumentidest {func}"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Postituse autor on {author}"
|
msgstr "Postituse autor on {author}"
|
||||||
@@ -663,19 +662,19 @@ msgstr "{title} (VANANENUD)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "See üksus on asendatud"
|
msgstr "See üksus on asendatud"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanal"
|
msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bitikiirus"
|
msgstr "bitikiirus"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "hääled"
|
msgstr "hääled"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klikid"
|
msgstr "klikid"
|
||||||
|
|
||||||
@@ -710,15 +709,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Pilti ei saanud alla laadida."
|
msgstr "Pilti ei saanud alla laadida."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Keel"
|
msgstr "Keel"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Raamatu hinnang"
|
msgstr "Raamatu hinnang"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Faili kvaliteet"
|
msgstr "Faili kvaliteet"
|
||||||
|
|
||||||
@@ -1011,6 +1010,7 @@ msgid "Privacy"
|
|||||||
msgstr "Privaatsus"
|
msgstr "Privaatsus"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Otsingumootorid"
|
msgstr "Otsingumootorid"
|
||||||
|
|
||||||
@@ -1653,10 +1653,6 @@ msgstr "Pildivormingud"
|
|||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "algne vorming"
|
msgstr "algne vorming"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Otsingumootor"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
msgstr "Vaata lähtekoodi"
|
msgstr "Vaata lähtekoodi"
|
||||||
@@ -2397,3 +2393,7 @@ msgstr "peida video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Vorming"
|
#~ msgstr "Vorming"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Otsingumootor"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -18,18 +18,19 @@
|
|||||||
# return42 <return42@noreply.codeberg.org>, 2025.
|
# return42 <return42@noreply.codeberg.org>, 2025.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: searx\n"
|
"Project-Id-Version: searx\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
"POT-Creation-Date: 2026-07-15 15:45+0000\n"
|
||||||
"PO-Revision-Date: 2026-05-01 07:50+0000\n"
|
"PO-Revision-Date: 2026-07-23 22:07+0000\n"
|
||||||
"Last-Translator: alexgabi <alexgabi@noreply.codeberg.org>\n"
|
"Last-Translator: alexgabi <alexgabi@noreply.codeberg.org>\n"
|
||||||
|
"Language-Team: Basque <https://translate.codeberg.org/projects/searxng/"
|
||||||
|
"searxng/eu/>\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
"Language-Team: Basque "
|
|
||||||
"<https://translate.codeberg.org/projects/searxng/searxng/eu/>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 2026.6.1\n"
|
||||||
"Generated-By: Babel 2.18.0\n"
|
"Generated-By: Babel 2.18.0\n"
|
||||||
|
|
||||||
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
#. CONSTANT_NAMES['NO_SUBGROUPING']
|
||||||
@@ -73,7 +74,7 @@ msgid "videos"
|
|||||||
msgstr "bideoak"
|
msgstr "bideoak"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "irratia"
|
msgstr "irratia"
|
||||||
|
|
||||||
@@ -547,7 +548,7 @@ msgstr "erantzunda"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Ez da elementurik aurkitu"
|
msgstr "Ez da elementurik aurkitu"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:258
|
#: searx/engines/qwant.py:286
|
||||||
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
#: searx/templates/simple/result_templates/images.html:62 searx/webapp.py:328
|
||||||
msgid "Source"
|
msgid "Source"
|
||||||
msgstr "Iturria"
|
msgstr "Iturria"
|
||||||
@@ -643,7 +644,7 @@ msgstr "Ausazko balio ezberdinak sortu"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Kalkulatu argumentuen {func}"
|
msgstr "Kalkulatu argumentuen {func}"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:107
|
#: searx/engines/boardreader.py:108
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "{author}-k argitaratuta"
|
msgstr "{author}-k argitaratuta"
|
||||||
@@ -661,19 +662,19 @@ msgstr "{title} (ZAHARKITUA)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Sarrera hau hurrengoarekin ordezkatu da"
|
msgstr "Sarrera hau hurrengoarekin ordezkatu da"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:260
|
#: searx/engines/qwant.py:288
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanala"
|
msgstr "Kanala"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:161
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bit emaria"
|
msgstr "bit emaria"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "botoak"
|
msgstr "botoak"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:164
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klikak"
|
msgstr "klikak"
|
||||||
|
|
||||||
@@ -708,15 +709,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Ezin izan da deskargatu irudia."
|
msgstr "Ezin izan da deskargatu irudia."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:79
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Hizkuntza"
|
msgstr "Hizkuntza"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Liburuaren balorazioa"
|
msgstr "Liburuaren balorazioa"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:82
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Fitxategiaren kalitatea"
|
msgstr "Fitxategiaren kalitatea"
|
||||||
|
|
||||||
@@ -1007,6 +1008,7 @@ msgid "Privacy"
|
|||||||
msgstr "Pribatutasuna"
|
msgstr "Pribatutasuna"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences.html:235
|
#: searx/templates/simple/preferences.html:235
|
||||||
|
#: searx/templates/simple/result_templates/images.html:63
|
||||||
msgid "Engines"
|
msgid "Engines"
|
||||||
msgstr "Bilatzaileak"
|
msgstr "Bilatzaileak"
|
||||||
|
|
||||||
@@ -1438,7 +1440,7 @@ msgstr "Gehienezko denbora"
|
|||||||
|
|
||||||
#: searx/templates/simple/preferences/favicon.html:2
|
#: searx/templates/simple/preferences/favicon.html:2
|
||||||
msgid "Favicon Resolver"
|
msgid "Favicon Resolver"
|
||||||
msgstr "Favicon Resolver"
|
msgstr "Favicon erabakitzailea"
|
||||||
|
|
||||||
#: searx/templates/simple/preferences/favicon.html:15
|
#: searx/templates/simple/preferences/favicon.html:15
|
||||||
msgid "Display favicons near search results"
|
msgid "Display favicons near search results"
|
||||||
@@ -1645,15 +1647,11 @@ msgstr "Ebazpena"
|
|||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:55
|
#: searx/templates/simple/result_templates/images.html:55
|
||||||
msgid "Image formats"
|
msgid "Image formats"
|
||||||
msgstr ""
|
msgstr "Irudi formatuak"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:56
|
#: searx/templates/simple/result_templates/images.html:56
|
||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr ""
|
msgstr "jatorrizko formatua"
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:63
|
|
||||||
msgid "Engine"
|
|
||||||
msgstr "Bilatzailea"
|
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:64
|
#: searx/templates/simple/result_templates/images.html:64
|
||||||
msgid "View source"
|
msgid "View source"
|
||||||
@@ -2395,3 +2393,5 @@ msgstr "ezkutatu bideoa"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formatua"
|
#~ msgstr "Formatua"
|
||||||
|
|
||||||
|
#~ msgid "Engine"
|
||||||
|
#~ msgstr "Bilatzailea"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user