diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..9e5871918 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,4 @@ +FROM mcr.microsoft.com/devcontainers/base:debian + +RUN apt-get update && \ + apt-get -y install python3 python3-venv redis firefox-esr graphviz imagemagick librsvg2-bin fonts-dejavu shellcheck diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..3f8c4c81a --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,31 @@ +{ + "build": { + "dockerfile": "Dockerfile" + }, + "features": { + "ghcr.io/devcontainers/features/github-cli": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "ms-azuretools.vscode-docker" + ], + "remote.otherPortsAttributes": { + "protocol": "https" + }, + "settings": { + "files.autoSave": "off", + "python.defaultInterpreterPath": "/workspaces/searxng/local/py3/bin/python3", + "python.formatting.blackPath": "/workspaces/searxng/local/py3/bin/black", + "python.linting.pylintPath": "/workspaces/searxng/local/py3/bin/pylint" + } + } + }, + "forwardPorts": [8000, 8888], + "portsAttributes": { + "8000": {"label": "Sphinx documentation"}, + "8888": {"label": "SearXNG"} + }, + "postCreateCommand": "git pull && make install" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..5617a5ba2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,40 @@ +# https://editorconfig.org/ + +root = true + +[*] +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf +charset = utf-8 + +[*.py] +max_line_length = 119 + +[*.html] +indent_size = 4 + +[*.json] +indent_size = 4 +insert_final_newline = ignore + +# Minified JavaScript files shouldn't be changed +[**.min.js] +indent_style = ignore +insert_final_newline = ignore + +# Makefiles always use tabs for indentation +[Makefile] +indent_style = tab + +# Batch files use tabs for indentation +[*.bat] +indent_style = tab + +[docs/**.rst] +max_line_length = 79 + +[*.yml] +indent_size = 2 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..8ec6ff9b8 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,23 @@ +{ + // See https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "SearXNG", + "type": "python", + "request": "launch", + "module": "searx.webapp", + "env": { + "FLASK_APP": "webapp", + "FLASK_DEBUG": "1", + "SEARXNG_DEBUG": "1", + }, + "args": [ + "run" + ], + "jinja": true, + "justMyCode": true, + "python": "${workspaceFolder}/local/py3/bin/python", + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..512342bae --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "python.testing.unittestArgs": [ + "-v", + "-s", + "./tests", + "-p", + "test_*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true, +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 000000000..4d4a57b80 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,36 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "make run", + "type": "shell", + "command": "make run", + "problemMatcher": [], + "isBackground": true, + "presentation": { + "reveal": "always", + "panel": "dedicated" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "make docs.live", + "type": "shell", + "command": "make docs.live", + "problemMatcher": [], + "isBackground": true, + "presentation": { + "reveal": "always", + "panel": "dedicated" + }, + "group": { + "kind": "build" + } + } + ] +} \ No newline at end of file diff --git a/README.rst b/README.rst index 5a1b50e6b..9b926b1c9 100644 --- a/README.rst +++ b/README.rst @@ -12,9 +12,9 @@ Privacy-respecting, hackable `metasearch engine`_ -If you are looking for running instances, ready to use, then visit searx.space_. -Otherwise jump to the user_, admin_ and developer_ handbooks you will find on -our homepage_. +Searx.space_ lists ready-to-use running instances. + +A user_, admin_ and developer_ handbook is available on the homepage_. |SearXNG install| |SearXNG homepage| @@ -66,20 +66,19 @@ our homepage_. Contact ======= -Come join us if you have questions or just want to chat about SearXNG. - -Matrix - `#searxng:matrix.org `_ +Ask questions or just chat about SearXNG on IRC `#searxng on libera.chat `_ which is bridged to Matrix. +Matrix + `#searxng:matrix.org `_ Differences to searx ==================== -SearXNG is a fork of `searx`_. Here are some of the changes: +SearXNG is a fork of `searx`_, with notable changes: .. _searx: https://github.com/searx/searx @@ -87,49 +86,48 @@ SearXNG is a fork of `searx`_. Here are some of the changes: User experience --------------- -- Huge update of the simple theme: +- Reworked (and still simple) theme: - * usable on desktop, tablet and mobile - * light and dark versions (you can choose in the preferences) - * support right-to-left languages - * `see the screenshots `_ + * Usable on desktop, tablet and mobile. + * Light and dark versions (available in the preferences). + * Right-to-left language support. + * `Screenshots `_ -- the translations are up to date, you can contribute on `Weblate`_ -- the preferences page has been updated: +- The translations are up to date, you can contribute on `Weblate`_ +- The preferences page has been updated: - * you can see which engines are reliable or not - * engines are grouped inside each tab - * each engine has a description + * Browse which engines are reliable or not. + * Engines are grouped inside each tab. + * Each engine has a description. -- thanks to the anonymous metrics, it is easier to report a bug of an engine and - thus engines get fixed more quickly +- Thanks to the anonymous metrics, it is easier to report malfunctioning engines, + so they get fixed quicker - - if you don't want any metrics to be recorded, you can `disable them on the server - `_ + - `Turn off metrics on the server + `_ if you don't want them recorded. -- administrator can `block and/or replace the URLs in the search results +- Administrators can `block and/or replace the URLs in the search results `_ Setup ----- -- you don't need `Morty`_ to proxy the images even on a public instance -- you don't need `Filtron`_ to block bots, we implemented the builtin `limiter`_ -- you get a well maintained `Docker image`_, now also built for ARM64 and ARM/v7 architectures -- alternatively we have up to date installation scripts +- No need for `Morty`_ to proxy images, even on a public instance. +- No need for `Filtron`_ to block bots, as there is now a built-in `limiter`_. +- A well maintained `Docker image`_, now also built for ARM64 and ARM/v7 architectures. + (Alternatively there are up to date installation scripts.) .. _Docker image: https://github.com/searxng/searxng-docker -Contributing is easier ----------------------- +Contributing +------------ -- readable debug log -- contributions to the themes are made easier, check out our `Development - Quickstart`_ guide -- a lot of code cleanup and bug fixes -- the dependencies are up to date +- Readable debug log. +- Contributing is easier, thanks to the `Development Quickstart`_ guide. +- A lot of code cleanup and bugfixes. +- Up to date list dependencies. .. _Morty: https://github.com/asciimoo/morty .. _Filtron: https://github.com/searxng/filtron @@ -141,15 +139,35 @@ Contributing is easier Translations ============ -We need translators, suggestions are welcome at -https://translate.codeberg.org/projects/searxng/searxng/ +Help translate SearXNG at `Weblate`_ .. figure:: https://translate.codeberg.org/widgets/searxng/-/multi-auto.svg :target: https://translate.codeberg.org/projects/searxng/ -Make a donation -=============== +Codespaces +========== -You can support the SearXNG project by clicking on the donation page: +You can contribute from your browser using `GitHub Codespaces`_: + +- Fork the repository +- Click on the ``<> Code`` green button +- Click on the ``Codespaces`` tab instead of ``Local`` +- Click on ``Create codespace on master`` +- VSCode is going to start in the browser +- Wait for ``git pull && make install`` to appears and then to disapear +- You have `120 hours per month`_ (see also your `list of existing Codespaces`_) +- You can start SearXNG using ``make run`` in the terminal or by pressing ``Ctrl+Shift+B``. + +.. _GitHub Codespaces: https://docs.github.com/en/codespaces/overview +.. _120 hours per month: https://github.com/settings/billing +.. _list of existing Codespaces: https://github.com/codespaces + + +Donations +========= + +Support the SearXNG project by clicking the donation page: https://docs.searxng.org/donate.html + +Thank you :) diff --git a/requirements-dev.txt b/requirements-dev.txt index a816c90a6..e7fea88d2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ mock==5.0.1 nose2[coverage_plugin]==0.12.0 cov-core==1.15.0 black==22.12.0 -pylint==2.17.0 +pylint==2.17.1 splinter==0.19.0 selenium==4.8.2 twine==4.0.2 @@ -15,8 +15,8 @@ sphinxcontrib-programoutput==0.17 sphinx-autobuild==2021.3.14 sphinx-notfound-page==0.8.3 myst-parser==1.0.0 -linuxdoc==20221127 +linuxdoc==20230321 aiounittest==1.4.2 -yamllint==1.29.0 +yamllint==1.30.0 wlc==1.13 coloredlogs==15.0.1 diff --git a/searx/engines/wikidata.py b/searx/engines/wikidata.py index e0ad2e6c9..8d3b0839a 100644 --- a/searx/engines/wikidata.py +++ b/searx/engines/wikidata.py @@ -260,7 +260,7 @@ def get_results(attribute_result, attributes, language): infobox_urls.append({'title': attribute.get_label(language), 'url': url, **attribute.kwargs}) # "normal" results (not infobox) include official website and Wikipedia links. if attribute.kwargs.get('official') or attribute_type == WDArticle: - results.append({'title': infobox_title, 'url': url}) + results.append({'title': infobox_title, 'url': url, "content": infobox_content}) # update the infobox_id with the wikipedia URL # first the local wikipedia URL, and as fallback the english wikipedia URL if attribute_type == WDArticle and ( diff --git a/searx/network/client.py b/searx/network/client.py index f25aaf9ab..ffee3f096 100644 --- a/searx/network/client.py +++ b/searx/network/client.py @@ -4,6 +4,7 @@ import asyncio import logging +import random from ssl import SSLContext import threading from typing import Any, Dict @@ -28,10 +29,34 @@ LOOP = None SSLCONTEXTS: Dict[Any, SSLContext] = {} +def shuffle_ciphers(ssl_context): + """Shuffle httpx's default ciphers of a SSL context randomly. + + From `What Is TLS Fingerprint and How to Bypass It`_ + + > When implementing TLS fingerprinting, servers can't operate based on a + > locked-in whitelist database of fingerprints. New fingerprints appear + > when web clients or TLS libraries release new versions. So, they have to + > live off a blocklist database instead. + > ... + > It's safe to leave the first three as is but shuffle the remaining ciphers + > and you can bypass the TLS fingerprint check. + + .. _What Is TLS Fingerprint and How to Bypass It: + https://www.zenrows.com/blog/what-is-tls-fingerprint#how-to-bypass-tls-fingerprinting + + """ + c_list = httpx._config.DEFAULT_CIPHERS.split(':') # pylint: disable=protected-access + sc_list, c_list = c_list[:3], c_list[3:] + random.shuffle(c_list) + ssl_context.set_ciphers(":".join(sc_list + c_list)) + + def get_sslcontexts(proxy_url=None, cert=None, verify=True, trust_env=True, http2=False): key = (proxy_url, cert, verify, trust_env, http2) if key not in SSLCONTEXTS: SSLCONTEXTS[key] = httpx.create_ssl_context(cert, verify, trust_env, http2) + shuffle_ciphers(SSLCONTEXTS[key]) return SSLCONTEXTS[key] diff --git a/searx/search/__init__.py b/searx/search/__init__.py index c5f225aa4..e5465880c 100644 --- a/searx/search/__init__.py +++ b/searx/search/__init__.py @@ -54,7 +54,7 @@ def replace_auto_language(search_query: SearchQuery): if search_query.lang != 'auto': return - detected_lang = detect_language(search_query.query, threshold=0.0, only_search_languages=True) + detected_lang = detect_language(search_query.query, threshold=0.3, only_search_languages=True) if detected_lang is None: # fallback to 'all' if no language has been detected search_query.lang = 'all' diff --git a/searx/static/themes/simple/.eslintrc.json b/searx/static/themes/simple/.eslintrc.json index 57d227f3d..df53fcce8 100644 --- a/searx/static/themes/simple/.eslintrc.json +++ b/searx/static/themes/simple/.eslintrc.json @@ -18,7 +18,6 @@ "brace-style": ["error", "1tbs", { "allowSingleLine": true }], "curly": ["error", "multi-line"], "block-spacing": ["error", "always"], - "comma-spacing": ["error", { "before": false, "after": true }], "dot-location": ["error", "property"], "key-spacing": ["error", { "beforeColon": false, "afterColon": true }], "spaced-comment": ["error", "always", { diff --git a/searx/translations/da/LC_MESSAGES/messages.mo b/searx/translations/da/LC_MESSAGES/messages.mo index d877a79ee..dbfc6ff59 100644 Binary files a/searx/translations/da/LC_MESSAGES/messages.mo and b/searx/translations/da/LC_MESSAGES/messages.mo differ diff --git a/searx/translations/da/LC_MESSAGES/messages.po b/searx/translations/da/LC_MESSAGES/messages.po index cc7b477fa..5f87c5e2f 100644 --- a/searx/translations/da/LC_MESSAGES/messages.po +++ b/searx/translations/da/LC_MESSAGES/messages.po @@ -9,18 +9,19 @@ # return42 , 2023. msgid "" msgstr "" -"Project-Id-Version: searx\n" +"Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2023-02-20 11:22+0000\n" -"PO-Revision-Date: 2023-02-19 11:39+0000\n" +"PO-Revision-Date: 2023-03-21 17:37+0000\n" "Last-Translator: return42 \n" +"Language-Team: Danish \n" "Language: da\n" -"Language-Team: Danish " -"\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.16.4\n" "Generated-By: Babel 2.11.0\n" #. CONSTANT_NAMES['DEFAULT_GROUP_NAME'] @@ -390,11 +391,11 @@ msgstr "" msgid "" "You are using Tor and it looks like you have this external IP address: " "{ip_address}" -msgstr "" +msgstr "Du bruger ikke Tor og du har denne eksterne IP adresse: {ip_address}" #: searx/plugins/tor_check.py:86 msgid "You are not using Tor and you have this external IP address: {ip_address}" -msgstr "" +msgstr "Du bruger ikke Tor og du har denne eksterne IP adresse: {ip_address}" #: searx/plugins/tracker_url_remover.py:29 msgid "Tracker URL remover" @@ -1548,4 +1549,3 @@ msgstr "skjul video" #~ msgid "Automatically detect the query search language and switch to it." #~ msgstr "Registrer automatisk søgesproget og skift til det." - diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.mo b/searx/translations/el_GR/LC_MESSAGES/messages.mo index 2d34a2644..c4662d843 100644 Binary files a/searx/translations/el_GR/LC_MESSAGES/messages.mo and b/searx/translations/el_GR/LC_MESSAGES/messages.mo differ diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.po b/searx/translations/el_GR/LC_MESSAGES/messages.po index 9c16d8cf7..457b3132b 100644 --- a/searx/translations/el_GR/LC_MESSAGES/messages.po +++ b/searx/translations/el_GR/LC_MESSAGES/messages.po @@ -8,20 +8,22 @@ # Markus Heiser , 2022, 2023. # Constantine Giannopoulos , 2022. # Alexandre Flament , 2022. +# return42 , 2023. msgid "" msgstr "" -"Project-Id-Version: searx\n" +"Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2023-02-20 11:22+0000\n" -"PO-Revision-Date: 2023-01-06 07:14+0000\n" -"Last-Translator: Markus Heiser \n" +"PO-Revision-Date: 2023-03-24 07:07+0000\n" +"Last-Translator: return42 \n" +"Language-Team: Greek \n" "Language: el_GR\n" -"Language-Team: Greek " -"\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.16.4\n" "Generated-By: Babel 2.11.0\n" #. CONSTANT_NAMES['DEFAULT_GROUP_NAME'] @@ -380,22 +382,31 @@ msgid "" "This plugin checks if the address of the request is a Tor exit-node, and " "informs the user if it is; like check.torproject.org, but from SearXNG." msgstr "" +"Αυτό το πρόσθετο ελέγχει εάν η διεύθυνση του χρήστη είναι διεύθυνση εξόδου " +"του δικτύου Tor και ενημερώνει τον χρήστη εάν είναι έτσι. Όπως στο " +"check.torproject.org, αλλά από το SearXNG." #: searx/plugins/tor_check.py:62 msgid "" "Could not download the list of Tor exit-nodes from: " "https://check.torproject.org/exit-addresses" msgstr "" +"Δεν ήταν δυνατή η λήψη της λίστας διευθύνσεων εξόδου του δικτύου Tor από το: " +"https://check.torproject.org/exit-addresses" #: searx/plugins/tor_check.py:78 msgid "" "You are using Tor and it looks like you have this external IP address: " "{ip_address}" msgstr "" +"Χρησιμοποιείτε το δίκτυο Tor και φαίνεται πως η εξωτερική σας διεύθυνση " +"είναι η: {ip_address}" #: searx/plugins/tor_check.py:86 msgid "You are not using Tor and you have this external IP address: {ip_address}" msgstr "" +"Δεν χρησιμοποιείτε το δίκτυο Tor. Η εξωτερική σας διεύθυνση είναι: " +"{ip_address}" #: searx/plugins/tracker_url_remover.py:29 msgid "Tracker URL remover" @@ -580,7 +591,7 @@ msgstr "Προεπιλεγμένη γλώσσα" #: searx/templates/simple/filters/languages.html:4 #: searx/templates/simple/preferences.html:119 msgid "Auto-detect" -msgstr "" +msgstr "Αυτόματη αναγνώριση της γλώσσας" #: searx/templates/simple/preferences.html:126 msgid "What language do you prefer for search?" @@ -589,6 +600,8 @@ msgstr "Τι γλώσσα προτιμάτε για αναζήτηση;" #: searx/templates/simple/preferences.html:126 msgid "Choose Auto-detect to let SearXNG detect the language of your query." msgstr "" +"Επιλέξτε αυτόματη αναγνώριση για να αφήσετε το SearXNG να αναγνωρίσει την " +"γλώσσα του ερωτήματος σας αυτόματα." #: searx/templates/simple/preferences.html:132 msgid "Autocomplete" @@ -987,7 +1000,7 @@ msgstr "αναζήτηση" #: searx/templates/simple/stats.html:21 msgid "There is currently no data available. " -msgstr "Δεν υπάρχουν διαθέσιμα δεδομένα." +msgstr "Δεν υπάρχουν διαθέσιμα δεδομένα. " #: searx/templates/simple/stats.html:26 msgid "Scores" @@ -1150,7 +1163,7 @@ msgstr "Ημερομηνία δημοσίευσης" #: searx/templates/simple/result_templates/paper.html:9 msgid "Journal" -msgstr "" +msgstr "Περιοδικό" #: searx/templates/simple/result_templates/paper.html:22 msgid "Editor" @@ -1170,23 +1183,23 @@ msgstr "Σημάνσεις" #: searx/templates/simple/result_templates/paper.html:26 msgid "DOI" -msgstr "" +msgstr "DOI" #: searx/templates/simple/result_templates/paper.html:27 msgid "ISSN" -msgstr "" +msgstr "ISSN" #: searx/templates/simple/result_templates/paper.html:28 msgid "ISBN" -msgstr "" +msgstr "ISBN" #: searx/templates/simple/result_templates/paper.html:33 msgid "PDF" -msgstr "" +msgstr "PDF" #: searx/templates/simple/result_templates/paper.html:34 msgid "HTML" -msgstr "" +msgstr "HTML" #: searx/templates/simple/result_templates/torrent.html:6 msgid "magnet link" @@ -1551,4 +1564,3 @@ msgstr "απόκρυψη βίντεο" #~ msgid "Automatically detect the query search language and switch to it." #~ msgstr "" - diff --git a/searx/translations/it/LC_MESSAGES/messages.mo b/searx/translations/it/LC_MESSAGES/messages.mo index 04f065b3c..5e88744b2 100644 Binary files a/searx/translations/it/LC_MESSAGES/messages.mo and b/searx/translations/it/LC_MESSAGES/messages.mo differ diff --git a/searx/translations/it/LC_MESSAGES/messages.po b/searx/translations/it/LC_MESSAGES/messages.po index 8a8cbfcfd..03dbd18cf 100644 --- a/searx/translations/it/LC_MESSAGES/messages.po +++ b/searx/translations/it/LC_MESSAGES/messages.po @@ -26,7 +26,7 @@ msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2023-02-20 11:22+0000\n" -"PO-Revision-Date: 2023-03-16 10:25+0000\n" +"PO-Revision-Date: 2023-03-24 07:07+0000\n" "Last-Translator: return42 \n" "Language-Team: Italian \n" @@ -35,7 +35,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.16.2\n" +"X-Generator: Weblate 4.16.4\n" "Generated-By: Babel 2.11.0\n" #. CONSTANT_NAMES['DEFAULT_GROUP_NAME'] @@ -692,7 +692,6 @@ msgid "Theme style" msgstr "Stile tema" #: searx/templates/simple/preferences.html:217 -#, fuzzy msgid "Choose auto to follow your browser settings" msgstr "Seleziona automatico per seguire le impostazioni del tuo browser" @@ -703,7 +702,6 @@ msgstr "Allinea al centro" #: searx/templates/simple/preferences.html:223 #: searx/templates/simple/preferences.html:235 #: searx/templates/simple/preferences.html:247 -#, fuzzy msgid "On" msgstr "Attivo" diff --git a/searx/translations/ms/LC_MESSAGES/messages.mo b/searx/translations/ms/LC_MESSAGES/messages.mo index 9e4b0dc46..c6bef8106 100644 Binary files a/searx/translations/ms/LC_MESSAGES/messages.mo and b/searx/translations/ms/LC_MESSAGES/messages.mo differ diff --git a/searx/translations/ms/LC_MESSAGES/messages.po b/searx/translations/ms/LC_MESSAGES/messages.po index 80db9ca59..3127a635e 100644 --- a/searx/translations/ms/LC_MESSAGES/messages.po +++ b/searx/translations/ms/LC_MESSAGES/messages.po @@ -5,20 +5,22 @@ # niele2 , 2022. # Markus Heiser , 2022. # Zaid Aiman , 2022. +# chenghui-lee , 2023. msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2023-02-20 11:22+0000\n" -"PO-Revision-Date: 2022-10-28 07:18+0000\n" -"Last-Translator: Markus Heiser \n" +"PO-Revision-Date: 2023-03-21 17:37+0000\n" +"Last-Translator: chenghui-lee \n" +"Language-Team: Malay \n" "Language: ms\n" -"Language-Team: Malay " -"\n" -"Plural-Forms: nplurals=1; plural=0;\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.16.4\n" "Generated-By: Babel 2.11.0\n" #. CONSTANT_NAMES['DEFAULT_GROUP_NAME'] @@ -279,6 +281,9 @@ msgid "" "format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or" " WebP." msgstr "" +"Tidak boleh mengakses pautan imeg. Ini boleh disebabkan oleh format file " +"yang tidak disokong. TinEye hanya menyokong imeg yang dalam format JPEG, " +"PNG, GIF, BMP, TIFF atau WebP." #: searx/engines/tineye.py:46 msgid "" @@ -351,13 +356,15 @@ msgstr "" #: searx/plugins/self_info.py:20 msgid "Self Information" -msgstr "" +msgstr "Maklumat Diri" #: searx/plugins/self_info.py:21 msgid "" "Displays your IP if the query is \"ip\" and your user agent if the query " "contains \"user agent\"." msgstr "" +"Memaparkan IP anda jika pertanyaan ialah \"ip\" dan ejen pengguna anda jika " +"pertanyaan mengandungi \"user agent\"." #: searx/plugins/tor_check.py:25 msgid "Tor check plugin" @@ -374,12 +381,16 @@ msgid "" "Could not download the list of Tor exit-nodes from: " "https://check.torproject.org/exit-addresses" msgstr "" +"Tidak dapat memuat turun senarai nod keluar Tor dari: https://check." +"torproject.org/exit-addresses" #: searx/plugins/tor_check.py:78 msgid "" "You are using Tor and it looks like you have this external IP address: " "{ip_address}" msgstr "" +"Anda sedang menggunakan Tor dan nampaknya anda mempunyai alamat IP luaran " +"ini: {ip_address}" #: searx/plugins/tor_check.py:86 msgid "You are not using Tor and you have this external IP address: {ip_address}" @@ -405,7 +416,7 @@ msgstr "" #: searx/templates/simple/404.html:4 msgid "Page not found" -msgstr "" +msgstr "Laman tidak dapat dijumpai" #: searx/templates/simple/404.html:6 #, python-format @@ -414,15 +425,15 @@ msgstr "" #: searx/templates/simple/404.html:6 msgid "search page" -msgstr "" +msgstr "Laman carian" #: searx/templates/simple/base.html:46 msgid "About" -msgstr "" +msgstr "Tentang" #: searx/templates/simple/base.html:50 msgid "Donate" -msgstr "" +msgstr "Derma" #: searx/templates/simple/base.html:54 #: searx/templates/simple/preferences.html:99 @@ -439,7 +450,7 @@ msgstr "" #: searx/templates/simple/base.html:65 msgid "Source code" -msgstr "" +msgstr "Kod sumber" #: searx/templates/simple/base.html:66 msgid "Issue tracker" @@ -447,7 +458,7 @@ msgstr "" #: searx/templates/simple/base.html:67 searx/templates/simple/stats.html:18 msgid "Engine stats" -msgstr "" +msgstr "Statistik enjin" #: searx/templates/simple/base.html:69 #: searx/templates/simple/messages/no_results.html:15 @@ -506,7 +517,7 @@ msgstr "" #: searx/templates/simple/preferences.html:29 msgid "No HTTPS" -msgstr "" +msgstr "Tanpa HTTPS" #: searx/templates/simple/messages/no_results.html:10 #: searx/templates/simple/preferences.html:31 @@ -540,7 +551,7 @@ msgstr "" #: searx/templates/simple/preferences.html:105 msgid "General" -msgstr "" +msgstr "Umum" #: searx/templates/simple/preferences.html:108 msgid "Default categories" @@ -563,7 +574,7 @@ msgstr "" #: searx/templates/simple/preferences.html:126 msgid "What language do you prefer for search?" -msgstr "" +msgstr "Bahasa apa yang anda suka untuk membuat carian?" #: searx/templates/simple/preferences.html:126 msgid "Choose Auto-detect to let SearXNG detect the language of your query." @@ -589,21 +600,21 @@ msgstr "" #: searx/templates/simple/filters/safesearch.html:2 #: searx/templates/simple/preferences.html:149 msgid "Strict" -msgstr "" +msgstr "Ketat" #: searx/templates/simple/filters/safesearch.html:3 #: searx/templates/simple/preferences.html:150 msgid "Moderate" -msgstr "" +msgstr "Sederhana" #: searx/templates/simple/filters/safesearch.html:4 #: searx/templates/simple/preferences.html:151 msgid "None" -msgstr "" +msgstr "Tanpa" #: searx/templates/simple/preferences.html:154 msgid "Filter content" -msgstr "" +msgstr "Tapis kandungan" #: searx/templates/simple/preferences.html:160 msgid "Open Access DOI resolver" @@ -617,11 +628,11 @@ msgstr "" #: searx/templates/simple/preferences.html:174 msgid "Engine tokens" -msgstr "" +msgstr "Token enjin" #: searx/templates/simple/preferences.html:178 msgid "Access tokens for private engines" -msgstr "" +msgstr "Akses token untuk enjin persendirian" #: searx/templates/simple/preferences.html:182 msgid "User interface" @@ -637,7 +648,7 @@ msgstr "" #: searx/templates/simple/preferences.html:198 msgid "Theme" -msgstr "" +msgstr "Tema" #: searx/templates/simple/preferences.html:206 msgid "Change SearXNG layout" @@ -645,7 +656,7 @@ msgstr "" #: searx/templates/simple/preferences.html:209 msgid "Theme style" -msgstr "" +msgstr "Gaya tema" #: searx/templates/simple/preferences.html:217 msgid "Choose auto to follow your browser settings" @@ -659,13 +670,13 @@ msgstr "" #: searx/templates/simple/preferences.html:235 #: searx/templates/simple/preferences.html:247 msgid "On" -msgstr "" +msgstr "Buka" #: searx/templates/simple/preferences.html:224 #: searx/templates/simple/preferences.html:236 #: searx/templates/simple/preferences.html:248 msgid "Off" -msgstr "" +msgstr "Tutup" #: searx/templates/simple/preferences.html:227 msgid "Displays results in the center of the page (Oscar layout)." @@ -689,11 +700,11 @@ msgstr "" #: searx/templates/simple/preferences.html:257 msgid "Privacy" -msgstr "" +msgstr "Privasi" #: searx/templates/simple/preferences.html:260 msgid "HTTP Method" -msgstr "" +msgstr "Kaedah HTTP" #: searx/templates/simple/preferences.html:267 msgid "" @@ -701,10 +712,13 @@ msgid "" "href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" " rel=\"external\">learn more about request methods" msgstr "" +"Ubah cara borang diserahkan,ketahui lebih " +"lanjut tentang kaedah permintaan" #: searx/templates/simple/preferences.html:272 msgid "Image proxy" -msgstr "" +msgstr "Proksi imej" #: searx/templates/simple/preferences.html:275 #: searx/templates/simple/preferences.html:287 @@ -732,11 +746,11 @@ msgstr "" #: searx/templates/simple/preferences.html:297 msgid "Engines" -msgstr "" +msgstr "Enjin-enjin" #: searx/templates/simple/preferences.html:298 msgid "Currently used search engines" -msgstr "" +msgstr "Enjin carian yang digunakan pada masa ini" #: searx/templates/simple/preferences.html:305 msgid "" @@ -747,12 +761,12 @@ msgstr "" #: searx/templates/simple/preferences.html:310 #: searx/templates/simple/preferences.html:361 msgid "Allow" -msgstr "" +msgstr "Benarkan" #: searx/templates/simple/preferences.html:311 #: searx/templates/simple/stats.html:25 msgid "Engine name" -msgstr "" +msgstr "Nama enjin" #: searx/templates/simple/preferences.html:312 msgid "Shortcut" @@ -770,36 +784,36 @@ msgstr "" #: searx/templates/simple/preferences.html:316 #: searx/templates/simple/stats.html:28 msgid "Response time" -msgstr "" +msgstr "Masa tindak balas" #: searx/templates/simple/preferences.html:317 msgid "Max time" -msgstr "" +msgstr "Masa maksimum" #: searx/templates/simple/preferences.html:318 #: searx/templates/simple/stats.html:29 msgid "Reliability" -msgstr "" +msgstr "Kebolehpercayaan" #: searx/templates/simple/preferences.html:356 msgid "Special Queries" -msgstr "" +msgstr "Pertanyaan Khas" #: searx/templates/simple/preferences.html:362 msgid "Keywords" -msgstr "" +msgstr "Kata kunci" #: searx/templates/simple/preferences.html:363 msgid "Name" -msgstr "" +msgstr "Nama" #: searx/templates/simple/preferences.html:364 msgid "Description" -msgstr "" +msgstr "Deskripsi" #: searx/templates/simple/preferences.html:365 msgid "Examples" -msgstr "" +msgstr "Contoh-contoh" #: searx/templates/simple/preferences.html:368 msgid "This is the list of SearXNG's instant answering modules." @@ -820,8 +834,9 @@ msgid "" msgstr "" #: searx/templates/simple/preferences.html:399 +#, fuzzy msgid "With that list, you can assess SearXNG transparency." -msgstr "" +msgstr "Dengan senarai ini, anda boleh menilai ketelusan SearXNG." #: searx/templates/simple/preferences.html:404 msgid "Cookie name" @@ -829,7 +844,7 @@ msgstr "" #: searx/templates/simple/preferences.html:405 msgid "Value" -msgstr "" +msgstr "Nilai" #: searx/templates/simple/preferences.html:417 msgid "Search URL of the currently saved preferences" @@ -843,7 +858,7 @@ msgstr "" #: searx/templates/simple/preferences.html:422 msgid "URL to restore your preferences in another browser" -msgstr "" +msgstr "URL untuk memulihkan pilihan anda dalam pelayar lain" #: searx/templates/simple/preferences.html:426 msgid "" @@ -865,7 +880,7 @@ msgstr "" #: searx/templates/simple/preferences.html:436 msgid "Save" -msgstr "" +msgstr "Simpan" #: searx/templates/simple/preferences.html:437 msgid "Reset defaults" @@ -873,7 +888,7 @@ msgstr "" #: searx/templates/simple/preferences.html:438 msgid "Back" -msgstr "" +msgstr "Balik" #: searx/templates/simple/results.html:23 msgid "Answers" @@ -881,7 +896,7 @@ msgstr "" #: searx/templates/simple/results.html:39 msgid "Number of results" -msgstr "" +msgstr "Bilangan keputusan" #: searx/templates/simple/messages/no_results.html:6 #: searx/templates/simple/results.html:46 @@ -894,7 +909,7 @@ msgstr "" #: searx/templates/simple/results.html:68 msgid "Suggestions" -msgstr "" +msgstr "Cadangan" #: searx/templates/simple/results.html:90 msgid "Search URL" @@ -906,23 +921,23 @@ msgstr "" #: searx/templates/simple/results.html:120 msgid "Try searching for:" -msgstr "" +msgstr "Cuba cari:" #: searx/templates/simple/results.html:152 msgid "Back to top" -msgstr "" +msgstr "Balik ke atas" #: searx/templates/simple/results.html:170 msgid "Previous page" -msgstr "" +msgstr "Halaman sebelumnya" #: searx/templates/simple/results.html:187 msgid "Next page" -msgstr "" +msgstr "Halaman seterusnya" #: searx/templates/simple/search.html:3 msgid "Display the front page" -msgstr "" +msgstr "Paparkan muka depan" #: searx/templates/simple/search.html:9 #: searx/templates/simple/simple_search.html:5 @@ -941,7 +956,7 @@ msgstr "" #: searx/templates/simple/stats.html:21 msgid "There is currently no data available. " -msgstr "" +msgstr "Pada masa ini tiada data tersedia. " #: searx/templates/simple/stats.html:26 msgid "Scores" @@ -953,19 +968,19 @@ msgstr "" #: searx/templates/simple/stats.html:59 msgid "Total" -msgstr "" +msgstr "Jumlah" #: searx/templates/simple/stats.html:60 msgid "HTTP" -msgstr "" +msgstr "HTTP" #: searx/templates/simple/stats.html:61 msgid "Processing" -msgstr "" +msgstr "Sedang memproses" #: searx/templates/simple/stats.html:99 msgid "Warnings" -msgstr "" +msgstr "Amaran" #: searx/templates/simple/stats.html:99 msgid "Errors and exceptions" @@ -977,11 +992,11 @@ msgstr "" #: searx/templates/simple/stats.html:107 msgid "Message" -msgstr "" +msgstr "Mesej" #: searx/templates/simple/stats.html:109 msgid "Percentage" -msgstr "" +msgstr "Peratus" #: searx/templates/simple/stats.html:111 msgid "Parameter" @@ -989,15 +1004,15 @@ msgstr "" #: searx/templates/simple/stats.html:119 msgid "Filename" -msgstr "" +msgstr "Nama fail" #: searx/templates/simple/stats.html:120 msgid "Function" -msgstr "" +msgstr "Fungsi" #: searx/templates/simple/stats.html:121 msgid "Code" -msgstr "" +msgstr "Kod" #: searx/templates/simple/stats.html:128 msgid "Checker" @@ -1009,31 +1024,31 @@ msgstr "" #: searx/templates/simple/stats.html:132 msgid "Comment(s)" -msgstr "" +msgstr "Ulasan" #: searx/templates/simple/filters/time_range.html:3 msgid "Anytime" -msgstr "" +msgstr "Bila-bila masa" #: searx/templates/simple/filters/time_range.html:6 msgid "Last day" -msgstr "" +msgstr "Dalam 24 jam" #: searx/templates/simple/filters/time_range.html:9 msgid "Last week" -msgstr "" +msgstr "Dalam 1 minggu" #: searx/templates/simple/filters/time_range.html:12 msgid "Last month" -msgstr "" +msgstr "Dalam 1 bulan" #: searx/templates/simple/filters/time_range.html:15 msgid "Last year" -msgstr "" +msgstr "Dalam 1 tahun" #: searx/templates/simple/messages/no_cookies.html:3 msgid "Information!" -msgstr "" +msgstr "Informasi!" #: searx/templates/simple/messages/no_cookies.html:4 msgid "currently, there are no cookies defined." @@ -1049,7 +1064,7 @@ msgstr "" #: searx/templates/simple/messages/no_results.html:20 msgid "Sorry!" -msgstr "" +msgstr "Harap maaf!" #: searx/templates/simple/messages/no_results.html:21 msgid "" @@ -1059,24 +1074,24 @@ msgstr "" #: searx/templates/simple/result_templates/default.html:6 msgid "show media" -msgstr "" +msgstr "tunjuk media" #: searx/templates/simple/result_templates/default.html:6 msgid "hide media" -msgstr "" +msgstr "sembunyikan media" #: searx/templates/simple/result_templates/default.html:14 #: searx/templates/simple/result_templates/videos.html:14 msgid "This site did not provide any description." -msgstr "" +msgstr "Laman web ini tidak memberikan sebarang diskripsi." #: searx/templates/simple/result_templates/images.html:19 msgid "Format" -msgstr "" +msgstr "Format" #: searx/templates/simple/result_templates/images.html:21 msgid "Engine" -msgstr "" +msgstr "Enjin" #: searx/templates/simple/result_templates/images.html:22 msgid "View source" @@ -1084,19 +1099,19 @@ msgstr "" #: searx/templates/simple/result_templates/map.html:12 msgid "address" -msgstr "" +msgstr "alamat" #: searx/templates/simple/result_templates/map.html:43 msgid "show map" -msgstr "" +msgstr "tunjuk peta" #: searx/templates/simple/result_templates/map.html:43 msgid "hide map" -msgstr "" +msgstr "sembunyikan peta" #: searx/templates/simple/result_templates/paper.html:5 msgid "Published date" -msgstr "" +msgstr "Tarikh diterbitkan" #: searx/templates/simple/result_templates/paper.html:9 msgid "Journal" @@ -1116,31 +1131,31 @@ msgstr "" #: searx/templates/simple/result_templates/paper.html:25 msgid "Tags" -msgstr "" +msgstr "Tag" #: searx/templates/simple/result_templates/paper.html:26 msgid "DOI" -msgstr "" +msgstr "DOI" #: searx/templates/simple/result_templates/paper.html:27 msgid "ISSN" -msgstr "" +msgstr "ISSN" #: searx/templates/simple/result_templates/paper.html:28 msgid "ISBN" -msgstr "" +msgstr "ISBN" #: searx/templates/simple/result_templates/paper.html:33 msgid "PDF" -msgstr "" +msgstr "PDF" #: searx/templates/simple/result_templates/paper.html:34 msgid "HTML" -msgstr "" +msgstr "HTML" #: searx/templates/simple/result_templates/torrent.html:6 msgid "magnet link" -msgstr "" +msgstr "pautan magnet" #: searx/templates/simple/result_templates/torrent.html:7 msgid "torrent file" @@ -1156,7 +1171,7 @@ msgstr "" #: searx/templates/simple/result_templates/torrent.html:11 msgid "Filesize" -msgstr "" +msgstr "Saiz fail" #: searx/templates/simple/result_templates/torrent.html:12 msgid "Bytes" @@ -1164,19 +1179,19 @@ msgstr "" #: searx/templates/simple/result_templates/torrent.html:13 msgid "kiB" -msgstr "" +msgstr "kiB" #: searx/templates/simple/result_templates/torrent.html:14 msgid "MiB" -msgstr "" +msgstr "MiB" #: searx/templates/simple/result_templates/torrent.html:15 msgid "GiB" -msgstr "" +msgstr "GiB" #: searx/templates/simple/result_templates/torrent.html:16 msgid "TiB" -msgstr "" +msgstr "TiB" #: searx/templates/simple/result_templates/torrent.html:20 msgid "Number of Files" @@ -1249,4 +1264,3 @@ msgstr "sembunyikkan video" #~ msgid "Automatically detect the query search language and switch to it." #~ msgstr "" -