mirror of
https://github.com/searxng/searxng.git
synced 2026-07-29 19:31:35 +00:00
Compare commits
1 Commits
master
...
b1fc49e357
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1fc49e357 |
152
.github/workflows/container.yml
vendored
152
.github/workflows/container.yml
vendored
@@ -25,21 +25,25 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
if: |
|
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
|
||||||
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.runner }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- runner: ubuntu-26.04
|
- arch: amd64
|
||||||
arch: amd64
|
march: amd64
|
||||||
- runner: ubuntu-26.04-arm
|
os: ubuntu-24.04
|
||||||
arch: arm64
|
emulation: false
|
||||||
- runner: ubuntu-26.04-arm
|
- arch: arm64
|
||||||
arch: armv7
|
march: arm64
|
||||||
|
os: ubuntu-24.04-arm
|
||||||
|
emulation: false
|
||||||
|
- arch: armv7
|
||||||
|
march: arm64
|
||||||
|
os: ubuntu-24.04-arm
|
||||||
|
emulation: true
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
packages: write
|
packages: write
|
||||||
@@ -49,25 +53,33 @@ jobs:
|
|||||||
git_url: ${{ steps.build.outputs.git_url }}
|
git_url: ${{ steps.build.outputs.git_url }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Login to GHCR
|
# yamllint disable rule:line-length
|
||||||
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
- name: Setup podman
|
||||||
with:
|
env:
|
||||||
registry: "ghcr.io"
|
PODMAN_VERSION: "v5.7.1"
|
||||||
username: "${{ github.repository_owner }}"
|
run: |
|
||||||
password: "${{ secrets.GITHUB_TOKEN }}"
|
sudo apt-get purge -y podman runc crun conmon
|
||||||
|
|
||||||
|
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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
ref: "${{ github.event.workflow_run.head_sha || github.sha }}"
|
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
fetch-depth: "0"
|
fetch-depth: "0"
|
||||||
|
|
||||||
@@ -79,51 +91,70 @@ 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 }}-${{ hashFiles('./requirements*.txt') }}"
|
key: "container-${{ matrix.arch }}-${{ steps.date.outputs.date }}-${{ 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-*/*"
|
||||||
|
|
||||||
- name: Build
|
- if: ${{ matrix.emulation }}
|
||||||
id: build
|
name: Setup QEMU
|
||||||
env:
|
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
|
||||||
OVERRIDE_ARCH: "${{ matrix.arch }}"
|
|
||||||
run: make container.build
|
|
||||||
|
|
||||||
test:
|
|
||||||
name: Test (${{ matrix.arch }})
|
|
||||||
runs-on: ${{ matrix.runner }}
|
|
||||||
needs: build
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- runner: ubuntu-26.04
|
|
||||||
arch: amd64
|
|
||||||
- runner: ubuntu-26.04-arm
|
|
||||||
arch: arm64
|
|
||||||
- runner: ubuntu-26.04-arm
|
|
||||||
arch: armv7
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.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
|
- name: Build
|
||||||
|
id: build
|
||||||
|
env:
|
||||||
|
OVERRIDE_ARCH: "${{ matrix.arch }}"
|
||||||
|
run: make podman.build
|
||||||
|
|
||||||
|
test:
|
||||||
|
name: Test (${{ matrix.arch }})
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
needs: build
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- arch: amd64
|
||||||
|
os: ubuntu-24.04
|
||||||
|
emulation: false
|
||||||
|
- arch: arm64
|
||||||
|
os: ubuntu-24.04-arm
|
||||||
|
emulation: false
|
||||||
|
- arch: armv7
|
||||||
|
os: ubuntu-24.04-arm
|
||||||
|
emulation: true
|
||||||
|
|
||||||
|
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
|
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
|
||||||
|
|
||||||
- name: Checkout
|
- name: Login to GHCR
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.0
|
||||||
with:
|
with:
|
||||||
ref: "${{ github.event.workflow_run.head_sha || github.sha }}"
|
registry: "ghcr.io"
|
||||||
persist-credentials: "false"
|
username: "${{ github.repository_owner }}"
|
||||||
|
password: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
env:
|
env:
|
||||||
@@ -134,7 +165,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-26.04-arm
|
runs-on: ubuntu-24.04-arm
|
||||||
needs:
|
needs:
|
||||||
- build
|
- build
|
||||||
- test
|
- test
|
||||||
@@ -143,25 +174,24 @@ jobs:
|
|||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Login to Docker Hub
|
- name: Checkout
|
||||||
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
registry: "docker.io"
|
persist-credentials: "false"
|
||||||
username: "${{ secrets.DOCKER_USER }}"
|
|
||||||
password: "${{ secrets.DOCKER_TOKEN }}"
|
|
||||||
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
|
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.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: Checkout
|
- name: Login to Docker Hub
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4.3.0
|
||||||
with:
|
with:
|
||||||
ref: "${{ github.event.workflow_run.head_sha || github.sha }}"
|
registry: "docker.io"
|
||||||
persist-credentials: "false"
|
username: "${{ secrets.DOCKER_USER }}"
|
||||||
|
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-26.04-arm
|
runs-on: ubuntu-24.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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
|
|
||||||
@@ -64,17 +64,23 @@ 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: "[mod] data: update searx.data - ${{ matrix.fetch }}"
|
title: "[data] update searx.data - ${{ matrix.fetch }}"
|
||||||
commit-message: "[mod] data: update searx.data - ${{ matrix.fetch }}"
|
commit-message: "[data] update searx.data - ${{ matrix.fetch }}"
|
||||||
branch: "ci-data-${{ matrix.fetch }}"
|
branch: "update_data_${{ matrix.fetch }}"
|
||||||
delete-branch: "true"
|
delete-branch: "true"
|
||||||
draft: "false"
|
draft: "false"
|
||||||
signoff: "false"
|
signoff: "false"
|
||||||
body: |
|
body: |
|
||||||
Update searx.data - ${{ matrix.fetch }}
|
[data] 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-26.04-arm
|
runs-on: ubuntu-24.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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
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: "[mod] docs: build from commit ${{ github.sha }}"
|
commit-message: "[doc] 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-26.04
|
runs-on: ubuntu-24.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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ matrix.python-version }}"
|
python-version: "${{ matrix.python-version }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: "false"
|
persist-credentials: "false"
|
||||||
|
|
||||||
@@ -59,24 +59,29 @@ jobs:
|
|||||||
|
|
||||||
theme:
|
theme:
|
||||||
name: Theme
|
name: Theme
|
||||||
runs-on: ubuntu-26.04-arm
|
runs-on: ubuntu-24.04-arm
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
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:
|
||||||
@@ -85,14 +90,6 @@ 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.event.workflow_run.conclusion == 'success' && github.repository_owner == 'searxng'
|
if: github.repository_owner == 'searxng' && github.event.workflow_run.conclusion == 'success'
|
||||||
name: Update
|
name: Update
|
||||||
runs-on: ubuntu-26.04-arm
|
runs-on: ubuntu-24.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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
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-26.04-arm
|
runs-on: ubuntu-24.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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "${{ env.PYTHON_VERSION }}"
|
python-version: "${{ env.PYTHON_VERSION }}"
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
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,17 +118,23 @@ 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: "[mod] i18n: update translations from Weblate"
|
title: "[l10n] update translations from Weblate"
|
||||||
commit-message: "[mod] i18n: update translations from Weblate"
|
commit-message: "[l10n] 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: |
|
||||||
Update translations from Weblate
|
[l10n] 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
Normal file
46
.github/workflows/security.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
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.5",
|
"@biomejs/biome": "2.5.2",
|
||||||
"@types/node": "^26.1.1",
|
"@types/node": "^26.1.0",
|
||||||
"browserslist": "^4.28.7",
|
"browserslist": "^4.28.4",
|
||||||
"browserslist-to-esbuild": "^2.1.1",
|
"browserslist-to-esbuild": "^2.1.1",
|
||||||
"edge.js": "^6.5.1",
|
"edge.js": "^6.5.1",
|
||||||
"less": "^4.8.0",
|
"less": "^4.6.7",
|
||||||
"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.1",
|
"stylelint": "^17.14.0",
|
||||||
"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.2",
|
"svgo": "^4.0.1",
|
||||||
"typescript": "~7.0.2",
|
"typescript": "~6.0.3",
|
||||||
"vite": "^8.1.5",
|
"vite": "^8.1.3",
|
||||||
"vite-bundle-analyzer": "^1.3.9"
|
"vite-bundle-analyzer": "^1.3.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,15 +112,6 @@ if [ "$(id -u)" -eq 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ENVs aliases
|
# ENVs aliases
|
||||||
# https://github.com/searxng/searxng/issues/5934
|
export GRANIAN_PORT="${SEARXNG_PORT:-$GRANIAN_PORT}"
|
||||||
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 their settings. If the user is to have the option of
|
deactivate this feature in his 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.
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
.. _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.37.0"
|
GECKODRIVER_VERSION="v0.36.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.46.0
|
selenium==4.45.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.9
|
granian[reload]==2.7.8
|
||||||
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.9
|
granian==2.7.8
|
||||||
granian[pname]==2.7.9
|
granian[pname]==2.7.8
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
certifi==2026.7.22
|
certifi==2026.6.17
|
||||||
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.27.0
|
typer==0.26.8
|
||||||
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 # 1h
|
MAINTENANCE_PERIOD: int = 60 * 60 # 2h
|
||||||
"""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,22 +458,12 @@ 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, expire FROM {table} WHERE key = ?"
|
sql = f"SELECT value 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
|
||||||
|
|
||||||
# Check if value is expired. It's possible that it's expired but has not
|
return self.deserialize(row[0])
|
||||||
# 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``.
|
||||||
|
|||||||
@@ -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, # 1h
|
MAINTENANCE_PERIOD=60 * 60, # 2h
|
||||||
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.fromisoformat(create_time.strip())
|
published_date = datetime.strptime(create_time.strip(), "%Y-%m-%d")
|
||||||
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.fromisoformat(eval_xpath_getindex(entry, xpath_published, 0).text.rstrip("Z"))
|
publishedDate = datetime.strptime(eval_xpath_getindex(entry, xpath_published, 0).text, "%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
|
||||||
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.fromisoformat(img_date)
|
publishedDate = datetime.strptime(img_date, "%Y-%m-%d %H:%M")
|
||||||
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.fromisoformat(item["date_published"].rstrip("Z")),
|
"publishedDate": datetime.strptime(item["date_published"], "%Y-%m-%dT%H:%M:%S.%fZ"),
|
||||||
"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.fromisoformat(result["Published"]),
|
publishedDate=datetime.strptime(result["Published"], "%Y-%m-%d %H:%M:%S"),
|
||||||
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.fromisoformat(result['recipe']['submissionDate'][:19])
|
publishedDate = datetime.strptime(result['recipe']['submissionDate'][:19], "%Y-%m-%dT%H:%M:%S")
|
||||||
|
|
||||||
content = [
|
content = [
|
||||||
f"Schwierigkeitsstufe (1-3): {recipe['difficulty']}",
|
f"Schwierigkeitsstufe (1-3): {recipe['difficulty']}",
|
||||||
|
|||||||
@@ -1,168 +0,0 @@
|
|||||||
# 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.fromisoformat(item["updated_at"].split("T")[0])
|
date = datetime.strptime(item["updated_at"].split("T")[0], "%Y-%m-%d")
|
||||||
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.fromisoformat(result["status_since"]),
|
publishedDate=datetime.strptime(result["status_since"], "%Y-%m-%d %H:%M:%S"),
|
||||||
metadata=f"Rank: {result['rank']} || {result['episode_count']} episodes",
|
metadata=f"Rank: {result['rank']} || {result['episode_count']} episodes",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -68,9 +68,7 @@ def _get_api_token(query: str) -> str:
|
|||||||
if cached_token:
|
if cached_token:
|
||||||
return cached_token
|
return cached_token
|
||||||
|
|
||||||
resp = get(
|
resp = get(f"{base_url}/search?q={query}", headers={"User-Agent": gen_useragent()})
|
||||||
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")
|
||||||
|
|
||||||
@@ -78,7 +76,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, expire=3 * 60)
|
CACHE.set("token", token)
|
||||||
return token
|
return token
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ def response(resp) -> EngineResults:
|
|||||||
|
|
||||||
published_date = None
|
published_date = None
|
||||||
try:
|
try:
|
||||||
published_date = datetime.fromisoformat(entry["createdAt"].rstrip("Z"))
|
published_date = datetime.strptime(entry["createdAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
||||||
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.fromisoformat(release_time)
|
published_date = datetime.strptime(release_time, "%Y-%m-%d")
|
||||||
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.fromisoformat(counts['published'][:19]),
|
'publishedDate': datetime.strptime(counts['published'][:19], '%Y-%m-%dT%H:%M:%S'),
|
||||||
'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.fromisoformat(result['post']['published'][:19]),
|
'publishedDate': datetime.strptime(result['post']['published'][:19], '%Y-%m-%dT%H:%M:%S'),
|
||||||
'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.fromisoformat(result['comment']['published'][:19]),
|
'publishedDate': datetime.strptime(result['comment']['published'][:19], '%Y-%m-%dT%H:%M:%S'),
|
||||||
'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.fromisoformat(result['created_at'][:10]),
|
'publishedDate': datetime.strptime(result['created_at'][:10], "%Y-%m-%d"),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
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.fromisoformat(item["cve"]["published"])
|
date = datetime.strptime(item["cve"]["published"], "%Y-%m-%dT%H:%M:%S.%f")
|
||||||
|
|
||||||
# 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.fromisoformat(release_time.split("T")[0])
|
release_date = datetime.strptime(release_time.split("T")[0], "%Y-%m-%d")
|
||||||
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.fromisoformat(result["created_at"]),
|
publishedDate=datetime.strptime(result["created_at"], "%Y-%m-%d %H:%M:%S"),
|
||||||
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"{pdia_base_url}/images/{result['objectID']}"),
|
'url': _clean_url(f"{about['website']}/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.fromisoformat(item.get('time'))
|
published_date = datetime.strptime(item.get('time'), "%Y-%m-%d")
|
||||||
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,7 +51,6 @@ 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,
|
||||||
@@ -106,19 +105,9 @@ 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"""
|
||||||
@@ -140,29 +129,24 @@ 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"],
|
||||||
# True would be encoded to "True", instead of "true", which makes the request
|
"display": True,
|
||||||
# easier to detect and block
|
"llm": True,
|
||||||
"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
|
||||||
@@ -179,8 +163,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("url") is not None:
|
if search_results.get("data", {}).get("error_data", {}).get("captchaUrl") is not None:
|
||||||
raise SearxEngineCaptchaException(suspended_time=0)
|
raise SearxEngineCaptchaException()
|
||||||
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"]))
|
||||||
@@ -318,7 +302,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
|||||||
from searx.utils import extr
|
from searx.utils import extr
|
||||||
|
|
||||||
resp = get(
|
resp = get(
|
||||||
base_url, # pyright: ignore[reportArgumentType]
|
about["website"], # 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.fromisoformat(p_date)
|
fixed_date = datetime.strptime(p_date, '%Y-%m-%dT%H:%M:%S%z')
|
||||||
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.fromisoformat(result["pubDate"])
|
publishedDate = datetime.strptime(result["pubDate"], "%Y-%m-%d")
|
||||||
else:
|
else:
|
||||||
publishedDate = None
|
publishedDate = None
|
||||||
|
|
||||||
|
|||||||
@@ -95,8 +95,7 @@ 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:
|
||||||
y, m, d = date_match.group(1).split("-")
|
return datetime.strptime(date_match.group(1), "%Y-%m-%d")
|
||||||
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.fromisoformat(entry['date'])
|
published_date = datetime.strptime(entry['date'], "%Y-%m-%d")
|
||||||
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.fromisoformat(record["publicationDate"])
|
published = datetime.strptime(record["publicationDate"], "%Y-%m-%d")
|
||||||
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.fromisoformat(item['date'][:19]),
|
'publishedDate': datetime.strptime(item['date'][:19], '%Y-%m-%dT%H:%M:%S'),
|
||||||
'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.fromisoformat(item['date'][:19]),
|
'publishedDate': datetime.strptime(item['date'][:19], '%Y-%m-%dT%H:%M:%S'),
|
||||||
'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 * 60) # cookie is valid for two months
|
CACHE.set("session", code, expire=60 * 24 * 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.fromisoformat(crawl_date)
|
crawl_date = datetime.strptime(crawl_date, '%Y-%m-%d')
|
||||||
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.fromisoformat(result['created_at']),
|
'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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 gen_useragent, html_to_text
|
from searx.utils import 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", headers={"User-Agent": gen_useragent()})
|
resp = get(f"{api_url}/revcontent/embed.js")
|
||||||
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,14 +89,12 @@ 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"].update(
|
params["headers"] = {
|
||||||
{
|
x_sid_header: x_sid_value,
|
||||||
x_sid_header: x_sid_value,
|
# required - we send a random longitude and latitude instead of the actual user location
|
||||||
# required - we send a random longitude and latitude instead of the actual user location
|
'x-lon': str(random.random() * 90),
|
||||||
"x-lon": str(round(random.random() * 90, 4)),
|
'x-lat': str(random.random() * 90),
|
||||||
"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.fromisoformat(result['created_at']),
|
'publishedDate': datetime.strptime(result['created_at'], '%Y-%m-%d %H:%M:%S'),
|
||||||
'img_format': result['file_type'],
|
'img_format': result['file_type'],
|
||||||
'filesize': humanize_bytes(result['file_size']),
|
'filesize': humanize_bytes(result['file_size']),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,12 +52,6 @@ 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,24 +477,6 @@ 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
|
||||||
@@ -3296,14 +3278,6 @@ 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
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
15
searx/static/themes/simple/chunk/BfLIj3Of.min.js
vendored
15
searx/static/themes/simple/chunk/BfLIj3Of.min.js
vendored
File diff suppressed because one or more lines are too long
8
searx/static/themes/simple/chunk/BnnvKC7b.min.js
vendored
Normal file
8
searx/static/themes/simple/chunk/BnnvKC7b.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
@@ -1,2 +0,0 @@
|
|||||||
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 +0,0 @@
|
|||||||
{"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
Normal file
15
searx/static/themes/simple/chunk/C8c7HJzp.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
@@ -1,2 +0,0 @@
|
|||||||
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
|
|
||||||
2
searx/static/themes/simple/chunk/DpvWr1cn.min.js
vendored
Normal file
2
searx/static/themes/simple/chunk/DpvWr1cn.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
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
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_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"
|
||||||
@@ -81,34 +77,33 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/js/plugin/Calculator.ts": {
|
"src/js/plugin/Calculator.ts": {
|
||||||
"file": "chunk/BfLIj3Of.min.js",
|
"file": "chunk/C8c7HJzp.min.js",
|
||||||
"name": "calculator",
|
"name": "calculator",
|
||||||
"src": "src/js/plugin/Calculator.ts",
|
"src": "src/js/plugin/Calculator.ts",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_BuurKv-k.min.js",
|
"src/js/index.ts",
|
||||||
"_DcK-mo-Y.min.js"
|
"_DcK-mo-Y.min.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/js/plugin/InfiniteScroll.ts": {
|
"src/js/plugin/InfiniteScroll.ts": {
|
||||||
"file": "chunk/D3mcqWOe.min.js",
|
"file": "chunk/DpvWr1cn.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/Bc8fcwWx.min.js",
|
"file": "chunk/BnnvKC7b.min.js",
|
||||||
"name": "mapview",
|
"name": "mapview",
|
||||||
"src": "src/js/plugin/MapView.ts",
|
"src": "src/js/plugin/MapView.ts",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_BuurKv-k.min.js"
|
"src/js/index.ts"
|
||||||
],
|
],
|
||||||
"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/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]);
|
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]);
|
||||||
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};
|
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};
|
||||||
//# 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-engines">{{ _label(_("Engines"), ", ".join(result.engines)) }}</p>
|
<p class="result-engine">{{ _label(_("Engine"), result.engine) }}</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,16 +23,17 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -76,7 +77,7 @@ msgid "videos"
|
|||||||
msgstr "videos"
|
msgstr "videos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -550,7 +551,7 @@ msgstr "geantwoord"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Geen item gevind"
|
msgstr "Geen item gevind"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -646,7 +647,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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Geplaas deur {author}"
|
msgstr "Geplaas deur {author}"
|
||||||
@@ -664,19 +665,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanaal"
|
msgstr "Kanaal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bitsnelheid"
|
msgstr "bitsnelheid"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "stemme"
|
msgstr "stemme"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klikke"
|
msgstr "klikke"
|
||||||
|
|
||||||
@@ -712,15 +713,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Taal"
|
msgstr "Taal"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "boekgradering"
|
msgstr "boekgradering"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Lêer kwaliteit"
|
msgstr "Lêer kwaliteit"
|
||||||
|
|
||||||
@@ -1013,7 +1014,6 @@ 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,6 +1656,10 @@ 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"
|
||||||
@@ -2162,7 +2166,3 @@ msgstr "versteek video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formaat"
|
#~ msgstr "Formaat"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Enjin"
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -31,19 +31,20 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -87,7 +88,7 @@ msgid "videos"
|
|||||||
msgstr "ڤيديوهات"
|
msgstr "ڤيديوهات"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "إذاعة"
|
msgstr "إذاعة"
|
||||||
|
|
||||||
@@ -561,7 +562,7 @@ msgstr "تمت الإجابة"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "لم يتم العثور على عنصر"
|
msgstr "لم يتم العثور على عنصر"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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 "مصدر"
|
||||||
@@ -657,7 +658,7 @@ msgstr "توليد قِيم عشوائية مختلفة"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "حساب {func} من الحجج"
|
msgstr "حساب {func} من الحجج"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "منشور بواسطة {author}"
|
msgstr "منشور بواسطة {author}"
|
||||||
@@ -675,19 +676,19 @@ msgstr "{title} (قديم)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "تم استبدال هذا الإدخال بـ"
|
msgstr "تم استبدال هذا الإدخال بـ"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "القناة"
|
msgstr "القناة"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "معدل البت"
|
msgstr "معدل البت"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "تصويتات"
|
msgstr "تصويتات"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "نقرات"
|
msgstr "نقرات"
|
||||||
|
|
||||||
@@ -721,15 +722,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "لا يمكن تنزيل الصورة."
|
msgstr "لا يمكن تنزيل الصورة."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "اللغة"
|
msgstr "اللغة"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "تقييم الكتاب"
|
msgstr "تقييم الكتاب"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "جودة الملف"
|
msgstr "جودة الملف"
|
||||||
|
|
||||||
@@ -1021,7 +1022,6 @@ 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,6 +1661,10 @@ 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 "عرض المصدر"
|
||||||
@@ -2400,7 +2404,3 @@ msgstr "إخفاء الفيديو"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "صيغة"
|
#~ msgstr "صيغة"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "محرك"
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -21,19 +21,18 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
||||||
"PO-Revision-Date: 2026-07-17 12:20+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-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']
|
||||||
@@ -77,7 +76,7 @@ msgid "videos"
|
|||||||
msgstr "видео"
|
msgstr "видео"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "радио"
|
msgstr "радио"
|
||||||
|
|
||||||
@@ -551,7 +550,7 @@ msgstr "Отговорено"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Не е намерен артикул"
|
msgstr "Не е намерен артикул"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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 "Източник"
|
||||||
@@ -647,7 +646,7 @@ msgstr "Генерирайте различни произволни стойн
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Изчислете {func} на аргументите"
|
msgstr "Изчислете {func} на аргументите"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -665,19 +664,19 @@ msgstr "{title} (ОСТАРЯЛО)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Този запис е заменен от"
|
msgstr "Този запис е заменен от"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Канал"
|
msgstr "Канал"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "Скорост"
|
msgstr "Скорост"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "Гласове"
|
msgstr "Гласове"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "клика"
|
msgstr "клика"
|
||||||
|
|
||||||
@@ -713,15 +712,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Снимката не може да бъде свалена."
|
msgstr "Снимката не може да бъде свалена."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Език"
|
msgstr "Език"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Рейтинг на книги"
|
msgstr "Рейтинг на книги"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Качество на файл"
|
msgstr "Качество на файл"
|
||||||
|
|
||||||
@@ -1007,7 +1006,6 @@ 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 "Търсачки"
|
||||||
|
|
||||||
@@ -1017,7 +1015,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"
|
||||||
@@ -1659,6 +1657,10 @@ 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 "Покажи източник"
|
||||||
@@ -2402,5 +2404,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "চ্যানেল"
|
msgstr "চ্যানেল"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "বিটরেট"
|
msgstr "বিটরেট"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "ভোট"
|
msgstr "ভোট"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "ভাষা"
|
msgstr "ভাষা"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "বই পর্যালোচনা"
|
msgstr "বই পর্যালোচনা"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "নথি মান"
|
msgstr "নথি মান"
|
||||||
|
|
||||||
@@ -1013,7 +1013,6 @@ 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 "ইঞ্জিন"
|
||||||
|
|
||||||
@@ -1650,6 +1649,10 @@ 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 "উৎস দেখুন"
|
||||||
@@ -2159,6 +2162,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -980,7 +980,6 @@ 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 "སྒུལ་བྱེད།"
|
||||||
|
|
||||||
@@ -1607,6 +1606,10 @@ 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 "ཡོངས་ཁུངས་ལ་ལྟ།"
|
||||||
@@ -2292,6 +2295,3 @@ msgstr "རྙན་ཟློས་སྦས།"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -29,18 +29,19 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -84,7 +85,7 @@ msgid "videos"
|
|||||||
msgstr "vídeos"
|
msgstr "vídeos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "radio"
|
msgstr "radio"
|
||||||
|
|
||||||
@@ -558,7 +559,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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -654,7 +655,7 @@ msgstr "Genera diferents valors aleatoris"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -672,19 +673,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Canal"
|
msgstr "Canal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "tasa de bits"
|
msgstr "tasa de bits"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "vots"
|
msgstr "vots"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "clics"
|
msgstr "clics"
|
||||||
|
|
||||||
@@ -719,15 +720,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Llengua"
|
msgstr "Llengua"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Valoració de llibre"
|
msgstr "Valoració de llibre"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Qualitat del fitxer"
|
msgstr "Qualitat del fitxer"
|
||||||
|
|
||||||
@@ -1012,7 +1013,6 @@ 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,6 +1658,10 @@ 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"
|
||||||
@@ -2420,7 +2424,3 @@ msgstr "oculta el vídeo"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Format"
|
#~ msgstr "Format"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Cercador"
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -25,19 +25,20 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -81,7 +82,7 @@ msgid "videos"
|
|||||||
msgstr "videa"
|
msgstr "videa"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "rádio"
|
msgstr "rádio"
|
||||||
|
|
||||||
@@ -555,7 +556,7 @@ msgstr "zodpovězené"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Nic nenalezeno"
|
msgstr "Nic nenalezeno"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -651,7 +652,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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Autor: {author}"
|
msgstr "Autor: {author}"
|
||||||
@@ -669,19 +670,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanál"
|
msgstr "Kanál"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "datový tok"
|
msgstr "datový tok"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "hlasy"
|
msgstr "hlasy"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "kliknutí"
|
msgstr "kliknutí"
|
||||||
|
|
||||||
@@ -716,15 +717,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Jazyk"
|
msgstr "Jazyk"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Hodnocení knih"
|
msgstr "Hodnocení knih"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Množství souborů"
|
msgstr "Množství souborů"
|
||||||
|
|
||||||
@@ -1015,7 +1016,6 @@ 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,6 +1659,10 @@ 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"
|
||||||
@@ -2406,7 +2410,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Sianel"
|
msgstr "Sianel"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "cyfradd didau"
|
msgstr "cyfradd didau"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "pleidleisiau"
|
msgstr "pleidleisiau"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Iaith"
|
msgstr "Iaith"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Gradd llyfr"
|
msgstr "Gradd llyfr"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "ansawdd ffeil"
|
msgstr "ansawdd ffeil"
|
||||||
|
|
||||||
@@ -1003,7 +1003,6 @@ 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"
|
||||||
|
|
||||||
@@ -1639,6 +1638,10 @@ 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"
|
||||||
@@ -2360,6 +2363,3 @@ msgstr "cuddio'r fideo"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Fformat"
|
#~ msgstr "Fformat"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Peiriant"
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -17,18 +17,19 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -72,7 +73,7 @@ msgid "videos"
|
|||||||
msgstr "videoer"
|
msgstr "videoer"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
|
|
||||||
@@ -546,7 +547,7 @@ msgstr "svaret"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Intet fundet"
|
msgstr "Intet fundet"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -642,7 +643,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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Indsendt af {author}"
|
msgstr "Indsendt af {author}"
|
||||||
@@ -660,19 +661,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanal"
|
msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "Bitrate"
|
msgstr "Bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "Stemmer"
|
msgstr "Stemmer"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "Klik"
|
msgstr "Klik"
|
||||||
|
|
||||||
@@ -708,15 +709,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Sprog"
|
msgstr "Sprog"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Bogbedømmelse"
|
msgstr "Bogbedømmelse"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Filkvalitet"
|
msgstr "Filkvalitet"
|
||||||
|
|
||||||
@@ -1009,7 +1010,6 @@ 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,6 +1655,10 @@ 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"
|
||||||
@@ -2415,7 +2419,3 @@ msgstr "skjul video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Format"
|
#~ msgstr "Format"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Maskine"
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -32,18 +32,19 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -87,7 +88,7 @@ msgid "videos"
|
|||||||
msgstr "Videos"
|
msgstr "Videos"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
|
|
||||||
@@ -561,7 +562,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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -657,7 +658,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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Beitrag von {author}"
|
msgstr "Beitrag von {author}"
|
||||||
@@ -675,19 +676,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanal"
|
msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "Bitrate"
|
msgstr "Bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "Stimmen"
|
msgstr "Stimmen"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "Clicks"
|
msgstr "Clicks"
|
||||||
|
|
||||||
@@ -723,15 +724,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Sprache"
|
msgstr "Sprache"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Buchbewertung"
|
msgstr "Buchbewertung"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Dateiqualität"
|
msgstr "Dateiqualität"
|
||||||
|
|
||||||
@@ -1030,7 +1031,6 @@ 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,6 +1674,10 @@ 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"
|
||||||
@@ -2462,7 +2466,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -977,7 +977,6 @@ 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 ""
|
||||||
|
|
||||||
@@ -1602,6 +1601,10 @@ 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 ""
|
||||||
@@ -2023,6 +2026,3 @@ msgstr ""
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -23,18 +23,19 @@
|
|||||||
# 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -78,7 +79,7 @@ msgid "videos"
|
|||||||
msgstr "Βίντεο"
|
msgstr "Βίντεο"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "ράδιο"
|
msgstr "ράδιο"
|
||||||
|
|
||||||
@@ -552,7 +553,7 @@ msgstr "απάντησε"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Δεν βρέθηκαν αντικείμενα"
|
msgstr "Δεν βρέθηκαν αντικείμενα"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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 "Πηγή"
|
||||||
@@ -648,7 +649,7 @@ msgstr "Δημιουργία διαφορετικών τυχαίων τιμών"
|
|||||||
msgid "Compute {func} of the arguments"
|
msgid "Compute {func} of the arguments"
|
||||||
msgstr "Υπολογίστε τη {func} των ορισμάτων"
|
msgstr "Υπολογίστε τη {func} των ορισμάτων"
|
||||||
|
|
||||||
#: searx/engines/boardreader.py:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Δημοσιεύτηκε απο {author}"
|
msgstr "Δημοσιεύτηκε απο {author}"
|
||||||
@@ -666,19 +667,19 @@ msgstr "{title} (ΠΑΡΩΧΗΜΕΝΟΣ)"
|
|||||||
msgid "This entry has been superseded by"
|
msgid "This entry has been superseded by"
|
||||||
msgstr "Αυτή η καταχώριση έχει αντικατασταθεί από"
|
msgstr "Αυτή η καταχώριση έχει αντικατασταθεί από"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Κανάλι"
|
msgstr "Κανάλι"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "ρυθμός μετάδοσης"
|
msgstr "ρυθμός μετάδοσης"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "ψήφους"
|
msgstr "ψήφους"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "κλικ"
|
msgstr "κλικ"
|
||||||
|
|
||||||
@@ -714,15 +715,15 @@ msgstr ""
|
|||||||
msgid "The image could not be downloaded."
|
msgid "The image could not be downloaded."
|
||||||
msgstr "Αποτυχία μεταφόρτωσης εικόνας."
|
msgstr "Αποτυχία μεταφόρτωσης εικόνας."
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Γλώσσα"
|
msgstr "Γλώσσα"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Βαθμολογία βιβλίου"
|
msgstr "Βαθμολογία βιβλίου"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Ποιότητα αρχείου"
|
msgstr "Ποιότητα αρχείου"
|
||||||
|
|
||||||
@@ -1015,7 +1016,6 @@ 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,6 +1669,10 @@ 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 "Προβολή πηγής"
|
||||||
@@ -2435,7 +2439,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -973,7 +973,6 @@ 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 ""
|
||||||
|
|
||||||
@@ -1598,6 +1597,10 @@ 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 ""
|
||||||
@@ -2284,6 +2287,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanalo"
|
msgstr "Kanalo"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bito-rapido"
|
msgstr "bito-rapido"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "voĉoj"
|
msgstr "voĉoj"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Lingvo"
|
msgstr "Lingvo"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Taksado de libro"
|
msgstr "Taksado de libro"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Dosiera kvalito"
|
msgstr "Dosiera kvalito"
|
||||||
|
|
||||||
@@ -1002,7 +1002,6 @@ 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"
|
||||||
|
|
||||||
@@ -1641,6 +1640,10 @@ 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"
|
||||||
@@ -2372,6 +2375,3 @@ 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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
||||||
"PO-Revision-Date: 2026-07-23 22:07+0000\n"
|
"PO-Revision-Date: 2026-06-14 13: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 "archivos"
|
msgstr "files"
|
||||||
|
|
||||||
#. 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:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, 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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Canal"
|
msgstr "Canal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bitrate"
|
msgstr "bitrate"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "votos"
|
msgstr "votos"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Idioma"
|
msgstr "Idioma"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Valoración del libro"
|
msgstr "Valoración del libro"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Calidad del archivo"
|
msgstr "Calidad del archivo"
|
||||||
|
|
||||||
@@ -1042,7 +1042,6 @@ 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"
|
||||||
|
|
||||||
@@ -1689,6 +1688,10 @@ 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"
|
||||||
@@ -2460,6 +2463,3 @@ msgstr "ocultar video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formato"
|
#~ msgstr "Formato"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Motor"
|
|
||||||
|
|||||||
Binary file not shown.
@@ -19,18 +19,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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+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']
|
||||||
@@ -74,7 +75,7 @@ msgid "videos"
|
|||||||
msgstr "videod"
|
msgstr "videod"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "raadio"
|
msgstr "raadio"
|
||||||
|
|
||||||
@@ -548,7 +549,7 @@ msgstr "vastatud"
|
|||||||
msgid "No item found"
|
msgid "No item found"
|
||||||
msgstr "Üksust ei leitud"
|
msgstr "Üksust ei leitud"
|
||||||
|
|
||||||
#: searx/engines/qwant.py:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -644,7 +645,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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "Postituse autor on {author}"
|
msgstr "Postituse autor on {author}"
|
||||||
@@ -662,19 +663,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanal"
|
msgstr "Kanal"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bitikiirus"
|
msgstr "bitikiirus"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "hääled"
|
msgstr "hääled"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klikid"
|
msgstr "klikid"
|
||||||
|
|
||||||
@@ -709,15 +710,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Keel"
|
msgstr "Keel"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Raamatu hinnang"
|
msgstr "Raamatu hinnang"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Faili kvaliteet"
|
msgstr "Faili kvaliteet"
|
||||||
|
|
||||||
@@ -1010,7 +1011,6 @@ 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,6 +1653,10 @@ 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"
|
||||||
@@ -2393,7 +2397,3 @@ msgstr "peida video"
|
|||||||
|
|
||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Vorming"
|
#~ msgstr "Vorming"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Otsingumootor"
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -18,19 +18,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-07-15 15:45+0000\n"
|
"POT-Creation-Date: 2026-06-13 11:31+0000\n"
|
||||||
"PO-Revision-Date: 2026-07-23 22:07+0000\n"
|
"PO-Revision-Date: 2026-05-01 07:50+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']
|
||||||
@@ -74,7 +73,7 @@ msgid "videos"
|
|||||||
msgstr "bideoak"
|
msgstr "bideoak"
|
||||||
|
|
||||||
#. CATEGORY_NAMES['RADIO']
|
#. CATEGORY_NAMES['RADIO']
|
||||||
#: searx/engines/radio_browser.py:160 searx/searxng.msg
|
#: searx/engines/radio_browser.py:159 searx/searxng.msg
|
||||||
msgid "radio"
|
msgid "radio"
|
||||||
msgstr "irratia"
|
msgstr "irratia"
|
||||||
|
|
||||||
@@ -548,7 +547,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:286
|
#: searx/engines/qwant.py:258
|
||||||
#: 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"
|
||||||
@@ -644,7 +643,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:108
|
#: searx/engines/boardreader.py:107
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Posted by {author}"
|
msgid "Posted by {author}"
|
||||||
msgstr "{author}-k argitaratuta"
|
msgstr "{author}-k argitaratuta"
|
||||||
@@ -662,19 +661,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:288
|
#: searx/engines/qwant.py:260
|
||||||
msgid "Channel"
|
msgid "Channel"
|
||||||
msgstr "Kanala"
|
msgstr "Kanala"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:162
|
#: searx/engines/radio_browser.py:161
|
||||||
msgid "bitrate"
|
msgid "bitrate"
|
||||||
msgstr "bit emaria"
|
msgstr "bit emaria"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:163
|
#: searx/engines/radio_browser.py:162
|
||||||
msgid "votes"
|
msgid "votes"
|
||||||
msgstr "botoak"
|
msgstr "botoak"
|
||||||
|
|
||||||
#: searx/engines/radio_browser.py:164
|
#: searx/engines/radio_browser.py:163
|
||||||
msgid "clicks"
|
msgid "clicks"
|
||||||
msgstr "klikak"
|
msgstr "klikak"
|
||||||
|
|
||||||
@@ -709,15 +708,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:80
|
#: searx/engines/zlibrary.py:79
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Hizkuntza"
|
msgstr "Hizkuntza"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:81
|
#: searx/engines/zlibrary.py:80
|
||||||
msgid "Book rating"
|
msgid "Book rating"
|
||||||
msgstr "Liburuaren balorazioa"
|
msgstr "Liburuaren balorazioa"
|
||||||
|
|
||||||
#: searx/engines/zlibrary.py:82
|
#: searx/engines/zlibrary.py:81
|
||||||
msgid "File quality"
|
msgid "File quality"
|
||||||
msgstr "Fitxategiaren kalitatea"
|
msgstr "Fitxategiaren kalitatea"
|
||||||
|
|
||||||
@@ -1008,7 +1007,6 @@ 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"
|
||||||
|
|
||||||
@@ -1440,7 +1438,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 erabakitzailea"
|
msgstr "Favicon Resolver"
|
||||||
|
|
||||||
#: 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"
|
||||||
@@ -1647,11 +1645,15 @@ 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 "Irudi formatuak"
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/result_templates/images.html:56
|
#: searx/templates/simple/result_templates/images.html:56
|
||||||
msgid "original format"
|
msgid "original format"
|
||||||
msgstr "jatorrizko formatua"
|
msgstr ""
|
||||||
|
|
||||||
|
#: 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"
|
||||||
@@ -2393,5 +2395,3 @@ msgstr "ezkutatu bideoa"
|
|||||||
#~ msgid "Format"
|
#~ msgid "Format"
|
||||||
#~ msgstr "Formatua"
|
#~ msgstr "Formatua"
|
||||||
|
|
||||||
#~ msgid "Engine"
|
|
||||||
#~ msgstr "Bilatzailea"
|
|
||||||
|
|||||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user