From 1d6597b40773b688ca317e1ab1ffe133b370afb1 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Tue, 17 Nov 2015 23:13:30 +0100 Subject: [PATCH 001/238] [enh] initial structure --- .nojekyll | 0 docs/_themes/searx_theme/layout.html | 20 + docs/_themes/searx_theme/relations.html | 15 + docs/_themes/searx_theme/static/style.css_t | 441 ++++++++++++++++++++ docs/_themes/searx_theme/theme.conf | 7 + docs/conf.py | 358 ++++++++++++++++ docs/dev/contribution_guide.rst | 71 ++++ docs/dev/install/installation.rst | 277 ++++++++++++ docs/dev/plugins.rst | 45 ++ docs/dev/search_api.rst | 24 ++ docs/dev/translation.rst | 74 ++++ docs/index.rst | 39 ++ docs/static/img/searx_logo_small.png | Bin 0 -> 6472 bytes docs/user/search_syntax.rst | 33 ++ 14 files changed, 1404 insertions(+) create mode 100644 .nojekyll create mode 100644 docs/_themes/searx_theme/layout.html create mode 100644 docs/_themes/searx_theme/relations.html create mode 100644 docs/_themes/searx_theme/static/style.css_t create mode 100644 docs/_themes/searx_theme/theme.conf create mode 100644 docs/conf.py create mode 100644 docs/dev/contribution_guide.rst create mode 100644 docs/dev/install/installation.rst create mode 100644 docs/dev/plugins.rst create mode 100644 docs/dev/search_api.rst create mode 100644 docs/dev/translation.rst create mode 100644 docs/index.rst create mode 100644 docs/static/img/searx_logo_small.png create mode 100644 docs/user/search_syntax.rst diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/docs/_themes/searx_theme/layout.html b/docs/_themes/searx_theme/layout.html new file mode 100644 index 00000000..edf70c1a --- /dev/null +++ b/docs/_themes/searx_theme/layout.html @@ -0,0 +1,20 @@ +{%- extends "basic/layout.html" %} +{%- block extrahead %} + {{ super() }} + {% if theme_touch_icon %} + + {% endif %} + + +{% endblock %} +{%- block relbar2 %}{% endblock %} +{%- block relbar1 %}{% endblock %} +{%- block sidebarsearch %}{% endblock %} +{%- block sidebarsourcelink %}{% endblock %} +{%- block sidebartoc %}{% endblock %} +{%- block footer %} + +{%- endblock %} diff --git a/docs/_themes/searx_theme/relations.html b/docs/_themes/searx_theme/relations.html new file mode 100644 index 00000000..13cfa019 --- /dev/null +++ b/docs/_themes/searx_theme/relations.html @@ -0,0 +1,15 @@ + diff --git a/docs/_themes/searx_theme/static/style.css_t b/docs/_themes/searx_theme/static/style.css_t new file mode 100644 index 00000000..4a266671 --- /dev/null +++ b/docs/_themes/searx_theme/static/style.css_t @@ -0,0 +1,441 @@ +/* + * flasky.css_t + * ~~~~~~~~~~~~ + * + * :copyright: Copyright 2010 by Armin Ronacher. Modifications by Kenneth Reitz. + * :license: Flask Design License, see LICENSE for details. + */ + +{% set page_width = '940px' %} +{% set sidebar_width = '220px' %} + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro'; + font-size: 17px; + background-color: white; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + width: {{ page_width }}; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 {{ sidebar_width }}; +} + +div.sphinxsidebar { + width: {{ sidebar_width }}; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +img.floatingflask { + padding: 0 0 10px 10px; + float: right; +} + +div.footer { + width: {{ page_width }}; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 0 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 -20px; + text-align: center; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: 'Garamond', 'Georgia', serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar input { + border: 1px solid #ccc; + font-family: 'Georgia', serif; + font-size: 1em; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Garamond', 'Georgia', serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #ddd; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #eaeaea; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + background: #fafafa; + margin: 20px -30px; + padding: 10px 30px; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} + +div.admonition tt.xref, div.admonition a tt { + border-bottom: 1px solid #fafafa; +} + +dd div.admonition { + margin-left: -60px; + padding-left: 60px; +} + +div.admonition p.admonition-title { + font-family: 'Garamond', 'Georgia', serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: white; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt { + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +img.screenshot { +} + +tt.descname, tt.descclassname { + font-size: 0.95em; +} + +tt.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #eee; + background: #fdfdfd; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.footnote td.label { + width: 0px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #eee; + padding: 7px 30px; + margin: 15px -30px; + line-height: 1.3em; +} + +dl pre, blockquote pre, li pre { + margin-left: -60px; + padding-left: 60px; +} + +dl dl pre { + margin-left: -90px; + padding-left: 90px; +} + +tt { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid white; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt { + background: #EEE; +} + + +@media screen and (max-width: 600px) { + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + div.sphinxsidebar { + display: none; + } + +} + +div.sidebar_container, div.sidebar_container h1 { +} + +div.sidebar_container h1 { + padding: 0; + margin: 0; + font-size: 350%; + line-height: 100%; +} + +div.sidebar_container ul li { + padding: 2px 8px; + font-size: 0.9em; +} diff --git a/docs/_themes/searx_theme/theme.conf b/docs/_themes/searx_theme/theme.conf new file mode 100644 index 00000000..38f9aaa9 --- /dev/null +++ b/docs/_themes/searx_theme/theme.conf @@ -0,0 +1,7 @@ +[theme] +inherit = basic +stylesheet = style.css +pygments_style = flask_theme_support.FlaskyStyle + +[options] +touch_icon = diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..30fe9031 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,358 @@ +# -*- coding: utf-8 -*- +# +# searx documentation build configuration file, created by +# sphinx-quickstart on Tue Nov 17 17:12:13 2015. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'searx' +copyright = u'2015, Adam Tauber' +author = u'Adam Tauber' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.8.0' +# The full version, including alpha/beta/rc tags. +release = '0.8.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +sys.path.append(os.path.abspath('_themes')) +html_theme_path = ['_themes'] +html_theme = 'searx_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'searxdoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'searx.tex', u'searx Documentation', + u'Adam Tauber', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'searx', u'searx Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'searx', u'searx Documentation', + author, 'searx', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The basename for the epub file. It defaults to the project name. +#epub_basename = project + +# The HTML theme for the epub output. Since the default themes are not optimized +# for small screen space, using the same theme for HTML and epub output is +# usually not wise. This defaults to 'epub', a theme designed to save visual +# space. +#epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or 'en' if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +#epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +#epub_tocscope = 'default' + +# Fix unsupported image types using the Pillow. +#epub_fix_images = False + +# Scale large images. +#epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#epub_show_urls = 'inline' + +# If false, no index is generated. +#epub_use_index = True diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst new file mode 100644 index 00000000..5685549e --- /dev/null +++ b/docs/dev/contribution_guide.rst @@ -0,0 +1,71 @@ +How to contribute +----------------- + +Prime directives: Privacy, Hackability +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Searx has 2 prime directives, privacy-by-design and hackability. The +hackability comes in at least 3 levels: + +- support for search engines +- plugins for altering search behaviour +- hacking searx itself. + +Happy hacking. Observe the lack of "world domination" among the +directives, searx has no intentions for wide mass-adoption, rounded +corners, etc. The prime directive: "privacy" - deserves a seperate +chapter, as it's quite uncommon unfortunately, here it goes: + +Privacy-by-design +^^^^^^^^^^^^^^^^^ + +Searx is a privacy-respecting, hackable meta-search engine. It was born +out of the need for a privacy-respecing search facility that can be +expanded easily to maximise both its search and it's privacy protecting +capabilities. + +Consequences of Privacy-by-design are that some widely used features +work differently or not by default or at all. If some feature reduces +the privacy perserving aspects of searx, it should by default be +switched of, if implemented at all. There is enough search engines +already out there providing such features. = Since privacy-preservation +is a prime goal, if some feature does reduce the protection of searx and +is implemented, care should be taken to educate the user about the +consequences of choosing to enable this. Further features which +implement widely known features in a manner that protects privacy but +thus deviate from the users expectations should also be explained to the +user. Also if you think that something works weird with searx, maybe +it's because of the tool you use is designed in a way to interfere with +privacy respect, submiting a bugreport to the vendor of the tool that +misbehaves might be a good feedback for the vendor to reconsider his +disrespect towards his customers (e.g. GET vs POST requests in various +browsers). + +Remember the other prime directive of searx is to be hackable, so if the +above privacy concerns do not fancy you, simply fork it. + +Code +~~~~ + +Code modifications are accepted in pull requests, don't forget to add +yourself to the AUTHORS file. + +Python code follows all the pep8 standards except maximum line width +which is 120 char. + +Please be sure that the submitted code doesn't break existing tests and +follows coding conventions. + +If new functionality implemented, tests are highly appreciated. + +Translation +~~~~~~~~~~~ + +Translation currently happens on +`transifex `__. Please do not +update translation files in the repo. + +Documentation +~~~~~~~~~~~~~ + +The main place of the documentation is this wiki, updates are welcome. diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst new file mode 100644 index 00000000..2ce6a6b5 --- /dev/null +++ b/docs/dev/install/installation.rst @@ -0,0 +1,277 @@ +Installation +============ + +Step by step installation for Debian / Ubuntu with virtualenv. + +Source: https://about.okhin.fr/posts/Searx/ with some additions + +How to: `Setup searx in a couple of hours with a free SSL +certificate `__ + +Basic installation +------------------ + +For Ubuntu, be sure to have enable universe repository. + +Install packages : + +.. code:: sh + + sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev + +Install searx : + +.. code:: sh + + cd /usr/local + sudo git clone https://github.com/asciimoo/searx.git + sudo useradd searx -d /usr/local/searx + sudo chown searx:searx -R /usr/local/searx + +Install dependencies in a virtualenv : + +.. code:: sh + + sudo -u searx -i + cd /usr/local/searx + virtualenv searx-ve + . ./searx-ve/bin/activate + pip install -r requirements.txt + python setup.py install + +Configuration +------------- + +.. code:: sh + + sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml + +Edit searx/settings.yml if necessary. + +Check +----- + +Start searx : + +.. code:: sh + + python searx/webapp.py + +Go to http://localhost:8888 + +If everything works fine, disable the debug option in settings.yml : + +.. code:: sh + + sed -i -e "s/debug : True/debug : False/g" searx/settings.yml + +At this point searx is not demonized ; uwsgi allows this. + +You can exit the virtualenv and the searx user bash (enter exit command +twice). + +uwsgi +----- + +Install packages : + +.. code:: sh + + sudo apt-get install uwsgi uwsgi-plugin-python + +Create the configuration file /etc/uwsgi/apps-available/searx.ini with +this content : + +:: + + [uwsgi] + # Who will run the code + uid = searx + gid = searx + + # disable logging for privacy + disable-logging = true + + # Number of workers (usually CPU count) + workers = 4 + + # The right granted on the created socket + chmod-socket = 666 + + # Plugin to use and interpretor config + single-interpreter = true + master = true + plugin = python + + # Module to import + module = searx.webapp + + # Virtualenv and python path + virtualenv = /usr/local/searx/searx-ve/ + pythonpath = /usr/local/searx/ + chdir = /usr/local/searx/searx/ + +Activate the uwsgi application and restart : + +.. code:: sh + + cd /etc/uwsgi/apps-enabled + ln -s ../apps-available/searx.ini + /etc/init.d/uwsgi restart + +Web server +---------- + +with nginx +^^^^^^^^^^ + +If nginx is not installed (uwsgi will not work with the package +nginx-light) : + +.. code:: sh + + sudo apt-get install nginx + +Hosted at / +""""""""""" + +Create the configuration file /etc/nginx/sites-available/searx with this +content : + +.. code:: nginx + + server { + listen 80; + server_name searx.example.com; + root /usr/local/searx; + + location / { + include uwsgi_params; + uwsgi_pass unix:/run/uwsgi/app/searx/socket; + } + } + +Restart service : + +.. code:: sh + + sudo service nginx restart + sudo service uwsgi restart + +from subdirectory URL (/searx) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Add this configuration in the server config file +/etc/nginx/sites-available/default : + +.. code:: nginx + + location = /searx { rewrite ^ /searx/; } + location /searx { + try_files $uri @searx; + } + location @searx { + uwsgi_param SCRIPT_NAME /searx; + include uwsgi_params; + uwsgi_modifier1 30; + uwsgi_pass unix:/run/uwsgi/app/searx/socket; + } + +Enable base\_url in searx/settings.yml + +:: + + base_url : http://your.domain.tld/searx/ + +Restart service : + +.. code:: sh + + sudo service nginx restart + sudo service uwsgi restart + +disable logs +~~~~~~~~~~~~ + +for better privacy you can disable nginx logs about searx. + +how to proceed : below ``uwsgi_pass`` in +/etc/nginx/sites-available/default add + +:: + + access_log /dev/null; + error_log /dev/null; + +Restart service : + +.. code:: sh + + sudo service nginx restart + +with apache +----------- + +Add wsgi mod : + +.. code:: sh + + sudo apt-get install libapache2-mod-uwsgi + sudo a2enmod uwsgi + +Add this configuration in the file /etc/apache2/apache2.conf : + +.. code:: apache + + + Options FollowSymLinks Indexes + SetHandler uwsgi-handler + uWSGISocket /run/uwsgi/app/searx/socket + + +Note that if your instance of searx is not at the root, you should +change ```` by the location of your instance, like +````. + +Restart Apache : + +.. code:: sh + + sudo /etc/init.d/apache2 restart + +disable logs +------------ + +For better privacy you can disable Apache logs. + +WARNING : not tested + +WARNING : you can only disable logs for the whole (virtual) server not +for a specific path. + +Go back to /etc/apache2/apache2.conf and above ```` add : + +.. code:: apache + + CustomLog /dev/null combined + +Restart Apache : + +.. code:: sh + + sudo /etc/init.d/apache2 restart + +How to update +------------- + +.. code:: sh + + cd /usr/local/searx + sudo -u searx -i + . ./searx-ve/bin/activate + git stash + git pull origin master + git stash apply + pip install --upgrade -r requirements.txt + sudo service uwsgi restart + diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst new file mode 100644 index 00000000..c51fdf0e --- /dev/null +++ b/docs/dev/plugins.rst @@ -0,0 +1,45 @@ +Plugins +------- + +Plugins can extend/replace functionality of various components inside +searx. + +example\_plugin.py +~~~~~~~~~~~~~~~~~~ + +.. code:: python + + name = 'Example plugin' + description = 'This plugin extends the suggestions with the word "example"' + default_on = False # disable by default + + js_dependencies = tuple() # optional, list of static js files + css_dependencies = tuple() # optional, list of static css files + + + # attach callback to the post search hook + # request: flask request object + # ctx: the whole local context of the post search hook + def post_search(request, ctx): + ctx['search'].suggestions.add('example') + return True + +Currently implemented plugin entry points (a.k.a hooks) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Pre search hook (``pre_search``) +- Post search hook (``post_search``) +- Result hook (``on_result``) (is called if a new result is added (see + https\_rewrite plugin)) + +Feel free to add more hooks to the code if it is required by a plugin. + +TODO +~~~~ + +- Better documentation +- More hooks +- search hook (is called while searx is requesting results (for + example: things like math-solver), the different hooks are running + parallel) + diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst new file mode 100644 index 00000000..cd86fd71 --- /dev/null +++ b/docs/dev/search_api.rst @@ -0,0 +1,24 @@ +Search API +========== + +Search API endpoints: ``/``, ``/search`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Endpoints have equivalent functionality. + +Parameters +^^^^^^^^^^ + ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ +| Name | Description | | ++==================+====================================================================================================+=============================+ +| ``q`` | The search query, see :doc:`/user/search_syntax` | required | ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ +| ``categories`` | Comma separated list, specifies the active search categories | optional | ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ +| ``engines`` | Comma separated list, specifies the active search engines | optional | ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ +| ``pageno`` | Search page number | optional (default: ``1``) | ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ + +Both ``GET`` and ``POST`` methods are supported. diff --git a/docs/dev/translation.rst b/docs/dev/translation.rst new file mode 100644 index 00000000..0fc02a7d --- /dev/null +++ b/docs/dev/translation.rst @@ -0,0 +1,74 @@ +Translation +=========== + +run these commands in the root directory of searx + +Add new language +~~~~~~~~~~~~~~~~ + +``pybabel init -i messages.pot -d searx/translations -l it`` + +Update .po files +~~~~~~~~~~~~~~~~ + +``./utils/update-translations.sh`` + +You may have errors here. In that case, edit the +``update-translations.sh`` script to change ``pybabel`` to +``pybabel-python2`` + +After this step, you can modify the .po files. + +Compile translations +~~~~~~~~~~~~~~~~~~~~ + +``pybabel compile -d searx/translations`` + +Transifex stuff +~~~~~~~~~~~~~~~ + +Init Project +^^^^^^^^^^^^ + +.. code:: shell + + tx set --auto-local -r searx.messagespo 'searx/translations//LC_MESSAGES/messages.po' \ + --source-lang en --type PO --source-file messages.pot --execute + +http://docs.transifex.com/developer/client/set + +*TODO: mapping between transifex and searx* + +Get translations +^^^^^^^^^^^^^^^^ + +.. code:: shell + + tx pull -a + +http://docs.transifex.com/developer/client/pull + +Upload source File +^^^^^^^^^^^^^^^^^^ + +:: + + tx push -s + +Upload all Translation +^^^^^^^^^^^^^^^^^^^^^^ + +:: + + tx push -s -t + +upload specifc Translation (only for admins) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + tx push -t -l tr + +http://docs.transifex.com/developer/client/push + +*TODO: upload empty files? (new translations)* diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..abb62062 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,39 @@ +Privacy-respecting free metasearch engine +========================================= + +Searx is a free software internet metasearch engine which aggregates results from other search engines, while not storing information about its users. Searx does not track or profile its users, nor does it share its users' data with third parties. Additionally, searx can be used over Tor for online anonymity. + + +Features +-------- + + - Self hosted + - Does not track its users + - Does not share its users data with third parties + - Does not use cookies by default + - Does not profile its users + - Does not collect its users data + - Offers secure, encrypted connections (HTTPS/SSL) + - Hosted by organisations, such as La Quadrature du Net, which promote digital rights + + +Further reading +--------------- + +.. toctree:: + :maxdepth: 1 + + user/search_syntax + + +Developer documentation +----------------------- + +.. toctree:: + :maxdepth: 1 + + dev/contribution_guide + dev/install/installation + dev/search_api + dev/plugins + dev/translation diff --git a/docs/static/img/searx_logo_small.png b/docs/static/img/searx_logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..083932686b19d396dbbb6312cb46d73adbf48aa3 GIT binary patch literal 6472 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 i;3Z7A&!_Qqvi=_*y?ARXUj97*0000`_ +search in IT category **and** duckduckgo **and** wikipedia for ``qwer``). + +See the `/preferences page `_ for the +list of engines, categories and languages. + +Examples +~~~~~~~~ + +Search in wikipedia for ``qwer``: +`!wp qwer `__ or +`!wikipedia qwer `_ + +Image search: +`!images Cthulhu `_ + +Custom language in wikipedia: +`:hu !wp hackerspace `_ From 11d6d80d8831459161ac08ad0587ab8775ffd3e3 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 28 Nov 2015 19:26:45 +0100 Subject: [PATCH 003/238] [doc] engines overview added --- docs/dev/engine_overview.rst | 314 +++++++++++++++++++++++++++++++++++ docs/index.rst | 1 + 2 files changed, 315 insertions(+) create mode 100644 docs/dev/engine_overview.rst diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst new file mode 100644 index 00000000..7f170e9d --- /dev/null +++ b/docs/dev/engine_overview.rst @@ -0,0 +1,314 @@ +Engine overview +=============== + + +searx is a `metasearch-engine `__, +so it is using different search engines to provide better results. + +Because there is no general search-api which can be used for every +search-engine, there must be build an adapter between searx and the +external search-engine. This adapters are stored in the folder +`*searx/engines* `__, +and this site is build to make an general documentation about this +engines + + +.. contents:: + :depth: 3 + +general engine configuration +---------------------------- + +It is required to tell searx what results can the engine provide. The +arguments can be inserted in the engine file, or in the settings file +(normally ``settings.yml``). The arguments in the settings file override +the one in the engine file. + +Really, it is for most options no difference if there are contained in +the engine-file or in the settings. But there is a standard where to +place specific arguments by default. + + +engine-file +~~~~~~~~~~~ + ++---------------------+-----------+-----------------------------------------+ +| argument | type | information | ++=====================+===========+=========================================+ +| categories | list | pages, in which the engine is working | ++---------------------+-----------+-----------------------------------------+ +| paging | boolean | support multible pages | ++---------------------+-----------+-----------------------------------------+ +| language\_support | boolean | support language choosing | ++---------------------+-----------+-----------------------------------------+ + +settings.yml +~~~~~~~~~~~~ + ++------------+----------+-----------------------------------------------+ +| argument | type | information | ++============+==========+===============================================+ +| name | string | name of search-engine | ++------------+----------+-----------------------------------------------+ +| engine | string | name of searx-engine (filename without .py) | ++------------+----------+-----------------------------------------------+ +| shortcut | string | shortcut of search-engine | ++------------+----------+-----------------------------------------------+ +| timeout | string | specific timeout for search-engine | ++------------+----------+-----------------------------------------------+ + +overrides +~~~~~~~~~ + +There are some options, with have default values in the engine, but are +often overwritten by the settings. If the option is assigned in the +engine-file with ``None`` it has to be redefined in the settings, +otherwise searx is not starting with that engine. + +The naming of that overrides can be wathever you want. But we recommend +the using of already used overrides if possible: + ++-----------------------+----------+--------------------------------------------------------------+ +| argument | type | information | ++=======================+==========+==============================================================+ +| base\_url | string | base-url, can be overwrite to use same engine on other url | ++-----------------------+----------+--------------------------------------------------------------+ +| number\_of\_results | int | maximum number of results per request | ++-----------------------+----------+--------------------------------------------------------------+ +| language | string | ISO code of language and country like en\_US | ++-----------------------+----------+--------------------------------------------------------------+ +| api\_key | string | api-key if required by engine | ++-----------------------+----------+--------------------------------------------------------------+ + +example-code +~~~~~~~~~~~~ + +.. code:: python + + # engine dependent config + categories = ['general'] + paging = True + language_support = True + +doing request +------------- + +To perform a search you have to specific at least a url on which the +request is performing + +passed arguments +~~~~~~~~~~~~~~~~ + +This arguments can be used to calculate the search-query. Furthermore, +some of that parameters are filled with default values which can be +changed for special purpose. + ++----------------------+------------+------------------------------------------------------------------------+ +| argument | type | default-value, informations | ++======================+============+========================================================================+ +| url | string | ``''`` | ++----------------------+------------+------------------------------------------------------------------------+ +| method | string | ``'GET'`` | ++----------------------+------------+------------------------------------------------------------------------+ +| headers | set | ``{}`` | ++----------------------+------------+------------------------------------------------------------------------+ +| data | set | ``{}`` | ++----------------------+------------+------------------------------------------------------------------------+ +| cookies | set | ``{}`` | ++----------------------+------------+------------------------------------------------------------------------+ +| verify | boolean | ``True`` | ++----------------------+------------+------------------------------------------------------------------------+ +| headers.User-Agent | string | a random User-Agent | ++----------------------+------------+------------------------------------------------------------------------+ +| category | string | current category, like ``'general'`` | ++----------------------+------------+------------------------------------------------------------------------+ +| started | datetime | current date-time | ++----------------------+------------+------------------------------------------------------------------------+ +| pageno | int | current pagenumber | ++----------------------+------------+------------------------------------------------------------------------+ +| language | string | specific language code like ``'en_US'``, or ``'all'`` if unspecified | ++----------------------+------------+------------------------------------------------------------------------+ + +parsed arguments +~~~~~~~~~~~~~~~~ + +The function ``def request(query, params):`` is always returning the +``params`` variable back. Inside searx, the following paramters can be +used to specific a search-request: + ++------------+-----------+----------------------------------------------------------+ +| argument | type | information | ++============+===========+==========================================================+ +| url | string | requested url | ++------------+-----------+----------------------------------------------------------+ +| method | string | HTTP request methode | ++------------+-----------+----------------------------------------------------------+ +| headers | set | HTTP header informations | ++------------+-----------+----------------------------------------------------------+ +| data | set | HTTP data informations (parsed if ``method != 'GET'``) | ++------------+-----------+----------------------------------------------------------+ +| cookies | set | HTTP cookies | ++------------+-----------+----------------------------------------------------------+ +| verify | boolean | Performing SSL-Validity check | ++------------+-----------+----------------------------------------------------------+ + +example-code +~~~~~~~~~~~~ + +.. code:: python + + # search-url + base_url = 'https://example.com/' + search_string = 'search?{query}&page={page}' + + # do search-request + def request(query, params): + search_path = search_string.format( + query=urlencode({'q': query}), + page=params['pageno']) + + params['url'] = base_url + search_path + + return params + +returning results +----------------- + +Searx has the possiblity to return results in different media-types. +Currently the following media-types are supported: + +- default +- images +- videos +- torrent +- map + +to set another media-type as default, you must set the parameter +``template`` to the required type. + +default +~~~~~~~ + ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++====================+====================================================================================================================================+ +| url | string, which is representing the url of the result | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, which is representing the title of the result | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| content | string, which is giving a general result-text | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, represent when the result is published | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ + +images +~~~~~~ + +to use this template, the parameter + ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++====================+===========================================================================================================================================================+ +| template | is set to ``images.html`` | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| url | string, which is representing the url to the result site | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, which is representing the title of the result *(partly implemented)* | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| content | *(partly implemented)* | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, represent when the result is published *(partly implemented)* | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| img\_src | string, which is representing the url to the result image | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| thumbnail\_src | string, which is representing the url to a small-preview image | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + +videos +~~~~~~ + ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++====================+====================================================================================================================================+ +| template | is set to ``videos.html`` | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| url | string, which is representing the url of the result | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, which is representing the title of the result | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| content | *(not implemented yet)* | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, represent when the result is published | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| thumbnail | string, which is representing the url to a small-preview image | ++--------------------+------------------------------------------------------------------------------------------------------------------------------------+ + +torrent +~~~~~~~ + ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| template | is set to ```torrent.html``` | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| url | string, which is representing the url of the result | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, which is representing the title of the result | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| content | string, which is giving a general result-text | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | [datetime.datetime](https://docs.python.org/2/library/datetime.html#datetime-objects), represent when the result is published _(not implemented yet)_ | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| seed | int, number of seeder | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| leech | int, number of leecher | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| filesize | int, size of file in bytes | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| files | int, number of files | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| magnetlink | string, which is the [magnetlink](https://en.wikipedia.org/wiki/Magnet_URI_scheme) of the result | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ +| torrentfile | string, which is the torrentfile of the result | ++------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +map +~~~ + ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++=========================+====================================================================================================================================+ +| url | string, which is representing the url of the result | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, which is representing the title of the result | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| content | string, which is giving a general result-text | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, represent when the result is published | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| latitude | latitude of result (in decimal format) | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| longitude | longitude of result (in decimal format) | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| boundingbox | boundingbox of result (array of 4. values ``[lat-min, lat-max, lon-min, lon-max]``) | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| geojson | geojson of result (http://geojson.org) | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| osm.type | type of osm-object (if OSM-Result) | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| osm.id | id of osm-object (if OSM-Result) | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| address.name | name of object | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| address.road | street adress of object | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| address.house\_number | house number of object | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| address.locality | city, place of object | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| address.postcode | postcode of object | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| address.country | country of object | ++-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ + diff --git a/docs/index.rst b/docs/index.rst index abb62062..09dd1798 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -34,6 +34,7 @@ Developer documentation dev/contribution_guide dev/install/installation + dev/engine_overview dev/search_api dev/plugins dev/translation From ae69a58089cc195d211cd195c79cd60bb49a474f Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Tue, 1 Dec 2015 15:32:06 +0100 Subject: [PATCH 004/238] [doc] grammar & format fixes in engine overview --- docs/dev/engine_overview.rst | 175 +++++++++++++++++------------------ 1 file changed, 86 insertions(+), 89 deletions(-) diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index 7f170e9d..05a54b64 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -3,14 +3,13 @@ Engine overview searx is a `metasearch-engine `__, -so it is using different search engines to provide better results. +so it uses different search engines to provide better results. -Because there is no general search-api which can be used for every -search-engine, there must be build an adapter between searx and the -external search-engine. This adapters are stored in the folder -`*searx/engines* `__, -and this site is build to make an general documentation about this -engines +Because there is no general search API which could be used for every +search engine, an adapter has to be built between searx and the +external search engines. Adapters are stored under the folder +`searx/engines +`__. .. contents:: @@ -19,17 +18,16 @@ engines general engine configuration ---------------------------- -It is required to tell searx what results can the engine provide. The -arguments can be inserted in the engine file, or in the settings file +It is required to tell searx the type of results the engine provides. The +arguments can be set in the engine file or in the settings file (normally ``settings.yml``). The arguments in the settings file override -the one in the engine file. +the ones in the engine file. -Really, it is for most options no difference if there are contained in -the engine-file or in the settings. But there is a standard where to -place specific arguments by default. +It does not matter if an options is stored in the engine file or in the +settings. However, the standard way is the following: -engine-file +engine file ~~~~~~~~~~~ +---------------------+-----------+-----------------------------------------+ @@ -60,27 +58,27 @@ settings.yml overrides ~~~~~~~~~ -There are some options, with have default values in the engine, but are -often overwritten by the settings. If the option is assigned in the -engine-file with ``None`` it has to be redefined in the settings, -otherwise searx is not starting with that engine. +A few of the options have default values in the engine, but are +often overwritten by the settings. If ``None`` is assigned to an option +in the engine file, it has to be redefined in the settings, +otherwise searx will not start with that engine. -The naming of that overrides can be wathever you want. But we recommend -the using of already used overrides if possible: +The naming of that overrides is arbitrary. But the recommended +overrides are the following: -+-----------------------+----------+--------------------------------------------------------------+ -| argument | type | information | -+=======================+==========+==============================================================+ -| base\_url | string | base-url, can be overwrite to use same engine on other url | -+-----------------------+----------+--------------------------------------------------------------+ -| number\_of\_results | int | maximum number of results per request | -+-----------------------+----------+--------------------------------------------------------------+ -| language | string | ISO code of language and country like en\_US | -+-----------------------+----------+--------------------------------------------------------------+ -| api\_key | string | api-key if required by engine | -+-----------------------+----------+--------------------------------------------------------------+ ++-----------------------+----------+----------------------------------------------------------------+ +| argument | type | information | ++=======================+==========+================================================================+ +| base\_url | string | base-url, can be overwritten to use same engine on other URL | ++-----------------------+----------+----------------------------------------------------------------+ +| number\_of\_results | int | maximum number of results per request | ++-----------------------+----------+----------------------------------------------------------------+ +| language | string | ISO code of language and country like en\_US | ++-----------------------+----------+----------------------------------------------------------------+ +| api\_key | string | api-key if required by engine | ++-----------------------+----------+----------------------------------------------------------------+ -example-code +example code ~~~~~~~~~~~~ .. code:: python @@ -90,21 +88,20 @@ example-code paging = True language_support = True -doing request -------------- +making a request +---------------- -To perform a search you have to specific at least a url on which the -request is performing +To perform a search an URL have to be specified. In addition to +specifying an URL, arguments can be passed to the query. passed arguments ~~~~~~~~~~~~~~~~ -This arguments can be used to calculate the search-query. Furthermore, -some of that parameters are filled with default values which can be -changed for special purpose. +These arguments can be used to construct the search query. Furthermore, +parameters with default value can be redefined for special purposes. +----------------------+------------+------------------------------------------------------------------------+ -| argument | type | default-value, informations | +| argument | type | default-value, information | +======================+============+========================================================================+ | url | string | ``''`` | +----------------------+------------+------------------------------------------------------------------------+ @@ -132,27 +129,27 @@ changed for special purpose. parsed arguments ~~~~~~~~~~~~~~~~ -The function ``def request(query, params):`` is always returning the -``params`` variable back. Inside searx, the following paramters can be -used to specific a search-request: +The function ``def request(query, params):`` always returns the +``params`` variable. Inside searx, the following paramters can be +used to specify a search request: -+------------+-----------+----------------------------------------------------------+ -| argument | type | information | -+============+===========+==========================================================+ -| url | string | requested url | -+------------+-----------+----------------------------------------------------------+ -| method | string | HTTP request methode | -+------------+-----------+----------------------------------------------------------+ -| headers | set | HTTP header informations | -+------------+-----------+----------------------------------------------------------+ -| data | set | HTTP data informations (parsed if ``method != 'GET'``) | -+------------+-----------+----------------------------------------------------------+ -| cookies | set | HTTP cookies | -+------------+-----------+----------------------------------------------------------+ -| verify | boolean | Performing SSL-Validity check | -+------------+-----------+----------------------------------------------------------+ ++------------+-----------+---------------------------------------------------------+ +| argument | type | information | ++============+===========+=========================================================+ +| url | string | requested url | ++------------+-----------+---------------------------------------------------------+ +| method | string | HTTP request method | ++------------+-----------+---------------------------------------------------------+ +| headers | set | HTTP header information | ++------------+-----------+---------------------------------------------------------+ +| data | set | HTTP data information (parsed if ``method != 'GET'``) | ++------------+-----------+---------------------------------------------------------+ +| cookies | set | HTTP cookies | ++------------+-----------+---------------------------------------------------------+ +| verify | boolean | Performing SSL-Validity check | ++------------+-----------+---------------------------------------------------------+ -example-code +example code ~~~~~~~~~~~~ .. code:: python @@ -171,10 +168,10 @@ example-code return params -returning results ------------------ +returned results +---------------- -Searx has the possiblity to return results in different media-types. +Searx is able to return results of different media-types. Currently the following media-types are supported: - default @@ -183,8 +180,8 @@ Currently the following media-types are supported: - torrent - map -to set another media-type as default, you must set the parameter -``template`` to the required type. +To set another media-type as default, the parameter +``template`` must be set to the desired type. default ~~~~~~~ @@ -246,31 +243,31 @@ videos torrent ~~~~~~~ -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| template | is set to ```torrent.html``` | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| url | string, which is representing the url of the result | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, which is representing the title of the result | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| content | string, which is giving a general result-text | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | [datetime.datetime](https://docs.python.org/2/library/datetime.html#datetime-objects), represent when the result is published _(not implemented yet)_ | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| seed | int, number of seeder | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| leech | int, number of leecher | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| filesize | int, size of file in bytes | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| files | int, number of files | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| magnetlink | string, which is the [magnetlink](https://en.wikipedia.org/wiki/Magnet_URI_scheme) of the result | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ -| torrentfile | string, which is the torrentfile of the result | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| template | is set to ```torrent.html``` | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| url | string, which is representing the url of the result | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, which is representing the title of the result | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| content | string, which is giving a general result-text | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, represent when the result is published *(not implemented yet)* | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| seed | int, number of seeder | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| leech | int, number of leecher | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| filesize | int, size of file in bytes | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| files | int, number of files | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| magnetlink | string, which is the `magnetlink `__ of the result | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ +| torrentfile | string, which is the torrentfile of the result | ++------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ map From 240802003ee98e93e084788665445d81a9623c7d Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Thu, 10 Dec 2015 21:38:39 +0100 Subject: [PATCH 005/238] [doc] fix small mistakes in engine overview --- docs/dev/engine_overview.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index 05a54b64..186cc0f9 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -23,7 +23,7 @@ arguments can be set in the engine file or in the settings file (normally ``settings.yml``). The arguments in the settings file override the ones in the engine file. -It does not matter if an options is stored in the engine file or in the +It does not matter if an option is stored in the engine file or in the settings. However, the standard way is the following: @@ -63,7 +63,7 @@ often overwritten by the settings. If ``None`` is assigned to an option in the engine file, it has to be redefined in the settings, otherwise searx will not start with that engine. -The naming of that overrides is arbitrary. But the recommended +The naming of overrides is arbitrary. But the recommended overrides are the following: +-----------------------+----------+----------------------------------------------------------------+ From 3b068141928c17b6bb7b343d6e926fc3c443a022 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Thu, 10 Dec 2015 21:40:22 +0100 Subject: [PATCH 006/238] [doc] rewrite contribution guide --- docs/dev/contribution_guide.rst | 105 ++++++++++++++++++++------------ 1 file changed, 65 insertions(+), 40 deletions(-) diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 5685549e..73f4ea33 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -4,68 +4,93 @@ How to contribute Prime directives: Privacy, Hackability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Searx has 2 prime directives, privacy-by-design and hackability. The -hackability comes in at least 3 levels: +Searx has two prime directives, privacy-by-design and hackability. The +hackability comes in three levels: -- support for search engines -- plugins for altering search behaviour -- hacking searx itself. +- support of search engines +- plugins to alter search behaviour +- hacking searx itself -Happy hacking. Observe the lack of "world domination" among the -directives, searx has no intentions for wide mass-adoption, rounded -corners, etc. The prime directive: "privacy" - deserves a seperate -chapter, as it's quite uncommon unfortunately, here it goes: +Note the lack of "world domination" among the directives. +Searx has no intention of wide mass-adoption, rounded +corners, etc. The prime directive "privacy" deserves a separate +chapter, as it's quite uncommon unfortunately. Privacy-by-design ^^^^^^^^^^^^^^^^^ -Searx is a privacy-respecting, hackable meta-search engine. It was born -out of the need for a privacy-respecing search facility that can be -expanded easily to maximise both its search and it's privacy protecting -capabilities. +Searx was born out of the need for a privacy-respecting search tool +which can be extended easily to maximize both its search and its +privacy protecting capabilities. -Consequences of Privacy-by-design are that some widely used features -work differently or not by default or at all. If some feature reduces -the privacy perserving aspects of searx, it should by default be -switched of, if implemented at all. There is enough search engines -already out there providing such features. = Since privacy-preservation -is a prime goal, if some feature does reduce the protection of searx and -is implemented, care should be taken to educate the user about the -consequences of choosing to enable this. Further features which -implement widely known features in a manner that protects privacy but -thus deviate from the users expectations should also be explained to the -user. Also if you think that something works weird with searx, maybe -it's because of the tool you use is designed in a way to interfere with -privacy respect, submiting a bugreport to the vendor of the tool that -misbehaves might be a good feedback for the vendor to reconsider his -disrespect towards his customers (e.g. GET vs POST requests in various -browsers). +A few widely used features work differently or turned off by default or not implemented +at all as a consequence of privacy-by-design. + +If a feature reduces the privacy preserving aspects of searx, it +should be switched off by default or should not implemented at all. +There are plenty of search engines already providing such features. +If a feature reduces the protection of searx, users must be +informed about the effect of choosing to enable it. Features +that protect privacy but differ from the expectations of the +user should also be explained. + +Also, if you think that something works weird with searx, +it's might be because of the tool you use is designed in a way to interfere with +the privacy respect. Submitting a bugreport to the vendor of the tool that +misbehaves might be a good feedback to reconsider the disrespect to +its customers (e.g. GET vs POST requests in various browsers). Remember the other prime directive of searx is to be hackable, so if the above privacy concerns do not fancy you, simply fork it. +Happy hacking. + Code ~~~~ -Code modifications are accepted in pull requests, don't forget to add -yourself to the AUTHORS file. +In order to submit a patch, please follow the steps below: -Python code follows all the pep8 standards except maximum line width -which is 120 char. +- Follow coding conventions. -Please be sure that the submitted code doesn't break existing tests and -follows coding conventions. + - PEP8 standards apply, except the convention of line length + + - Maximum line length is 120 characters + +- Check if your code breaks existing tests. If so, update the tests or fix your code. + +- If your code can be unit-tested, add unit tests. + +- Add yourself to the AUTHORS file. + +- Create a pull request. -If new functionality implemented, tests are highly appreciated. Translation ~~~~~~~~~~~ -Translation currently happens on -`transifex `__. Please do not -update translation files in the repo. +Translation currently takes place on +`transifex `__. + +**Please, do not update translation files in the repo.** Documentation ~~~~~~~~~~~~~ -The main place of the documentation is this wiki, updates are welcome. +The documentation is built using Sphinx. So in order to be able to generate the required +files, you have to install it on your system. (It can be installed easily using pip.) + +1. Checkout the gh-pages branch. + +2. Edit the rst file you wish to update. Or create a new rst file and place it under the appropriate folder. + +3. Build the documentation using Sphinx. + +4. Add the updated and created files of these extension: + + - .rst + + - .html + + - .txt + +6. Create a pull request. From 08d26609a5cffa1c70d6aa22cfa4455e1feb2002 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Sun, 10 Jan 2016 20:10:53 +0100 Subject: [PATCH 007/238] update & fix install guide after install refactor --- docs/dev/install/installation.rst | 81 ++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 29 deletions(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index 2ce6a6b5..e15ff8b2 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -1,25 +1,28 @@ Installation ============ -Step by step installation for Debian / Ubuntu with virtualenv. +Step by step installation for Debian/Ubuntu with virtualenv. Source: https://about.okhin.fr/posts/Searx/ with some additions How to: `Setup searx in a couple of hours with a free SSL certificate `__ +.. contents:: + :depth: 3 + Basic installation ------------------ For Ubuntu, be sure to have enable universe repository. -Install packages : +Install packages: .. code:: sh sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev -Install searx : +Install searx: .. code:: sh @@ -28,7 +31,7 @@ Install searx : sudo useradd searx -d /usr/local/searx sudo chown searx:searx -R /usr/local/searx -Install dependencies in a virtualenv : +Install dependencies in a virtualenv: .. code:: sh @@ -36,8 +39,7 @@ Install dependencies in a virtualenv : cd /usr/local/searx virtualenv searx-ve . ./searx-ve/bin/activate - pip install -r requirements.txt - python setup.py install + ./manage.sh update_packages Configuration ------------- @@ -51,7 +53,7 @@ Edit searx/settings.yml if necessary. Check ----- -Start searx : +Start searx: .. code:: sh @@ -59,7 +61,7 @@ Start searx : Go to http://localhost:8888 -If everything works fine, disable the debug option in settings.yml : +If everything works fine, disable the debug option in settings.yml: .. code:: sh @@ -73,14 +75,14 @@ twice). uwsgi ----- -Install packages : +Install packages: .. code:: sh sudo apt-get install uwsgi uwsgi-plugin-python Create the configuration file /etc/uwsgi/apps-available/searx.ini with -this content : +this content: :: @@ -111,7 +113,7 @@ this content : pythonpath = /usr/local/searx/ chdir = /usr/local/searx/searx/ -Activate the uwsgi application and restart : +Activate the uwsgi application and restart: .. code:: sh @@ -126,7 +128,7 @@ with nginx ^^^^^^^^^^ If nginx is not installed (uwsgi will not work with the package -nginx-light) : +nginx-light): .. code:: sh @@ -136,7 +138,7 @@ Hosted at / """"""""""" Create the configuration file /etc/nginx/sites-available/searx with this -content : +content: .. code:: nginx @@ -151,7 +153,7 @@ content : } } -Restart service : +Restart service: .. code:: sh @@ -159,10 +161,10 @@ Restart service : sudo service uwsgi restart from subdirectory URL (/searx) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +"""""""""""""""""""""""""""""" Add this configuration in the server config file -/etc/nginx/sites-available/default : +/etc/nginx/sites-available/default: .. code:: nginx @@ -183,7 +185,7 @@ Enable base\_url in searx/settings.yml base_url : http://your.domain.tld/searx/ -Restart service : +Restart service: .. code:: sh @@ -195,7 +197,7 @@ disable logs for better privacy you can disable nginx logs about searx. -how to proceed : below ``uwsgi_pass`` in +how to proceed: below ``uwsgi_pass`` in /etc/nginx/sites-available/default add :: @@ -203,23 +205,23 @@ how to proceed : below ``uwsgi_pass`` in access_log /dev/null; error_log /dev/null; -Restart service : +Restart service: .. code:: sh sudo service nginx restart with apache ------------ +^^^^^^^^^^^ -Add wsgi mod : +Add wsgi mod: .. code:: sh sudo apt-get install libapache2-mod-uwsgi sudo a2enmod uwsgi -Add this configuration in the file /etc/apache2/apache2.conf : +Add this configuration in the file /etc/apache2/apache2.conf: .. code:: apache @@ -233,29 +235,29 @@ Note that if your instance of searx is not at the root, you should change ```` by the location of your instance, like ````. -Restart Apache : +Restart Apache: .. code:: sh sudo /etc/init.d/apache2 restart disable logs ------------- +"""""""""""" For better privacy you can disable Apache logs. -WARNING : not tested +WARNING: not tested -WARNING : you can only disable logs for the whole (virtual) server not +WARNING: you can only disable logs for the whole (virtual) server not for a specific path. -Go back to /etc/apache2/apache2.conf and above ```` add : +Go back to /etc/apache2/apache2.conf and above ```` add: .. code:: apache CustomLog /dev/null combined -Restart Apache : +Restart Apache: .. code:: sh @@ -272,6 +274,27 @@ How to update git stash git pull origin master git stash apply - pip install --upgrade -r requirements.txt + ./manage.sh update_packages sudo service uwsgi restart +Docker +------ + +Make sure you have installed Docker. For instance, you can deploy searx like this: + +.. code:: sh + + docker pull wonderfall/searx + docker run -d --name searx -p $PORT:8888 wonderfall/searx + +Go to http://localhost:$PORT. + +See https://hub.docker.com/r/wonderfall/searx/ for more informations. + +It's also possible to build searx from the embedded Dockerfile. + +.. code:: sh + + git clone https://github.com/asciimoo/searx.git + cd searx + docker build -t whatever/searx . From fb62d01194bc6049a0dc1e5ffbc3ca2f9536f26c Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Thu, 21 Jan 2016 16:25:40 +0100 Subject: [PATCH 008/238] [enh] improve translation documentation --- docs/dev/translation.rst | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/docs/dev/translation.rst b/docs/dev/translation.rst index 0fc02a7d..c070c36e 100644 --- a/docs/dev/translation.rst +++ b/docs/dev/translation.rst @@ -6,23 +6,29 @@ run these commands in the root directory of searx Add new language ~~~~~~~~~~~~~~~~ -``pybabel init -i messages.pot -d searx/translations -l it`` +.. code:: shell + + pybabel init -i messages.pot -d searx/translations -l it Update .po files ~~~~~~~~~~~~~~~~ -``./utils/update-translations.sh`` +.. code:: shell + + ./utils/update-translations.sh You may have errors here. In that case, edit the ``update-translations.sh`` script to change ``pybabel`` to -``pybabel-python2`` +``pybabel-python2 or pybabel2`` After this step, you can modify the .po files. Compile translations ~~~~~~~~~~~~~~~~~~~~ -``pybabel compile -d searx/translations`` +.. code:: shell + + pybabel compile -d searx/translations Transifex stuff ~~~~~~~~~~~~~~~ @@ -32,12 +38,14 @@ Init Project .. code:: shell + tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/ + tx set --auto-local -r searx.messagespo 'searx/translations//LC_MESSAGES/messages.po' \ --source-lang en --type PO --source-file messages.pot --execute -http://docs.transifex.com/developer/client/set +http://docs.transifex.com/client/init/ -*TODO: mapping between transifex and searx* +http://docs.transifex.com/client/set/ Get translations ^^^^^^^^^^^^^^^^ @@ -46,29 +54,27 @@ Get translations tx pull -a -http://docs.transifex.com/developer/client/pull +http://docs.transifex.com/client/pull Upload source File ^^^^^^^^^^^^^^^^^^ -:: +.. code:: shell tx push -s Upload all Translation ^^^^^^^^^^^^^^^^^^^^^^ -:: +.. code:: shell tx push -s -t -upload specifc Translation (only for admins) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +upload specifc Translation +~~~~~~~~~~~~~~~~~~~~~~~~~~ -:: +.. code:: shell tx push -t -l tr -http://docs.transifex.com/developer/client/push - -*TODO: upload empty files? (new translations)* +http://docs.transifex.com/client/push From cf9bd14a7d8a34c08af5f7a6370525c559d2ed96 Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Thu, 21 Jan 2016 16:30:42 +0100 Subject: [PATCH 009/238] [fix] little typo --- docs/dev/translation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/translation.rst b/docs/dev/translation.rst index c070c36e..bc32eda9 100644 --- a/docs/dev/translation.rst +++ b/docs/dev/translation.rst @@ -19,7 +19,7 @@ Update .po files You may have errors here. In that case, edit the ``update-translations.sh`` script to change ``pybabel`` to -``pybabel-python2 or pybabel2`` +``pybabel-python2`` or ``pybabel2`` After this step, you can modify the .po files. From 016ab5c1e87fa86b5e618616e1dd9d49d880c506 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Mon, 1 Feb 2016 21:28:13 +0100 Subject: [PATCH 010/238] add development quickstart --- docs/dev/quickstart.rst | 90 +++++++++++++++++++++++++++++++++++++++++ docs/index.rst | 1 + 2 files changed, 91 insertions(+) create mode 100644 docs/dev/quickstart.rst diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst new file mode 100644 index 00000000..edca8af5 --- /dev/null +++ b/docs/dev/quickstart.rst @@ -0,0 +1,90 @@ +Development Quickstart +---------------------- + +This quickstart guide gets your environment set up with searx. Furthermore, it gives a +short introduction to the new manage.sh script. + +How to setup your development environment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +First, clone the source code of searx to the desired folder. In this case the source +is cloned to ~/myprojects/searx. Then create and activate the searx-ve +virtualenv and install the required packages using manage.sh. + +.. code:: sh + + cd ~/myprojects + git clone https://github.com/asciimoo/searx.git + cd searx + virtualenv searx-ve + . ./searx-ve/bin/activate + ./manage.sh update_dev_packages + + +How to run tests +~~~~~~~~~~~~~~~~ + +Tests can be run using the manage.sh script. + +Following tests and checks are available: + +- Unit tests + +- Selenium tests + +- PEP8 validation + +- Unit test coverage check + +For example unit tests are run with the command below: + +.. code:: sh + + ./manage.sh unit_tests + +For further test options, please consult the help of the manage.sh script. + + +How to compile styles and javascript +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +How to build styles +^^^^^^^^^^^^^^^^^^^ + +Less is required to build the styles of searx. Less can be installed using either NodeJS or Apt. + +.. code:: sh + + sudo apt-get install nodejs + sudo npm install -g less + + +OR + +.. code:: sh + + sudo apt-get install node-less + +After satisfying the requirements styles can be build using manage.sh + +.. code:: sh + + ./manage.sh styles + + +How to build the source of the oscar theme +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Grunt must be installed in order to build the javascript sources. It depends on NodeJS, so first +Node has to be installed. + +.. code:: sh + + sudo apt-get install nodejs + sudo npm install -g grunt-cli + +After installing grunt, the files can be built using the following command: + +.. code:: sh + + ./manage.sh build_grunt diff --git a/docs/index.rst b/docs/index.rst index 09dd1798..d6e21894 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -32,6 +32,7 @@ Developer documentation .. toctree:: :maxdepth: 1 + dev/quickstart dev/contribution_guide dev/install/installation dev/engine_overview From 9c56154cfe121c6b89f48dd6b9af4e5e029d8a6e Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Thu, 21 Apr 2016 13:15:04 +0200 Subject: [PATCH 011/238] add dev tips to quickstart --- docs/dev/contribution_guide.rst | 2 ++ docs/dev/quickstart.rst | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 73f4ea33..65e58729 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -64,6 +64,8 @@ In order to submit a patch, please follow the steps below: - Create a pull request. +For more help on getting started with searx development, see :ref:`devquickstart`. + Translation ~~~~~~~~~~~ diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index edca8af5..92ef6238 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -1,3 +1,5 @@ +.. _devquickstart: + Development Quickstart ---------------------- @@ -88,3 +90,19 @@ After installing grunt, the files can be built using the following command: .. code:: sh ./manage.sh build_grunt + + + +Tips for debugging/development +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1. Turn on debug logging + Whether you are working on a new engine or trying to eliminate a bug, it is always a good idea + to turn on debug logging. When debug logging is enabled a stack trace appears, + instead of the cryptic ``Internal Server Error`` message. It can be turned on by setting + ``debug: False`` to ``debug: True`` in settings.yml. + +2. Run ``./manage.sh tests`` before creating a PR. + Failing build on Travis is common because of PEP8 checks. So a new commit must be created + containing these format fixes. This phase can be skipped if ``./manage.sh tests`` is run + locally before creating a PR. From 2430baa1fd6e4ecba4bc72a8e71c49a38b424216 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Thu, 21 Apr 2016 13:16:18 +0200 Subject: [PATCH 012/238] update install docs on reverse proxy --- docs/dev/install/installation.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index e15ff8b2..d69f30e8 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -171,6 +171,8 @@ Add this configuration in the server config file location = /searx { rewrite ^ /searx/; } location /searx { try_files $uri @searx; + proxy_pass http://localhost:9999/; + proxy_set_header X-Script-Name /searx; } location @searx { uwsgi_param SCRIPT_NAME /searx; @@ -179,6 +181,7 @@ Add this configuration in the server config file uwsgi_pass unix:/run/uwsgi/app/searx/socket; } + Enable base\_url in searx/settings.yml :: From b40d7a2b36014f8db825c06350ed84db7eed67d5 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Thu, 21 Apr 2016 14:30:17 +0200 Subject: [PATCH 013/238] add reverse proxy configuration --- docs/dev/install/installation.rst | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index d69f30e8..cbbd25f5 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -171,8 +171,6 @@ Add this configuration in the server config file location = /searx { rewrite ^ /searx/; } location /searx { try_files $uri @searx; - proxy_pass http://localhost:9999/; - proxy_set_header X-Script-Name /searx; } location @searx { uwsgi_param SCRIPT_NAME /searx; @@ -182,6 +180,23 @@ Add this configuration in the server config file } +OR + +using reverse proxy +(Please, note that reverse proxy advised to be used in case of single-user or low-traffic instances.) + +.. code:: nginx + + location /searx { + proxy_pass http://127.0.0.1:8888; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Scheme $scheme; + proxy_set_header X-Script-Name /searx; + proxy_buffering off; + } + + Enable base\_url in searx/settings.yml :: From ffcceed5170209bbc2fe54322973d72c9c4fff78 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Sat, 9 Jul 2016 21:46:20 +0200 Subject: [PATCH 014/238] version bump to 0.9.0 && year to 2016 --- docs/conf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 30fe9031..b1392bab 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,7 +49,7 @@ master_doc = 'index' # General information about the project. project = u'searx' -copyright = u'2015, Adam Tauber' +copyright = u'2015-2016, Adam Tauber' author = u'Adam Tauber' # The version info for the project you're documenting, acts as replacement for @@ -57,9 +57,9 @@ author = u'Adam Tauber' # built documents. # # The short X.Y version. -version = '0.8.0' +version = '0.9.0' # The full version, including alpha/beta/rc tags. -release = '0.8.0' +release = '0.9.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 2ad8715b3282557d39da21721487ff85683b1219 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Sat, 9 Jul 2016 22:31:21 +0200 Subject: [PATCH 016/238] better API docs && more features in list --- docs/admin/api.rst | 78 +++++++++++++++++++++++++++++++++++++++++ docs/dev/plugins.rst | 34 +++++++++--------- docs/dev/search_api.rst | 19 ++++++---- docs/index.rst | 21 +++++++---- 4 files changed, 123 insertions(+), 29 deletions(-) create mode 100644 docs/admin/api.rst diff --git a/docs/admin/api.rst b/docs/admin/api.rst new file mode 100644 index 00000000..94508a28 --- /dev/null +++ b/docs/admin/api.rst @@ -0,0 +1,78 @@ +.. _adminapi: + +Administration API +------------------ + +Get configuration data +~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: sh + + GET /config + +Sample response +``````````````` + +.. code:: sh + + { + "autocomplete": "", + "categories": [ + "map", + "it", + "images", + ], + "default_locale": "", + "default_theme": "oscar", + "engines": [ + { + "categories": [ + "map" + ], + "enabled": true, + "name": "openstreetmap", + "shortcut": "osm" + }, + { + "categories": [ + "it" + ], + "enabled": true, + "name": "arch linux wiki", + "shortcut": "al" + }, + { + "categories": [ + "images" + ], + "enabled": true, + "name": "google images", + "shortcut": "goi" + }, + { + "categories": [ + "it" + ], + "enabled": false, + "name": "bitbucket", + "shortcut": "bb" + }, + ], + "instance_name": "searx", + "locales": { + "de": "Deutsch (German)", + "en": "English", + "eo": "Esperanto (Esperanto)", + }, + "plugins": [ + { + "enabled": true, + "name": "HTTPS rewrite" + }, + { + "enabled": false, + "name": "Vim-like hotkeys" + } + ], + "safe_search": 0 + } diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst index c51fdf0e..0f52af0d 100644 --- a/docs/dev/plugins.rst +++ b/docs/dev/plugins.rst @@ -1,11 +1,11 @@ Plugins ------- -Plugins can extend/replace functionality of various components inside +Plugins can extend or replace functionality of various components of searx. -example\_plugin.py -~~~~~~~~~~~~~~~~~~ +Example plugin +~~~~~~~~~~~~~~ .. code:: python @@ -24,22 +24,22 @@ example\_plugin.py ctx['search'].suggestions.add('example') return True -Currently implemented plugin entry points (a.k.a hooks) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Plugin entry points +~~~~~~~~~~~~~~~~~~~ -- Pre search hook (``pre_search``) -- Post search hook (``post_search``) -- Result hook (``on_result``) (is called if a new result is added (see - https\_rewrite plugin)) +Entry points (hooks) define when a plugin runs. Right now only three hooks are implemented. So feel free to implement a hook if it fits the behaviour of your plugin. -Feel free to add more hooks to the code if it is required by a plugin. +Pre search hook +``````````````` -TODO -~~~~ +Runs BEFORE the search request. Function to implement: ``pre_search`` -- Better documentation -- More hooks -- search hook (is called while searx is requesting results (for - example: things like math-solver), the different hooks are running - parallel) +Post search hook +```````````````` +Runs AFTER the search request. Function to implement: ``post_search`` + +Result hook +``````````` + +Runs when a new result is added to the result list. Function to implement: ``on_result`` diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index cd86fd71..59d3c825 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -1,13 +1,20 @@ Search API ========== -Search API endpoints: ``/``, ``/search`` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The search supports both ``GET`` and ``POST``. However, using ``GET`` the parameters of the request remain hidden. So it is advised to use ``GET`` for querying. -Endpoints have equivalent functionality. +Furthermore, two enpoints ``/`` and ``/search`` are available for querying. + +.. code:: sh + + GET / + +.. code:: sh + + GET /search Parameters -^^^^^^^^^^ +`````````` +------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ | Name | Description | | @@ -18,7 +25,7 @@ Parameters +------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ | ``engines`` | Comma separated list, specifies the active search engines | optional | +------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ +| ``lang`` | Code of the language | optional (default: ``all``) | ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ | ``pageno`` | Search page number | optional (default: ``1``) | +------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ - -Both ``GET`` and ``POST`` methods are supported. diff --git a/docs/index.rst b/docs/index.rst index d6e21894..c24eff4d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,7 +1,7 @@ -Privacy-respecting free metasearch engine -========================================= +Welcome to searx +================ -Searx is a free software internet metasearch engine which aggregates results from other search engines, while not storing information about its users. Searx does not track or profile its users, nor does it share its users' data with third parties. Additionally, searx can be used over Tor for online anonymity. +Searx is a free software internet metasearch engine which aggregates results from more than 70 engines, while not storing information about its users. Searx does not track or profile its users, nor does it share its users' data with third parties. Additionally, searx can be used over Tor for online anonymity. Features @@ -15,16 +15,26 @@ Features - Does not collect its users data - Offers secure, encrypted connections (HTTPS/SSL) - Hosted by organisations, such as La Quadrature du Net, which promote digital rights + - About 70 supported search engines + - Easy intergration with any search engine -Further reading ---------------- +User documentation +------------------ .. toctree:: :maxdepth: 1 user/search_syntax +Administrator documentation +--------------------------- + +.. toctree:: + :maxdepth: 1 + + dev/install/installation + admin/api Developer documentation ----------------------- @@ -34,7 +44,6 @@ Developer documentation dev/quickstart dev/contribution_guide - dev/install/installation dev/engine_overview dev/search_api dev/plugins From 521f398709ea481fdf55f1e4c111f063f91fa8c0 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Sat, 9 Jul 2016 23:01:00 +0200 Subject: [PATCH 018/238] disable breaking "searx" into multiple lines --- docs/_themes/searx_theme/static/style.css_t | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/_themes/searx_theme/static/style.css_t b/docs/_themes/searx_theme/static/style.css_t index 4a266671..0a312b76 100644 --- a/docs/_themes/searx_theme/static/style.css_t +++ b/docs/_themes/searx_theme/static/style.css_t @@ -38,6 +38,8 @@ div.bodywrapper { div.sphinxsidebar { width: {{ sidebar_width }}; + word-wrap: normal !important; + overflow-wrap: normal !important; } hr { From 9e135f9fab3894cc86264cb7552252ef0cf10581 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Fri, 15 Jul 2016 18:41:05 +0200 Subject: [PATCH 019/238] simplify index page --- docs/dev/install/installation.rst | 2 ++ docs/index.rst | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index cbbd25f5..b641a628 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -1,3 +1,5 @@ +.. _installation: + Installation ============ diff --git a/docs/index.rst b/docs/index.rst index c24eff4d..46960c0f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,22 +1,25 @@ Welcome to searx ================ -Searx is a free software internet metasearch engine which aggregates results from more than 70 engines, while not storing information about its users. Searx does not track or profile its users, nor does it share its users' data with third parties. Additionally, searx can be used over Tor for online anonymity. +Search without being tracked. +Searx is a free internet metasearch engine which aggregates results from more than 70 search services. Users are neither tracked nor profiled. Additionally, searx can be used over Tor for online anonymity. + +Get started with searx by using one of the `public instances`_. If you don't trust anyone, you can set up your own, see :ref:`installation`. + +.. _public instances: https://github.com/asciimoo/searx/wiki/Searx-instances Features -------- - Self hosted - - Does not track its users - - Does not share its users data with third parties - - Does not use cookies by default - - Does not profile its users - - Does not collect its users data - - Offers secure, encrypted connections (HTTPS/SSL) - - Hosted by organisations, such as La Quadrature du Net, which promote digital rights + - No user tracking + - No user profiling - About 70 supported search engines - - Easy intergration with any search engine + - Easy intergration with any search engines + - Cookies are not used by default + - Secure, encrypted connections (HTTPS/SSL) + - Hosted by organisations, such as La Quadrature du Net, which promote digital rights User documentation From 6d99db7af33f82c00dbb9d11e17a9c6a907591cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 6 Sep 2016 18:13:20 +0200 Subject: [PATCH 021/238] add new search parameter time_range --- docs/dev/search_api.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index 59d3c825..c1bc6a13 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -1,7 +1,7 @@ Search API ========== -The search supports both ``GET`` and ``POST``. However, using ``GET`` the parameters of the request remain hidden. So it is advised to use ``GET`` for querying. +The search supports both ``GET`` and ``POST``. Furthermore, two enpoints ``/`` and ``/search`` are available for querying. @@ -29,3 +29,5 @@ Parameters +------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ | ``pageno`` | Search page number | optional (default: ``1``) | +------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ +| ``time_range`` | Time range of search | optional | ++------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ From 013139b036e31043e25991112a34588011650243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 6 Sep 2016 18:16:29 +0200 Subject: [PATCH 023/238] add embedded search to docs --- docs/admin/api.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/admin/api.rst b/docs/admin/api.rst index 94508a28..8d616224 100644 --- a/docs/admin/api.rst +++ b/docs/admin/api.rst @@ -76,3 +76,19 @@ Sample response ], "safe_search": 0 } + +Embed search bar +---------------- + +The search bar can be embedded into websites. Just paste the example into the HTML of the site. +URL of the searx instance and values are customizable. + +.. code:: html + +
+ + + + + +
From daf736f1dda06507b63520d37e1160de44ba6636 Mon Sep 17 00:00:00 2001 From: Noemi Vanyi Date: Sat, 10 Sep 2016 15:12:11 +0200 Subject: [PATCH 025/238] add possible values of time_range param --- docs/dev/search_api.rst | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index c1bc6a13..03bb6f3f 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -16,18 +16,18 @@ Furthermore, two enpoints ``/`` and ``/search`` are available for querying. Parameters `````````` -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ -| Name | Description | | -+==================+====================================================================================================+=============================+ -| ``q`` | The search query, see :doc:`/user/search_syntax` | required | -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ -| ``categories`` | Comma separated list, specifies the active search categories | optional | -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ -| ``engines`` | Comma separated list, specifies the active search engines | optional | -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ -| ``lang`` | Code of the language | optional (default: ``all``) | -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ -| ``pageno`` | Search page number | optional (default: ``1``) | -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ -| ``time_range`` | Time range of search | optional | -+------------------+----------------------------------------------------------------------------------------------------+-----------------------------+ ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| Name | Description | | ++==================+====================================================================================================+==================================================+ +| ``q`` | The search query, see :doc:`/user/search_syntax` | required | ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| ``categories`` | Comma separated list, specifies the active search categories | optional | ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| ``engines`` | Comma separated list, specifies the active search engines | optional | ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| ``lang`` | Code of the language | optional (default: ``all``) | ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| ``pageno`` | Search page number | optional (default: ``1``) | ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| ``time_range`` | Time range of search | optional (possible: ``day``, ``month``, ``year``)| ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ From dca4d276a45cc85f97db326636b4b671a3263225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sun, 30 Oct 2016 01:01:22 +0200 Subject: [PATCH 027/238] add sample config of filtron --- docs/admin/filtron.rst | 114 +++++++++++++++++++++++++++++++++++++++++ docs/index.rst | 1 + 2 files changed, 115 insertions(+) create mode 100644 docs/admin/filtron.rst diff --git a/docs/admin/filtron.rst b/docs/admin/filtron.rst new file mode 100644 index 00000000..c422cb0a --- /dev/null +++ b/docs/admin/filtron.rst @@ -0,0 +1,114 @@ +How to protect an instance +========================== + +Searx depens on external search services. To avoid the abuse of these services it is advised to limit the number of requests processed by searx. + +An application firewall, ``filtron`` solves exactly this problem. Information on how to install it can be found at the `project page of filtron `__. + +Sample configuration of filtron +------------------------------- + +An example configuration can be find below. This configuration limits the access of + + * scripts or applications (roboagent limit) + + * webcrawlers (botlimit) + + * IPs which send too many requests (IP limit) + + * too many json, csv, etc. requests (rss/json limit) + + * the same UserAgent of if too many requests (useragent limit) + + +.. code:: json + + [ + { + "name": "search request", + "filters": ["Param:q", "Path=^(/|/search)$"], + "interval": , + "limit": , + "subrules": [ + { + "name": "roboagent limit", + "interval": , + "limit": , + "filters": ["Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"], + "actions": [ + {"name": "block", + "params": {"message": "Rate limit exceeded"}} + ] + }, + { + "name": "botlimit", + "limit": 0, + "stop": true, + "filters": ["Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"], + "actions": [ + {"name": "block", + "params": {"message": "Rate limit exceeded"}} + ] + }, + { + "name": "IP limit", + "interval": , + "limit": , + "stop": true, + "aggregations": ["Header:X-Forwarded-For"], + "actions": [ + {"name": "block", + "params": {"message": "Rate limit exceeded"}} + ] + }, + { + "name": "rss/json limit", + "interval": , + "limit": , + "stop": true, + "filters": ["Param:format=(csv|json|rss)"], + "actions": [ + {"name": "block", + "params": {"message": "Rate limit exceeded"}} + ] + }, + { + "name": "useragent limit", + "interval": , + "limit": , + "aggregations": ["Header:User-Agent"], + "actions": [ + {"name": "block", + "params": {"message": "Rate limit exceeded"}} + ] + } + ] + } + ] + + + +Route request through filtron +----------------------------- + +Filtron can be started using the following command: + +.. code:: bash + + $ filtron -rules rules.json + +It listens on 127.0.0.1:4004 and forwards filtered requests to 127.0.0.1:8888 by default. + +Use it along with ``nginx`` with the following example configuration. + +.. code:: bash + + location / { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Scheme $scheme; + proxy_pass http://127.0.0.1:4004/; + } + +Requests are coming from port 4004 going through filtron and then forwarded to port 8888 where a searx is being run. diff --git a/docs/index.rst b/docs/index.rst index 46960c0f..18e4b6d0 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -38,6 +38,7 @@ Administrator documentation dev/install/installation admin/api + admin/filtron Developer documentation ----------------------- From c2cf46092e7e805587fde191ea9c620ee2bcb158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Fri, 4 Nov 2016 18:38:07 +0100 Subject: [PATCH 029/238] docs: fix typos based on #653 --- docs/dev/engine_overview.rst | 226 ++++++++++++++++++----------------- docs/dev/plugins.rst | 2 +- docs/index.rst | 2 +- 3 files changed, 116 insertions(+), 114 deletions(-) diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index 186cc0f9..da7ee271 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -30,15 +30,17 @@ settings. However, the standard way is the following: engine file ~~~~~~~~~~~ -+---------------------+-----------+-----------------------------------------+ -| argument | type | information | -+=====================+===========+=========================================+ -| categories | list | pages, in which the engine is working | -+---------------------+-----------+-----------------------------------------+ -| paging | boolean | support multible pages | -+---------------------+-----------+-----------------------------------------+ -| language\_support | boolean | support language choosing | -+---------------------+-----------+-----------------------------------------+ ++----------------------+-----------+-----------------------------------------+ +| argument | type | information | ++======================+===========+=========================================+ +| categories | list | pages, in which the engine is working | ++----------------------+-----------+-----------------------------------------+ +| paging | boolean | support multible pages | ++----------------------+-----------+-----------------------------------------+ +| language\_support | boolean | support language choosing | ++----------------------+-----------+-----------------------------------------+ +| time\_range\_support | boolean | support search time range | ++----------------------+-----------+-----------------------------------------+ settings.yml ~~~~~~~~~~~~ @@ -186,126 +188,126 @@ To set another media-type as default, the parameter default ~~~~~~~ -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+====================+====================================================================================================================================+ -| url | string, which is representing the url of the result | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, which is representing the title of the result | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| content | string, which is giving a general result-text | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, represent when the result is published | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------+---------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++====================+===============================================================================================================+ +| url | string, url of the result | ++--------------------+---------------------------------------------------------------------------------------------------------------+ +| title | string, title of the result | ++--------------------+---------------------------------------------------------------------------------------------------------------+ +| content | string, general result-text | ++--------------------+---------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, time of publish | ++--------------------+---------------------------------------------------------------------------------------------------------------+ images ~~~~~~ to use this template, the parameter -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+====================+===========================================================================================================================================================+ -| template | is set to ``images.html`` | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| url | string, which is representing the url to the result site | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, which is representing the title of the result *(partly implemented)* | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| content | *(partly implemented)* | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, represent when the result is published *(partly implemented)* | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| img\_src | string, which is representing the url to the result image | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| thumbnail\_src | string, which is representing the url to a small-preview image | -+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++====================+=======================================================================================================================================+ +| template | is set to ``images.html`` | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| url | string, url to the result site | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, title of the result *(partly implemented)* | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| content | *(partly implemented)* | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, time of publish *(partly implemented)* | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| img\_src | string, url to the result image | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| thumbnail\_src | string, url to a small-preview image | ++--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ videos ~~~~~~ -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+====================+====================================================================================================================================+ -| template | is set to ``videos.html`` | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| url | string, which is representing the url of the result | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, which is representing the title of the result | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| content | *(not implemented yet)* | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, represent when the result is published | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| thumbnail | string, which is representing the url to a small-preview image | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------+--------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++====================+==============================================================================================================+ +| template | is set to ``videos.html`` | ++--------------------+--------------------------------------------------------------------------------------------------------------+ +| url | string, url of the result | ++--------------------+--------------------------------------------------------------------------------------------------------------+ +| title | string, title of the result | ++--------------------+--------------------------------------------------------------------------------------------------------------+ +| content | *(not implemented yet)* | ++--------------------+--------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, time of publish | ++--------------------+--------------------------------------------------------------------------------------------------------------+ +| thumbnail | string, url to a small-preview image | ++--------------------+--------------------------------------------------------------------------------------------------------------+ torrent ~~~~~~~ -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| template | is set to ```torrent.html``` | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| url | string, which is representing the url of the result | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, which is representing the title of the result | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| content | string, which is giving a general result-text | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, represent when the result is published *(not implemented yet)* | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| seed | int, number of seeder | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| leech | int, number of leecher | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| filesize | int, size of file in bytes | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| files | int, number of files | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| magnetlink | string, which is the `magnetlink `__ of the result | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -| torrentfile | string, which is the torrentfile of the result | -+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| template | is set to ``torrent.html`` | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| url | string, url of the result | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| title | string, title of the result | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| content | string, general result-text | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, time of publish *(not implemented yet)* | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| seed | int, number of seeder | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| leech | int, number of leecher | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| filesize | int, size of file in bytes | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| files | int, number of files | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| magnetlink | string, `magnetlink `__ of the result | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +| torrentfile | string, torrentfile of the result | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------+ map ~~~ -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+=========================+====================================================================================================================================+ -| url | string, which is representing the url of the result | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, which is representing the title of the result | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| content | string, which is giving a general result-text | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, represent when the result is published | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| latitude | latitude of result (in decimal format) | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| longitude | longitude of result (in decimal format) | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| boundingbox | boundingbox of result (array of 4. values ``[lat-min, lat-max, lon-min, lon-max]``) | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| geojson | geojson of result (http://geojson.org) | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| osm.type | type of osm-object (if OSM-Result) | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| osm.id | id of osm-object (if OSM-Result) | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| address.name | name of object | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| address.road | street adress of object | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| address.house\_number | house number of object | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| address.locality | city, place of object | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| address.postcode | postcode of object | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -| address.country | country of object | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------+ ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| result-parameter | information | ++=========================+==============================================================================================================+ +| url | string, url of the result | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| title | string, title of the result | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| content | string, general result-text | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| publishedDate | `datetime.datetime `__, time of publish | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| latitude | latitude of result (in decimal format) | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| longitude | longitude of result (in decimal format) | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| boundingbox | boundingbox of result (array of 4. values ``[lat-min, lat-max, lon-min, lon-max]``) | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| geojson | geojson of result (http://geojson.org) | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| osm.type | type of osm-object (if OSM-Result) | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| osm.id | id of osm-object (if OSM-Result) | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| address.name | name of object | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| address.road | street name of object | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| address.house\_number | house number of object | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| address.locality | city, place of object | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| address.postcode | postcode of object | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ +| address.country | country of object | ++-------------------------+--------------------------------------------------------------------------------------------------------------+ diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst index 0f52af0d..1d77f861 100644 --- a/docs/dev/plugins.rst +++ b/docs/dev/plugins.rst @@ -11,7 +11,7 @@ Example plugin name = 'Example plugin' description = 'This plugin extends the suggestions with the word "example"' - default_on = False # disable by default + default_on = False # disabled by default js_dependencies = tuple() # optional, list of static js files css_dependencies = tuple() # optional, list of static css files diff --git a/docs/index.rst b/docs/index.rst index 18e4b6d0..81b9fe33 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -16,7 +16,7 @@ Features - No user tracking - No user profiling - About 70 supported search engines - - Easy intergration with any search engines + - Easy integration with any search engine - Cookies are not used by default - Secure, encrypted connections (HTTPS/SSL) - Hosted by organisations, such as La Quadrature du Net, which promote digital rights From ee18ad780ea5c069c98e33f395dcd972c8a0bd09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Fri, 4 Nov 2016 21:53:11 +0100 Subject: [PATCH 031/238] conf: bump searx version to 0.10.0 --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b1392bab..3ede3445 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -57,9 +57,9 @@ author = u'Adam Tauber' # built documents. # # The short X.Y version. -version = '0.9.0' +version = '0.10.0' # The full version, including alpha/beta/rc tags. -release = '0.9.0' +release = '0.10.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 31ea4280bfab409a2518f95af26da0de32f4645e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sat, 5 Nov 2016 11:48:49 +0100 Subject: [PATCH 034/238] "why use a personal instance?" page --- docs/index.rst | 1 + docs/user/own-instance.rst | 43 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 docs/user/own-instance.rst diff --git a/docs/index.rst b/docs/index.rst index 81b9fe33..da5a886d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -29,6 +29,7 @@ User documentation :maxdepth: 1 user/search_syntax + admin/own-instance Administrator documentation --------------------------- diff --git a/docs/user/own-instance.rst b/docs/user/own-instance.rst new file mode 100644 index 00000000..56f9b011 --- /dev/null +++ b/docs/user/own-instance.rst @@ -0,0 +1,43 @@ +Why use a private instance? +=========================== + +"Is it worth to run my own instance?" is a common question among searx users. Before answering this question, see what options a searx user has. + +Public instances are open to everyone who has access to its URL. Usually, these are operated by unknown parties (from the users' point of view). Private instances can be used by a select group of people. It is for example a searx of group of friends or a company which can be accessed through VPN. Also it can be single user one which runs on the user's laptop. + +To gain more insight on how these instances work let's dive into how searx protects its users. + +How does searx protect privacy? +------------------------------- + +Searx protects the privacy of its users in multiple ways regardless of the type of the instance (private, public). Removal of private data from search requests comes in three forms: + + 1. removal of private data from requests going to search services + 2. not forwarding anything from a third party services through search services (e.g. advertisement) + 3. removal of private data from requests going to the result pages + +Removing private data means not forwarding IP addresses, not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. + +Searx does not serve adds or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. + +What are the consequences of using public instances? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If someone uses a public instance, he/she has to trust the administrator of that instance. +This means that the user of the public instance does not know whether his/her requests are logged, aggregated and sent or sold to a third party. + +Also, public instances without proper protection are more vulnerable to abusing the search service, In this case the external service in exchange returns CAPTCHAs or bans the IP of the instance. Thus, search requests return less results. + +I see. What about private instances? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If users run their own instances, everything is in their control: the source code, logging settings and private data. Unknown instance administrators do not have to be trusted. + +Furthermore, as the default settings of their instance is editable, there is no need to use cookies to tailor searx to their needs. So preferences will not be reset to defaults when clearing browser cookies. As settings are stored on their computer, it will not be accessible to others as long as their computer is not compromised. + +Conclusion +---------- + +Always use an instance which is operated by people you trust. The privacy features of searx are available to users no matter what kind of instance they use. + +If someone is on the go or just wants to try searx for the first time public instances are the best choices. Additionally, public instance are making a world a better place, because those who cannot or do not want to run an instance, have access to a privacy respecting search service. From f55eea083f9100e4275208c34347088be251c83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sat, 5 Nov 2016 11:49:07 +0100 Subject: [PATCH 035/238] generated files of parent --- docs/index.rst | 2 +- docs/user/own-instance.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index da5a886d..abd57f08 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -29,7 +29,7 @@ User documentation :maxdepth: 1 user/search_syntax - admin/own-instance + user/own-instance Administrator documentation --------------------------- diff --git a/docs/user/own-instance.rst b/docs/user/own-instance.rst index 56f9b011..3f280228 100644 --- a/docs/user/own-instance.rst +++ b/docs/user/own-instance.rst @@ -16,7 +16,7 @@ Searx protects the privacy of its users in multiple ways regardless of the type 2. not forwarding anything from a third party services through search services (e.g. advertisement) 3. removal of private data from requests going to the result pages -Removing private data means not forwarding IP addresses, not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. +Removing private data means not forwarding not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. IP addresses will be the IP of the insance. But searx can be ocnfigured to use proxy or Tor. `Result proxy `__ is supported, too. Searx does not serve adds or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. From 50f25193c17707157c905f455b1d3a27c3edc001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sat, 5 Nov 2016 16:22:29 +0100 Subject: [PATCH 036/238] engine overview fix torrent table --- docs/dev/engine_overview.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index da7ee271..d57ca5b3 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -247,7 +247,7 @@ torrent +------------------+---------------------------------------------------------------------------------------------------------------------------------------+ | result-parameter | information | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ ++==================+=======================================================================================================================================+ | template | is set to ``torrent.html`` | +------------------+---------------------------------------------------------------------------------------------------------------------------------------+ | url | string, url of the result | From d0d2d18a4d1d47b5809c9129f2b891ab6f80e42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sat, 5 Nov 2016 16:26:53 +0100 Subject: [PATCH 038/238] fix typos in own instance page --- docs/user/own-instance.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/own-instance.rst b/docs/user/own-instance.rst index 3f280228..71d9f11a 100644 --- a/docs/user/own-instance.rst +++ b/docs/user/own-instance.rst @@ -16,7 +16,7 @@ Searx protects the privacy of its users in multiple ways regardless of the type 2. not forwarding anything from a third party services through search services (e.g. advertisement) 3. removal of private data from requests going to the result pages -Removing private data means not forwarding not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. IP addresses will be the IP of the insance. But searx can be ocnfigured to use proxy or Tor. `Result proxy `__ is supported, too. +Removing private data means not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. IP addresses will be the IP of the instance. But searx can be configured to use proxy or Tor. `Result proxy `__ is supported, too. Searx does not serve adds or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. From 6ecd8e3bd72df43d903800ee05e33185efe22ee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sun, 20 Nov 2016 21:12:52 +0100 Subject: [PATCH 040/238] installation: nginx mod to sites-enabled --- docs/dev/install/installation.rst | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index b641a628..b02718fe 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -3,20 +3,13 @@ Installation ============ -Step by step installation for Debian/Ubuntu with virtualenv. - -Source: https://about.okhin.fr/posts/Searx/ with some additions - -How to: `Setup searx in a couple of hours with a free SSL -certificate `__ - .. contents:: :depth: 3 Basic installation ------------------ -For Ubuntu, be sure to have enable universe repository. +Step by step installation for Debian/Ubuntu with virtualenv. For Ubuntu, be sure to have enable universe repository. Install packages: @@ -166,7 +159,7 @@ from subdirectory URL (/searx) """""""""""""""""""""""""""""" Add this configuration in the server config file -/etc/nginx/sites-available/default: +/etc/nginx/sites-enabled/default: .. code:: nginx @@ -318,3 +311,11 @@ It's also possible to build searx from the embedded Dockerfile. git clone https://github.com/asciimoo/searx.git cd searx docker build -t whatever/searx . + +References +========== + + * https://about.okhin.fr/posts/Searx/ with some additions + + * How to: `Setup searx in a couple of hours with a free SSL certificate `__ + From e43e5af207580bab7aeb3b8d866a27b282babab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sat, 18 Mar 2017 23:55:20 +0100 Subject: [PATCH 042/238] bump searx version to 0.11.0 --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 3ede3445..01249957 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -57,9 +57,9 @@ author = u'Adam Tauber' # built documents. # # The short X.Y version. -version = '0.10.0' +version = '0.11.0' # The full version, including alpha/beta/rc tags. -release = '0.10.0' +release = '0.11.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 1bd51c6de2f31ad15e5689ee7ff80f2283baa817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sat, 18 Mar 2017 23:57:19 +0100 Subject: [PATCH 044/238] rewrite Translation page --- docs/dev/translation.rst | 87 ++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 53 deletions(-) diff --git a/docs/dev/translation.rst b/docs/dev/translation.rst index bc32eda9..ab4dd98c 100644 --- a/docs/dev/translation.rst +++ b/docs/dev/translation.rst @@ -1,80 +1,61 @@ Translation =========== -run these commands in the root directory of searx +Requirements +------------ -Add new language -~~~~~~~~~~~~~~~~ + * Transifex account -.. code:: shell + * Installed CLI tool of Transifex - pybabel init -i messages.pot -d searx/translations -l it +Init Transifex project +---------------------- -Update .po files -~~~~~~~~~~~~~~~~ - -.. code:: shell - - ./utils/update-translations.sh - -You may have errors here. In that case, edit the -``update-translations.sh`` script to change ``pybabel`` to -``pybabel-python2`` or ``pybabel2`` - -After this step, you can modify the .po files. - -Compile translations -~~~~~~~~~~~~~~~~~~~~ - -.. code:: shell - - pybabel compile -d searx/translations - -Transifex stuff -~~~~~~~~~~~~~~~ - -Init Project -^^^^^^^^^^^^ +After installing ``transifex`` using pip, run the following command to initialize the project. .. code:: shell tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/ + +After ``$HOME/.transifexrc`` is created, get a Transifex API key and insert it into the configuration file. + +Create a configuration file for ``tx`` named ``$HOME/.tx/config``. + +.. code:: shell + + [main] + host = https://www.transifex.com + [searx.messagespo] + file_filter = searx/translations//LC_MESSAGES/messages.po + source_file = messages.pot + source_lang = en + type = PO + + +Then run ``tx set``: + +.. code:: shell + tx set --auto-local -r searx.messagespo 'searx/translations//LC_MESSAGES/messages.po' \ --source-lang en --type PO --source-file messages.pot --execute -http://docs.transifex.com/client/init/ -http://docs.transifex.com/client/set/ +Update translations +------------------- -Get translations -^^^^^^^^^^^^^^^^ +To retrieve the latest translations, pull it from Transifex. .. code:: shell tx pull -a -http://docs.transifex.com/client/pull - -Upload source File -^^^^^^^^^^^^^^^^^^ +Then check the new languages. If strings translated are not enough, delete those folders, because +those should not be compiled. Call the command below to compile the ``.po`` files. .. code:: shell - tx push -s + pybabel compile -d searx/translations -Upload all Translation -^^^^^^^^^^^^^^^^^^^^^^ -.. code:: shell - - tx push -s -t - -upload specifc Translation -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code:: shell - - tx push -t -l tr - -http://docs.transifex.com/client/push +After the compilation is finished commit the ``.po`` and ``.mo`` files and create a PR. From b8f5c75374a491d883036a9532bb98d02284c8a9 Mon Sep 17 00:00:00 2001 From: James Coleman Date: Wed, 19 Apr 2017 15:29:32 -0500 Subject: [PATCH 046/238] Corrected spelling of ads in user/own-instance.html --- docs/user/own-instance.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/own-instance.rst b/docs/user/own-instance.rst index 71d9f11a..555f82cc 100644 --- a/docs/user/own-instance.rst +++ b/docs/user/own-instance.rst @@ -18,7 +18,7 @@ Searx protects the privacy of its users in multiple ways regardless of the type Removing private data means not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. IP addresses will be the IP of the instance. But searx can be configured to use proxy or Tor. `Result proxy `__ is supported, too. -Searx does not serve adds or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. +Searx does not serve ads or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. What are the consequences of using public instances? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 93e6258463d67a33c956788a5552627a9798fb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Fri, 12 May 2017 22:51:48 +0200 Subject: [PATCH 047/238] add first blog entry on python3 support --- docs/_themes/searx_theme/relations.html | 1 + docs/blog/blog.rst | 7 +++ docs/blog/python3.rst | 54 ++++++++++++++++++++++++ docs/blog/searxpy3.png | Bin 0 -> 30947 bytes 4 files changed, 62 insertions(+) create mode 100644 docs/blog/blog.rst create mode 100644 docs/blog/python3.rst create mode 100644 docs/blog/searxpy3.png diff --git a/docs/_themes/searx_theme/relations.html b/docs/_themes/searx_theme/relations.html index 13cfa019..b7539e5a 100644 --- a/docs/_themes/searx_theme/relations.html +++ b/docs/_themes/searx_theme/relations.html @@ -3,6 +3,7 @@ diff --git a/docs/blog/blog.rst b/docs/blog/blog.rst new file mode 100644 index 00000000..aad448c6 --- /dev/null +++ b/docs/blog/blog.rst @@ -0,0 +1,7 @@ +Blog +==== + +.. toctree:: + :maxdepth: 1 + + python3 diff --git a/docs/blog/python3.rst b/docs/blog/python3.rst new file mode 100644 index 00000000..f9a05890 --- /dev/null +++ b/docs/blog/python3.rst @@ -0,0 +1,54 @@ +Introducing Python3 support +=========================== + +As most operation systems are coming with Python3 installed by default. So it is time for searx to support Python3. But don't worry support of Python2.7 won't be dropped. + +.. image:: hurray.png + :scale: 50 % + :alt: hurray + :align: center + + +How to run searx using Python3 +------------------------------ + +Please make sure that you run at least Python3.5. + +To run searx, first a Python3 virtualenv should be created. After entering the virtualenv, +dependencies must be installed. Then run searx with python3 instead of the usual python command. + +.. code:: sh + + virtualenv -p python3 venv3 + source venv3/bin/activate + pip3 install -r requirements.txt + python3 searx/webapp.py + + +If you want to run searx using Python2.7, you don't have to do anything differently as before. + +Fun facts +--------- + +- 115 files were changed when implementing the support for both Python versions. + +- All of the dependencies was compatible except for the robotframework used for browser tests. Thus, these tests were migrated to splinter. So from now on both versions are being tested on Travis and can be tested locally. + +If you found bugs... +-------------------- + +...please open an issue on `GitHub`_. Make sure that you mention your Python version in your issue, +so we can investigate it properly. + +.. _GitHub: https://github.com/asciimoo/searx/issues + +Acknowledgement +--------------- + +This development was sponsored by `NLnet Foundation`_. + +.. _NLnet Foundation: https://nlnet.nl/ + + +| Happy hacking. +| kvch // 2017.05.13 22:57 diff --git a/docs/blog/searxpy3.png b/docs/blog/searxpy3.png new file mode 100644 index 0000000000000000000000000000000000000000..8eeaeec55b6b633fb1ad02234371c5341acbdbc2 GIT binary patch literal 30947 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 literal 0 HcmV?d00001 From b92631bf8c36a8b7fa1fada219428af8e2abb566 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Mon, 12 Jun 2017 12:34:30 +0200 Subject: [PATCH 048/238] various mods: uwsgi setup and version update ++ py3 img src fix ++ new sphinx version - closes #939 --- docs/blog/python3.rst | 2 +- docs/conf.py | 6 +++--- docs/dev/install/installation.rst | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/blog/python3.rst b/docs/blog/python3.rst index f9a05890..eb14a49e 100644 --- a/docs/blog/python3.rst +++ b/docs/blog/python3.rst @@ -3,7 +3,7 @@ Introducing Python3 support As most operation systems are coming with Python3 installed by default. So it is time for searx to support Python3. But don't worry support of Python2.7 won't be dropped. -.. image:: hurray.png +.. image:: searxpy3.png :scale: 50 % :alt: hurray :align: center diff --git a/docs/conf.py b/docs/conf.py index 01249957..52aad663 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,7 +49,7 @@ master_doc = 'index' # General information about the project. project = u'searx' -copyright = u'2015-2016, Adam Tauber' +copyright = u'2015-2017, Adam Tauber' author = u'Adam Tauber' # The version info for the project you're documenting, acts as replacement for @@ -57,9 +57,9 @@ author = u'Adam Tauber' # built documents. # # The short X.Y version. -version = '0.11.0' +version = '0.12.0' # The full version, including alpha/beta/rc tags. -release = '0.11.0' +release = '0.12.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index b02718fe..e1ae3f2a 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -99,6 +99,8 @@ this content: single-interpreter = true master = true plugin = python + lazy-apps = true + enable-threads = true # Module to import module = searx.webapp From 74d8ed284dfb5363df4280350a8e29125f67a10a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Sun, 9 Jul 2017 22:02:29 +0200 Subject: [PATCH 050/238] add format param to search api --- docs/dev/search_api.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index 03bb6f3f..331bc4eb 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -31,3 +31,5 @@ Parameters +------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ | ``time_range`` | Time range of search | optional (possible: ``day``, ``month``, ``year``)| +------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +| ``format`` | Output format of results | optional (possible: ``json``, ``csv``, ``rss``) | ++------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ From 6cc9f5694979956fd54a695bff6d454ca17f721d Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Tue, 8 Aug 2017 15:19:02 +0200 Subject: [PATCH 052/238] [enh] add morty documentation --- docs/admin/morty.rst | 21 +++++++++++++++++++++ docs/index.rst | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs/admin/morty.rst diff --git a/docs/admin/morty.rst b/docs/admin/morty.rst new file mode 100644 index 00000000..49e62bba --- /dev/null +++ b/docs/admin/morty.rst @@ -0,0 +1,21 @@ +How to setup result proxy +========================= + +By default searx can only act as an image proxy for result images, +but it is possible to proxify all the result URLs with an external service, +`morty `__. + +To use this feature, morty has to be installed and activated in searx's ``settings.yml``. + +Add the following snippet to your ``settings.yml`` and restart searx: + + +.. code:: yaml + + result_proxy: + url : http://127.0.0.1:3000/ + key : your_morty_proxy_key + +``url`` is the address of the running morty service + +``key`` is an optional argument, see `morty's README `__ for more information. diff --git a/docs/index.rst b/docs/index.rst index abd57f08..7854fdb0 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -40,6 +40,7 @@ Administrator documentation dev/install/installation admin/api admin/filtron + admin/morty Developer documentation ----------------------- From 979dd3d96c91c0430adca7528cda18cc7e547211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 22 Aug 2017 21:30:00 +0200 Subject: [PATCH 053/238] blog: add post about searx-admin --- docs/blog/admin.rst | 42 ++++++++++++++++++++++++++++++ docs/blog/blog.rst | 1 + docs/blog/searx-admin-engines.png | Bin 0 -> 50840 bytes 3 files changed, 43 insertions(+) create mode 100644 docs/blog/admin.rst create mode 100644 docs/blog/searx-admin-engines.png diff --git a/docs/blog/admin.rst b/docs/blog/admin.rst new file mode 100644 index 00000000..18d5ed33 --- /dev/null +++ b/docs/blog/admin.rst @@ -0,0 +1,42 @@ +Searx admin interface: manage your instance from your browser +============================================================= + +One of the biggest advantages of searx is being extremely customizable. But at first it can be daunting to newcomers. +A barrier of taking advantage of this feature is our ugly settings file which is sometimes hard to understand and edit. + +To make self-hosting searx more accessible a new tool is introduced, called ``searx-admin``. +It is a web application which is capable of managing your instance and manipulating its settings via a web UI. +It aims to replace editing of ``settings.yml`` for less experienced administrators or people +who prefer graphical admin interfaces. + +.. figure:: searx-admin-engines.png + :scale: 50 % + :alt: Screenshot of engine list + :align: center + :figclass: align-center + + Configuration page of engines + + +Since ``searx-admin`` acts as a supervisor for searx, we have decided to implement it +as a standalone tool instead of part of searx. Another reason for making it a standalone +tool is that the codebase and dependencies of searx should not grow because of a fully optional feature, +which does not affect existing instances. + + +Installation +------------ + +Installation guide can be found in the repository of searx-admin: +https://github.com/kvch/searx-admin#installation--usage + +Acknowledgements +---------------- + +This development was sponsored by `NLnet Foundation`_. + +.. _NLnet Foundation: https://nlnet.nl/ + + +| Happy hacking. +| kvch // 2017.08.22 21:25 diff --git a/docs/blog/blog.rst b/docs/blog/blog.rst index aad448c6..77553d5c 100644 --- a/docs/blog/blog.rst +++ b/docs/blog/blog.rst @@ -5,3 +5,4 @@ Blog :maxdepth: 1 python3 + admin diff --git a/docs/blog/searx-admin-engines.png b/docs/blog/searx-admin-engines.png new file mode 100644 index 0000000000000000000000000000000000000000..610bacdf7b5e107d4329893b323e91a53bac40b7 GIT binary patch literal 50840 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 B5@7%U literal 0 HcmV?d00001 From 07ef4a3e4afc390ac08fe2ac4b6b2e1195604cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Mon, 23 Oct 2017 16:29:43 +0200 Subject: [PATCH 055/238] update search api with params and description on syntax --- docs/dev/search_api.rst | 215 +++++++++++++++++++++++++++++++++++----- 1 file changed, 192 insertions(+), 23 deletions(-) diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index 331bc4eb..ea3b0501 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -5,31 +5,200 @@ The search supports both ``GET`` and ``POST``. Furthermore, two enpoints ``/`` and ``/search`` are available for querying. -.. code:: sh - GET / +``GET /`` -.. code:: sh - - GET /search +``GET /search`` Parameters -`````````` +~~~~~~~~~~ -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| Name | Description | | -+==================+====================================================================================================+==================================================+ -| ``q`` | The search query, see :doc:`/user/search_syntax` | required | -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ``categories`` | Comma separated list, specifies the active search categories | optional | -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ``engines`` | Comma separated list, specifies the active search engines | optional | -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ``lang`` | Code of the language | optional (default: ``all``) | -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ``pageno`` | Search page number | optional (default: ``1``) | -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ``time_range`` | Time range of search | optional (possible: ``day``, ``month``, ``year``)| -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ``format`` | Output format of results | optional (possible: ``json``, ``csv``, ``rss``) | -+------------------+----------------------------------------------------------------------------------------------------+--------------------------------------------------+ +.. code:: sh + + q + +The search query. This string is passed to external search services. +Thus, searx supports syntax of each search service. For example, ``site:github.com searx`` is a valid +query for Google. However, if simply the query above is passed to any search engine which does not filter its +results based on this syntax, you might not get the results you wanted. + + +See more at :doc:`/user/search_syntax` + +Required. + +.. code:: sh + + categories + +Comma separated list, specifies the active search categories + +Optional. + +.. code:: sh + + engines + +Comma separated list, specifies the active search engines. + +Optional. + +.. code:: sh + + lang + +Code of the language. + +Optional. + +Default: ``all`` + +.. code:: sh + + pageno + +Search page number. + +Optional. + +Default: ``1`` + +.. code:: sh + + time_range + +Time range of search for engines which support it. See if an engine supports time range search in the preferences page of an instance. + +Optional. + +Possible: ``day``, ``month``, ``year`` + +.. code:: sh + + format + +Output format of results. + +Optional. + +Possible: ``json``, ``csv``, ``rss`` + +.. code:: sh + + results_on_new_tab + +Open search results on new tab. + +Optional. + +Default: ``0`` + +Possible: ``0``, ``1`` + +.. code:: sh + + image_proxy + +Proxy image results through searx. + +Optional. + +Default: ``False`` + +Possible: ``True``, ``False`` + +.. code:: sh + + autocomplete + +Service which completes words as you type. + +Optional. + +Default: empty + +Possible: ``google``, ``dbpedia``, ``duckduckgo``, ``startpage``, ``wikipedia`` + +.. code:: sh + + safesearch + +Filter search results of engines which support safe search. See if an engine supports safe search in the preferences page of an instance. + +Optional. + +Default: ``None`` + +Possible: ``0``, ``1``, ``None`` + +.. code:: sh + + theme + +Theme of instance. + +Optional. + +Default: ``oscar`` + +Possible: ``oscar``, ``simple``, ``legacy``, ``pix-art``, ``courgette`` + +Please note, available themes depend on an instance. It is possible that an instance administrator deleted, created or renamed themes on his/her instance. See the available options in the preferences page of the instance. + +.. code:: sh + + oscar-style + +Style of Oscar theme. It is only parsed if the theme of an instance is ``oscar``. + +Optional. + +Default: ``logicodev`` + +Possible: ``pointhi``, ``logicodev`` + +Please note, available styles depend on an instance. It is possible that an instance administrator deleted, created or renamed styles on his/her instance. See the available options in the preferences page of the instance. + +.. code:: sh + + enabled_plugins + +List of enabled plugins. + +Optional. + +Default: ``HTTPS_rewrite``, ``Self_Informations``, ``Search_on_category_select``, ``Tracker_URL_remover`` + +Possible: ``DOAI_rewrite``, ``HTTPS_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, ``Search_on_category_select`` + +.. code:: sh + + disabled_plugins + +List of disabled plugins. + +Optional. + +Default: ``DOAI_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys`` + +Possible: ``DOAI_rewrite``, ``HTTPS_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, ``Search_on_category_select`` + +.. code:: sh + + enabled_engines + +List of enabled engines. + +Optional. + +Possible: all engines + +.. code:: sh + + disabled_engines + +List of disabled engines. + +Optional. + +Possible: all engines From 2134c7c6939ce4f20fbb6ffca330ad7af0ff673a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Wed, 17 Jan 2018 22:05:10 +0100 Subject: [PATCH 056/238] change python-pybabel to python-babel in package requirements Closes #1147 --- docs/dev/install/installation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index e1ae3f2a..8b6bb69b 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -15,7 +15,7 @@ Install packages: .. code:: sh - sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev + sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev Install searx: From 20e85275cbea356827bd71fc8136245d37b0f209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 23 Jan 2018 20:43:22 +0100 Subject: [PATCH 057/238] remove Gratipay and Flattr from sidebar --- docs/_themes/searx_theme/relations.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/_themes/searx_theme/relations.html b/docs/_themes/searx_theme/relations.html index b7539e5a..5fb65cdd 100644 --- a/docs/_themes/searx_theme/relations.html +++ b/docs/_themes/searx_theme/relations.html @@ -10,7 +10,5 @@
From 94af140318338ab6e7b064b3b26b5fb45523d17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Bourrel?= Date: Thu, 30 Aug 2018 11:14:03 +0200 Subject: [PATCH 058/238] Update quickstart.rst Rename `build_grunt` to `grunt_build` as in manage.sh --- docs/dev/quickstart.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index 92ef6238..e7d4baf4 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -89,7 +89,7 @@ After installing grunt, the files can be built using the following command: .. code:: sh - ./manage.sh build_grunt + ./manage.sh grunt_build From 10ebe8cec9d926ca1c7c19336bf60c1ee88d9300 Mon Sep 17 00:00:00 2001 From: tmikaeld Date: Sun, 21 Oct 2018 11:36:11 +0200 Subject: [PATCH 060/238] Added missing symlink instruction --- docs/dev/install/installation.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index 8b6bb69b..6c3f773a 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -150,6 +150,10 @@ content: } } +Create a symlink to sites-enabled: + +sudo ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx + Restart service: .. code:: sh From 77494166d2c61dcc5e62447e88e6d3bb4e5254c2 Mon Sep 17 00:00:00 2001 From: tmikaeld Date: Sun, 21 Oct 2018 11:42:00 +0200 Subject: [PATCH 061/238] Formatting... --- docs/dev/install/installation.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index 6c3f773a..50b33a32 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -152,7 +152,9 @@ content: Create a symlink to sites-enabled: -sudo ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx +.. code:: sh + + sudo ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx Restart service: From e75af78d7aacdd545825ebb2aee902276e9d55a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Natal=20Ng=C3=A9tal?= Date: Wed, 5 Dec 2018 18:52:36 +0100 Subject: [PATCH 062/238] [Scripts] Force upgrade requirements. Force the upgrade of requirements with pip. At the moment, if the version in the requirement file is changed, there will be no effect, because the dependencies is already present. --- manage.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manage.sh b/manage.sh index a352ccc6..20d2cba3 100755 --- a/manage.sh +++ b/manage.sh @@ -18,12 +18,12 @@ ACTION="$1" update_packages() { pip install --upgrade pip pip install --upgrade setuptools - pip install -r "$BASE_DIR/requirements.txt" + pip install -Ur "$BASE_DIR/requirements.txt" } update_dev_packages() { update_packages - pip install -r "$BASE_DIR/requirements-dev.txt" + pip install -Ur "$BASE_DIR/requirements-dev.txt" } install_geckodriver() { From a818d3241df2cf010086f837a504b11983c3d55f Mon Sep 17 00:00:00 2001 From: Nicolas Gelot Date: Thu, 28 Mar 2019 18:07:02 +0100 Subject: [PATCH 063/238] Remove get local from request.args args parameters are merged in form in pre_request, so this patch removes that useless operation. --- searx/webapp.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index 72725977..c44612a4 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -157,10 +157,6 @@ def get_locale(): if request.preferences.get_value('locale') != '': locale = request.preferences.get_value('locale') - if 'locale' in request.args\ - and request.args['locale'] in settings['locales']: - locale = request.args['locale'] - if 'locale' in request.form\ and request.form['locale'] in settings['locales']: locale = request.form['locale'] From 373a66be3046bbb7deca20f08468cb5dea44eaf9 Mon Sep 17 00:00:00 2001 From: Nicolas Gelot Date: Thu, 28 Mar 2019 18:07:03 +0100 Subject: [PATCH 064/238] Fix locale and search language Locale and search language was always defined with english value. This patch inits the locale on `pre_request` in order to define the default value of locale and language preferences. Plus the `best_match` function provided by flask babel library did not work as expected. So the function `match_language` provided by searx is used to detect that the language from Accepted-Language header can be used in searx project. --- searx/preferences.py | 4 ++-- searx/settings.yml | 1 - searx/webapp.py | 28 +++++++++++++++++++++++----- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/searx/preferences.py b/searx/preferences.py index acaa67f6..912e89c0 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -243,8 +243,8 @@ class Preferences(object): super(Preferences, self).__init__() self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories + ['none']), - 'language': SearchLanguageSetting(settings['search']['language'], - choices=LANGUAGE_CODES), + 'language': SearchLanguageSetting(settings['ui']['default_locale'], + choices=list(LANGUAGE_CODES) + ['']), 'locale': EnumStringSetting(settings['ui']['default_locale'], choices=list(settings['locales'].keys()) + ['']), 'autocomplete': EnumStringSetting(settings['search']['autocomplete'], diff --git a/searx/settings.yml b/searx/settings.yml index 0be07b1e..8f1a06a7 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -5,7 +5,6 @@ general: search: safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "wikipedia" - leave blank to turn it off by default - language : "en-US" ban_time_on_fail : 5 # ban time in seconds after engine errors max_ban_time_on_fail : 120 # max ban time in seconds after engine errors diff --git a/searx/webapp.py b/searx/webapp.py index c44612a4..542c2c00 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -152,7 +152,14 @@ outgoing_proxies = settings['outgoing'].get('proxies') or None @babel.localeselector def get_locale(): - locale = request.accept_languages.best_match(settings['locales'].keys()) + locale = "en-US" + + for lang in request.headers.get("Accept-Language", locale).split(","): + locale = match_language(lang, settings['locales'].keys(), fallback=None) + if locale is not None: + break + + logger.debug("default locale from browser info is `%s`", locale) if request.preferences.get_value('locale') != '': locale = request.preferences.get_value('locale') @@ -164,6 +171,8 @@ def get_locale(): if locale == 'zh_TW': locale = 'zh_Hant_TW' + logger.debug("selected locale is `%s`", locale) + return locale @@ -342,7 +351,9 @@ def render(template_name, override_theme=None, **kwargs): if 'autocomplete' not in kwargs: kwargs['autocomplete'] = request.preferences.get_value('autocomplete') - if get_locale() in rtl_locales and 'rtl' not in kwargs: + locale = request.preferences.get_value('locale') + + if locale in rtl_locales and 'rtl' not in kwargs: kwargs['rtl'] = True kwargs['searx_version'] = VERSION_STRING @@ -355,7 +366,7 @@ def render(template_name, override_theme=None, **kwargs): if 'current_language' not in kwargs: kwargs['current_language'] = match_language(request.preferences.get_value('language'), LANGUAGE_CODES, - fallback=settings['search']['language']) + fallback=locale) # override url_for function in templates kwargs['url_for'] = url_for_theme @@ -423,6 +434,13 @@ def pre_request(): logger.exception('invalid settings') request.errors.append(gettext('Invalid settings')) + # init search language and locale + locale = get_locale() + if not preferences.get_value("language"): + preferences.parse_dict({"language": locale}) + if not preferences.get_value("locale"): + preferences.parse_dict({"locale": locale}) + # request.user_plugins request.user_plugins = [] allowed_plugins = preferences.plugins.get_enabled() @@ -593,7 +611,7 @@ def index(): unresponsive_engines=result_container.unresponsive_engines, current_language=match_language(search_query.lang, LANGUAGE_CODES, - fallback=settings['search']['language']), + fallback=request.preferences.get_value("language")), base_url=get_base_url(), theme=get_current_theme_name(), favicons=global_favicons[themes.index(get_current_theme_name())] @@ -702,7 +720,7 @@ def preferences(): return render('preferences.html', locales=settings['locales'], - current_locale=get_locale(), + current_locale=request.preferences.get_value("locale"), image_proxy=image_proxy, engines_by_category=categories, stats=stats, From c329ea135ed8c7b56a16e08bf0ee8f6f82609406 Mon Sep 17 00:00:00 2001 From: 0xhtml <34682885+0xhtml@users.noreply.github.com> Date: Wed, 31 Jul 2019 20:44:41 +0200 Subject: [PATCH 065/238] Fix spotify engine --- searx/engines/spotify.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py index aed756be..da32b334 100644 --- a/searx/engines/spotify.py +++ b/searx/engines/spotify.py @@ -12,10 +12,14 @@ from json import loads from searx.url_utils import urlencode +import requests +import base64 # engine dependent config categories = ['music'] paging = True +api_client_id = None +api_client_secret = None # search-url url = 'https://api.spotify.com/' @@ -31,6 +35,16 @@ def request(query, params): params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset) + r = requests.post( + 'https://accounts.spotify.com/api/token', + data={'grant_type': 'client_credentials'}, + headers={'Authorization': 'Basic ' + str(base64.b64encode( + (api_client_id + ":" + api_client_secret).encode('utf-8') + ), 'utf-8')} + ) + j = loads(r.text) + params['headers'] = {'Authorization': 'Bearer ' + j['access_token']} + return params From ae3eeedb14b1f693872787ac67975728c5773b84 Mon Sep 17 00:00:00 2001 From: 0xhtml <34682885+0xhtml@users.noreply.github.com> Date: Wed, 31 Jul 2019 20:51:01 +0200 Subject: [PATCH 066/238] Require Spotify API credentials in settings --- searx/settings.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/searx/settings.yml b/searx/settings.yml index 490b3af0..281aacea 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -590,9 +590,12 @@ engines: shortcut : se categories : science - - name : spotify - engine : spotify - shortcut : stf +# Spotify needs API credentials +# - name : spotify +# engine : spotify +# shortcut : stf +# api_client_id : ******* +# api_client_secret : ******* - name : startpage engine : startpage From 275b37cc7c87b562d08576be5268a4f8797b84ea Mon Sep 17 00:00:00 2001 From: 0xhtml <34682885+0xhtml@users.noreply.github.com> Date: Wed, 31 Jul 2019 21:01:24 +0200 Subject: [PATCH 067/238] Fix error if the user hasn't set api credentials --- searx/engines/spotify.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py index da32b334..57b08a1e 100644 --- a/searx/engines/spotify.py +++ b/searx/engines/spotify.py @@ -39,7 +39,7 @@ def request(query, params): 'https://accounts.spotify.com/api/token', data={'grant_type': 'client_credentials'}, headers={'Authorization': 'Basic ' + str(base64.b64encode( - (api_client_id + ":" + api_client_secret).encode('utf-8') + "{}:{}".format(api_client_id, api_client_secret).encode('utf-8') ), 'utf-8')} ) j = loads(r.text) From b2e1ee8d35050033b41765a2de49c0eea5f8b4b4 Mon Sep 17 00:00:00 2001 From: 0xhtml <34682885+0xhtml@users.noreply.github.com> Date: Wed, 31 Jul 2019 21:09:02 +0200 Subject: [PATCH 068/238] Fix some more errors with none/wrong credentials --- searx/engines/spotify.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py index 57b08a1e..00c39570 100644 --- a/searx/engines/spotify.py +++ b/searx/engines/spotify.py @@ -38,12 +38,12 @@ def request(query, params): r = requests.post( 'https://accounts.spotify.com/api/token', data={'grant_type': 'client_credentials'}, - headers={'Authorization': 'Basic ' + str(base64.b64encode( + headers={'Authorization': 'Basic ' + base64.b64encode( "{}:{}".format(api_client_id, api_client_secret).encode('utf-8') - ), 'utf-8')} + ).decode('utf-8')} ) j = loads(r.text) - params['headers'] = {'Authorization': 'Bearer ' + j['access_token']} + params['headers'] = {'Authorization': 'Bearer {}'.format(j.get('access_token'))} return params From cc8d4b958e274eb9e154db5c319d2e50da561d61 Mon Sep 17 00:00:00 2001 From: CaffeinatedTech <27036556+CaffeinatedTech@users.noreply.github.com> Date: Tue, 1 Oct 2019 10:56:40 +1000 Subject: [PATCH 069/238] Update README.rst Fixed some grammar in README.rst --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index ab16a828..7fcda4f9 100644 --- a/README.rst +++ b/README.rst @@ -23,13 +23,13 @@ Go to the `searx-docker `__ project. Without Docker ------ -For all the details, follow this `step by step installation `__. +For all of the details, follow this `step by step installation `__. Note: the documentation needs to be updated. -If you are in hurry +If you are in a hurry ------ -- clone source: +- clone the source: ``git clone https://github.com/asciimoo/searx.git && cd searx`` - install dependencies: ``./manage.sh update_packages`` - edit your From 021e1da4c9a8eca7293ad62608cc55da5dfde73f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Wed, 23 Oct 2019 13:06:19 +0200 Subject: [PATCH 070/238] add post about introducing offline engines --- docs/blog/blog.rst | 1 + docs/blog/intro-offline.rst | 65 ++++++++++++++++++++++++++++++++++++ docs/conf.py | 2 +- docs/dev/engine_overview.rst | 2 ++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 docs/blog/intro-offline.rst diff --git a/docs/blog/blog.rst b/docs/blog/blog.rst index 77553d5c..2ccaaa5d 100644 --- a/docs/blog/blog.rst +++ b/docs/blog/blog.rst @@ -6,3 +6,4 @@ Blog python3 admin + intro-offline diff --git a/docs/blog/intro-offline.rst b/docs/blog/intro-offline.rst new file mode 100644 index 00000000..91452171 --- /dev/null +++ b/docs/blog/intro-offline.rst @@ -0,0 +1,65 @@ +Preparation for offline engines +=============================== + +Offline engines +--------------- + +To extend the functionality of searx, offline engines are going to be introduced. An offline engine is an engine which does not need Internet connection to perform a search and does not use HTTP to communicate. + +Offline engines can be configured as online engines, by adding those to the `engines` list of `settings.yml`. Thus, searx finds the engine file and imports it. + +Example skeleton for the new engines: + +.. code:: python + + from subprocess import PIPE, Popen + + categories = ['general'] + offline = True + + def init(settings): + pass + + def search(query, params): + process = Popen(['ls', query], stdout=PIPE) + return_code = process.wait() + if return_code != 0: + raise RuntimeError('non-zero return code', return_code) + + results = [] + line = process.stdout.readline() + while line: + result = parse_line(line) + results.append(results) + + line = process.stdout.readline() + + return results + + +Development progress +-------------------- + +First, a proposal has been created as a Github issue. Then it was moved to the wiki as a design document. You can read it here: https://github.com/asciimoo/searx/wiki/Offline-engines + +In this development step, searx core was prepared to accept and perform offline searches. Offline search requests are scheduled together with regular offline requests. + +As offline searches can return arbitrary results depending on the engine, the current result templates were insufficient to present such results. Thus, a new template is introduced which is caplable of presenting arbitrary key value pairs as a table. You can check out the pull request for more details: https://github.com/asciimoo/searx/pull/1700 + +Next steps +---------- + +Today, it is possible to create/run an offline engine. However, it is going to be publicly available for everyone who knows the searx instance. So the next step is to introduce token based access for engines. This way administrators are able to limit the access to private engines. + +Acknowledgement +--------------- + +This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ . + +.. _Search and Discovery Fund: https://nlnet.nl/discovery +.. _NLnet Foundation: https://nlnet.nl/ + + +| Happy hacking. +| kvch // 2019.10.21 17:03 + diff --git a/docs/conf.py b/docs/conf.py index 52aad663..e71ea13a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,7 +49,7 @@ master_doc = 'index' # General information about the project. project = u'searx' -copyright = u'2015-2017, Adam Tauber' +copyright = u'2015-2019, Adam Tauber, Noémi Ványi' author = u'Adam Tauber' # The version info for the project you're documenting, acts as replacement for diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index d57ca5b3..a6867b5d 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -41,6 +41,8 @@ engine file +----------------------+-----------+-----------------------------------------+ | time\_range\_support | boolean | support search time range | +----------------------+-----------+-----------------------------------------+ +| offline | boolean | engine runs offline | ++----------------------+-----------+-----------------------------------------+ settings.yml ~~~~~~~~~~~~ From 0e7b6c9a032d67bf5cbdcfc062d8466c18a62abd Mon Sep 17 00:00:00 2001 From: Dalf Date: Wed, 11 Dec 2019 14:34:25 +0100 Subject: [PATCH 071/238] [mod] infinite scroll: XHR requests are sent with the header "Accept: text/html". Fix https://github.com/searx/searx-docker/issues/16 --- searx/static/plugins/js/infinite_scroll.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js index 1a95756a..db84a690 100644 --- a/searx/static/plugins/js/infinite_scroll.js +++ b/searx/static/plugins/js/infinite_scroll.js @@ -5,12 +5,18 @@ $(document).ready(function() { var formData = $('#pagination form:last').serialize(); if (formData) { $('#pagination').html('
'); - $.post('./', formData, function (data) { - var body = $(data); - $('#pagination').remove(); - $('#main_results').append('
'); - $('#main_results').append(body.find('.result')); - $('#main_results').append(body.find('#pagination')); + $.ajax({ + type: "POST", + url: './', + data: formData, + dataType: 'html', + success: function(data) { + var body = $(data); + $('#pagination').remove(); + $('#main_results').append('
'); + $('#main_results').append(body.find('.result')); + $('#main_results').append(body.find('#pagination')); + } }); } } From bb2b9b8da4d5e548b88c1fae4faf2af1cb225008 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Tue, 3 Dec 2019 18:54:04 +0100 Subject: [PATCH 072/238] utils: add makefile.sphinx to the boilerplate Signed-off-by: Markus Heiser --- utils/makefile.sphinx | 215 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 utils/makefile.sphinx diff --git a/utils/makefile.sphinx b/utils/makefile.sphinx new file mode 100644 index 00000000..01181ff2 --- /dev/null +++ b/utils/makefile.sphinx @@ -0,0 +1,215 @@ +# -*- coding: utf-8; mode: makefile-gmake -*- + +# You can set these variables from the command line. +SPHINXOPTS ?= +SPHINXBUILD ?= $(PY_ENV_BIN)/sphinx-build +SPHINX_CONF ?= conf.py + +DOCS_FOLDER ?= docs +DOCS_BUILD ?= build/docs +DOCS_DIST ?= dist/docs +GH_PAGES ?= gh-pages + +BOOKS_FOLDER ?= docs +BOOKS_DIST ?= dist/books + +ifeq ($(KBUILD_VERBOSE),1) + SPHINX_VERBOSE = "-v" +else + SPHINX_VERBOSE = +endif + +## SPHINXVERS variable +## =================== +## +## .. _requirement-specifiers: https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers +## +## Sphinx version to use, when building documentation. Set this when calling +## build target. The default value is empty (install latest), to select a +## specific version use a requirement-specifiers_. E.g. to build your target +## 'doc' with a select sphinx-doc_ version 1.7.9:: +## +## make SPHINXVERS='==1.7.9' docs +## +## To build with latest 1.7:: +## +## make SPHINXVERS='>=1.7,<1.8' docs +## +SPHINXVERS ?= + +docs-help: + @echo 'makefile.sphinx:' + @echo ' docs-clean - clean intermediate doc objects' + @echo ' $(GH_PAGES) - create & upload github pages' + @echo ' sphinx-pdf - run sphinx latex & pdf targets' + echo '' + @echo ' books/{name}.html : build only the HTML of document {name}' + @echo ' valid values for books/{name}.html are:' + @echo ' $(BOOKS_HTML)' | $(FMT) + @echo ' books/{name}.pdf : build only the PDF of document {name}' + @echo ' valid values for books/{name}.pdf are:' + @echo ' $(BOOKS_PDF) ' | $(FMT) + +# ------------------------------------------------------------------------------ +# requirements +# ------------------------------------------------------------------------------ + +sphinx-doc: $(PY_ENV) + @echo "PYENV installing Sphinx$(SPHINXVERS)" + $(Q)$(PY_ENV_BIN)/pip install $(PIP_VERBOSE) 'Sphinx$(SPHINXVERS)' + +sphinx-live: $(PY_ENV) + @echo "PYENV installing Sphinx$(SPHINXVERS)" + $(Q)$(PY_ENV_BIN)/pip install $(PIP_VERBOSE) 'Sphinx$(SPHINXVERS)' sphinx-autobuild + + +PHONY += msg-texlive texlive + +ifeq ($(shell which xelatex >/dev/null 2>&1; echo $$?), 1) +texlive: msg-TeXLive + $(error The 'xelatex' command was not found) +else +texlive: + @: +endif + +msg-texlive: + $(Q)echo "\n\ +The TeX/PDF output and the *math* extension require TexLive and latexmk:\n\n\ + Make sure you have a updated TeXLive with XeTeX engine installed, grab it\n\ + it from https://www.tug.org/texlive or install it from your package manager.\n\n\ + Install latexmk from your package manager or visit https://ctan.org/pkg/latexmk\n\n\ + Sphinx-doc produce (Xe)LaTeX files which might use additional TeX-packages\n\ + and fonts. To process these LaTeX files, a TexLive installation with the\n\ + additional packages is required. On debian based OS these requirements\n\ + are installed by::\n\n\ + sudo -H apt-get install\n\ + latexmk\n\ + texlive-base texlive-xetex texlive-latex-recommended\n\ + texlive-extra-utils dvipng ttf-dejavu\n" + +# ------------------------------------------------------------------------------ +# commands +# ------------------------------------------------------------------------------ + +# $2 sphinx builder e.g. "html" +# $3 path where configuration file (conf.py) is located +# $4 sourcedir +# $5 dest subfolder e.g. "man" for man pages at $(DOCS_DIST)/man + +quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(DOCS_DIST)/$5) + cmd_sphinx = SPHINX_CONF=$(abspath $4/$(SPHINX_CONF))\ + $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\ + -b $2 -c $3 -d $(DOCS_BUILD)/.doctrees $4 $(DOCS_DIST)/$5 + +quiet_cmd_sphinx_autobuild = SPHINX $@ --> file://$(abspath $(DOCS_DIST)/$5) + cmd_sphinx_autobuild = PATH="$(PY_ENV_BIN):$(PATH)" $(PY_ENV_BIN)/sphinx-autobuild $(SPHINX_VERBOSE) --poll -B --host 0.0.0.0 --port 8080 $(SPHINXOPTS)\ + -b $2 -c $3 -d $(DOCS_BUILD)/.doctrees $4 $(DOCS_DIST)/$5 + +quiet_cmd_sphinx_clean = CLEAN $@ + cmd_sphinx_clean = rm -rf $(DOCS_BUILD) $(DOCS_DIST) $(GH_PAGES)/* $(GH_PAGES)/.buildinfo + +# ------------------------------------------------------------------------------ +# targets +# ------------------------------------------------------------------------------ + +# build PDF of whole documentation in: $(DOCS_DIST)/pdf + +PHONY += sphinx-pdf +sphinx-pdf: sphinx-latex + $(Q)cd $(DOCS_BUILD)/latex/; make all-pdf + $(Q)mkdir -p $(DOCS_DIST)/pdf + $(Q)cp $(DOCS_BUILD)/latex/*.pdf $(DOCS_DIST)/pdf + @echo "SPHINX *.pdf --> file://$(abspath $(DOCS_DIST)/pdf)" + +PHONY += sphinx-latex +sphinx-latex: texlive sphinx-doc + $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\ + -b latex \ + -c $(DOCS_FOLDER) \ + -d $(DOCS_BUILD)/.doctrees \ + $(DOCS_FOLDER) \ + $(DOCS_BUILD)/latex + +# Sphinx projects, we call them *books* (what is more common). Books are +# folders under $(BOOKS_FOLDER) containing a conf.py file. The HTML output goes +# to folder $(BOOKS_DIST)/ while PDF is placed (BOOKS_DIST)//pdf + +BOOKS=$(patsubst $(BOOKS_FOLDER)/%/conf.py,books/%,$(wildcard $(BOOKS_FOLDER)/*/conf.py)) + +# fine grained targets +BOOKS_HTML = $(patsubst %,%.html,$(BOOKS)) +BOOKS_CLEAN = $(patsubst %,%.clean,$(BOOKS)) +BOOKS_LATEX = $(patsubst %,%.latex,$(BOOKS)) +BOOKS_PDF = $(patsubst %,%.pdf,$(BOOKS)) +BOOKS_LIVE = $(patsubst %,%.live,$(BOOKS)) + +$(BOOKS_DIST): + mkdir -p $(BOOKS_DIST) + +PHONY += $(BOOKS_HTML) +$(BOOKS_HTML): sphinx-doc | $(BOOKS_DIST) + SPHINX_CONF=$(patsubst books/%.html,%,$@)/conf.py \ + $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\ + -b html \ + -c $(DOCS_FOLDER) \ + -d $(DOCS_BUILD)/books/$(patsubst books/%.html,%,$@)/.doctrees \ + $(patsubst books/%.html,%,$@) \ + $(BOOKS_DIST)/$(patsubst books/%.html,%,$@) + @echo "SPHINX $@ --> file://$(abspath $(BOOKS_DIST)/$(patsubst books/%.html,%,$@))" + +PHONY += $(BOOKS_HTML) +$(BOOKS_LIVE): sphinx-live | $(BOOKS_DIST) + PATH="$(PY_ENV_BIN):$(PATH)" \ + SPHINX_CONF=$(patsubst books/%.live,%,$@)/conf.py \ + $(PY_ENV_BIN)/sphinx-autobuild --poll -B --host 0.0.0.0 --port 8080 $(SPHINX_VERBOSE) $(SPHINXOPTS)\ + -b html \ + -c $(DOCS_FOLDER) \ + -d $(DOCS_BUILD)/books/$(patsubst books/%.live,%,$@)/.doctrees \ + $(patsubst books/%.live,%,$@) \ + $(BOOKS_DIST)/$(patsubst books/%.live,%,$@) + +$(BOOKS_PDF): %.pdf : %.latex + $(Q)cd $(DOCS_BUILD)/latex/$(patsubst books/%.pdf,%,$@); make all-pdf + $(Q)mkdir -p $(BOOKS_DIST)/$(patsubst books/%.pdf,%,$@)/pdf + $(Q)cp -v $(DOCS_BUILD)/latex/$(patsubst books/%.pdf,%,$@)/*.pdf $(BOOKS_DIST)/$(patsubst books/%.pdf,%,$@)/pdf + @echo "SPHINX $@ --> file://$(abspath $(BOOKS_DIST)/$(patsubst books/%.pdf,%,$@))/pdf" + +PHONY += $(BOOKS_LATEX) +$(BOOKS_LATEX): sphinx-doc | $(BOOKS_DIST) + SPHINX_CONF=$(patsubst books/%.latex,%,$@)/conf.py \ + $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\ + -b latex \ + -c $(DOCS_FOLDER) \ + -d $(DOCS_BUILD)/books/$(patsubst books/%.latex,%,$@)/.doctrees \ + $(patsubst books/%.latex,%,$@) \ + $(DOCS_BUILD)/latex/$(patsubst books/%.latex,%,$@) + @echo "SPHINX $@ --> file://$(abspath $(DOCS_BUILD)/latex/$(patsubst books/%.latex,%,$@))" + +$(BOOKS_CLEAN): + $(Q)rm -rf $(BOOKS_DIST)/$(patsubst books/%.clean,%,$@) \ + $(DOCS_BUILD)/books/$(patsubst books/%.clean,%,$@) \ + $(DOCS_BUILD)/latex/$(patsubst books/%.clean,%,$@) + +# github pages + +PHONY += $(GH_PAGES) +$(GH_PAGES): + $(MAKE) docs + [ -d "gh-pages/.git" ] || git clone $(GIT_URL) gh-pages + -cd $(GH_PAGES); git checkout --orphan gh-pages || exit 0 + rm -rf $(GH_PAGES)/* $(GH_PAGES)/.gitignore + touch $(GH_PAGES)/.nojekyll ;\ + cp -r $(DOCS_DIST)/* $(GH_PAGES)/ + echo "" > $(GH_PAGES)/404.html + -cd $(GH_PAGES); git push origin :gh-pages + cd $(GH_PAGES);\ + git add --all . ;\ + git commit -m "gh-pages: updated" ;\ + git push origin gh-pages + +PHONY += docs-clean +docs-clean: $(BOOKS_CLEAN) + $(call cmd,sphinx_clean) + +.PHONY: $(PHONY) From ef85943e06a1ac0083d8a7c76a08e885f2e27d90 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 12 Dec 2019 12:10:32 +0100 Subject: [PATCH 073/238] Makefile: add documentation build targets docs & docs-live BTW: - add build & dist folder to .gitignore - justify indentation of build messages (makefile.python) Signed-off-by: Markus Heiser --- .gitignore | 2 ++ Makefile | 16 ++++++++++++++++ utils/makefile.python | 4 ++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 828856f4..31800016 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,7 @@ node_modules/ .tx/ +build/ +dist/ local/ searx.egg-info/ diff --git a/Makefile b/Makefile index 77ffe489..dae8fce3 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,20 @@ # -*- coding: utf-8; mode: makefile-gmake -*- PYOBJECTS = searx +DOC = docs PY_SETUP_EXTRAS ?= \[test\] include utils/makefile.include include utils/makefile.python +include utils/makefile.sphinx all: clean install PHONY += help help: @echo ' test - run developer tests' + @echo ' docs - build documentation' + @echo ' docs-live - autobuild HTML documentation while editing' @echo ' run - run developer instance' @echo ' install - developer install (./local)' @echo ' uninstall - uninstall (./local)' @@ -40,6 +44,18 @@ run: pyenvinstall ) & $(PY_ENV)/bin/python ./searx/webapp.py +# docs +# ---- + +PHONY += docs +docs: pyenvinstall sphinx-doc + $(call cmd,sphinx,html,docs,docs) + +PHONY += docs-live +docs-live: pyenvinstall sphinx-live + $(call cmd,sphinx_autobuild,html,docs,docs) + + # test # ---- diff --git a/utils/makefile.python b/utils/makefile.python index 228eb3f8..4aa9d6b4 100644 --- a/utils/makefile.python +++ b/utils/makefile.python @@ -155,7 +155,7 @@ quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate if [ ! -d "./$(PY_ENV)" ];then \ $(VIRTUALENV) $(VIRTUALENV_VERBOSE) $(VTENV_OPTS) $2; \ else \ - echo " PYENV using virtualenv from $2"; \ + echo "PYENV using virtualenv from $2"; \ fi # $2 path to lint @@ -263,7 +263,7 @@ pydebug: $(PY_ENV) # install / uninstall python objects into virtualenv (PYENV) pyenv-install: $(PY_ENV) @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) install -e . - @echo " ACTIVATE $(call normpath,$(PY_ENV_ACT)) " + @echo "ACTIVATE $(call normpath,$(PY_ENV_ACT)) " pyenv-uninstall: $(PY_ENV) @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) uninstall --yes . From 25fa7da6c8276ed8958793e1b88071eab6b413f5 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 4 Dec 2019 15:27:27 +0100 Subject: [PATCH 074/238] doc: use customized pocoo theme (pallets-sphinx-themes) The old searx theme was a copy of the flask theme. In the meantime this theme is available from the python module pallets-sphinx-themes. This patch makes pallets-sphinx-themes as a (dev) requirement and drops most of the old and obsolete searx theme settings/files. Signed-off-by: Markus Heiser --- docs/_themes/searx/static/searx.css | 15 + docs/_themes/searx/theme.conf | 6 + docs/_themes/searx_theme/layout.html | 20 - docs/_themes/searx_theme/relations.html | 14 - docs/_themes/searx_theme/static/style.css_t | 443 -------------------- docs/_themes/searx_theme/theme.conf | 7 - docs/conf.py | 393 +++-------------- docs/index.rst | 1 + requirements-dev.txt | 3 + 9 files changed, 75 insertions(+), 827 deletions(-) create mode 100644 docs/_themes/searx/static/searx.css create mode 100644 docs/_themes/searx/theme.conf delete mode 100644 docs/_themes/searx_theme/layout.html delete mode 100644 docs/_themes/searx_theme/relations.html delete mode 100644 docs/_themes/searx_theme/static/style.css_t delete mode 100644 docs/_themes/searx_theme/theme.conf diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css new file mode 100644 index 00000000..ae59adea --- /dev/null +++ b/docs/_themes/searx/static/searx.css @@ -0,0 +1,15 @@ +@import url("pocoo.css"); + +a, a.reference, a.footnote-reference { + color: #004b6b; + border-color: #004b6b; +} + +a:hover { + color: #6d4100; + border-color: #6d4100; +} + +p.version-warning { + background-color: #004b6b; +} diff --git a/docs/_themes/searx/theme.conf b/docs/_themes/searx/theme.conf new file mode 100644 index 00000000..2d5f72e7 --- /dev/null +++ b/docs/_themes/searx/theme.conf @@ -0,0 +1,6 @@ +[theme] +inherit = pocoo +stylesheet = searx.css + +[options] +touch_icon = diff --git a/docs/_themes/searx_theme/layout.html b/docs/_themes/searx_theme/layout.html deleted file mode 100644 index edf70c1a..00000000 --- a/docs/_themes/searx_theme/layout.html +++ /dev/null @@ -1,20 +0,0 @@ -{%- extends "basic/layout.html" %} -{%- block extrahead %} - {{ super() }} - {% if theme_touch_icon %} - - {% endif %} - - -{% endblock %} -{%- block relbar2 %}{% endblock %} -{%- block relbar1 %}{% endblock %} -{%- block sidebarsearch %}{% endblock %} -{%- block sidebarsourcelink %}{% endblock %} -{%- block sidebartoc %}{% endblock %} -{%- block footer %} - -{%- endblock %} diff --git a/docs/_themes/searx_theme/relations.html b/docs/_themes/searx_theme/relations.html deleted file mode 100644 index 5fb65cdd..00000000 --- a/docs/_themes/searx_theme/relations.html +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/docs/_themes/searx_theme/static/style.css_t b/docs/_themes/searx_theme/static/style.css_t deleted file mode 100644 index 0a312b76..00000000 --- a/docs/_themes/searx_theme/static/style.css_t +++ /dev/null @@ -1,443 +0,0 @@ -/* - * flasky.css_t - * ~~~~~~~~~~~~ - * - * :copyright: Copyright 2010 by Armin Ronacher. Modifications by Kenneth Reitz. - * :license: Flask Design License, see LICENSE for details. - */ - -{% set page_width = '940px' %} -{% set sidebar_width = '220px' %} - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro'; - font-size: 17px; - background-color: white; - color: #000; - margin: 0; - padding: 0; -} - -div.document { - width: {{ page_width }}; - margin: 30px auto 0 auto; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 {{ sidebar_width }}; -} - -div.sphinxsidebar { - width: {{ sidebar_width }}; - word-wrap: normal !important; - overflow-wrap: normal !important; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.body { - background-color: #ffffff; - color: #3E4349; - padding: 0 30px 0 30px; -} - -img.floatingflask { - padding: 0 0 10px 10px; - float: right; -} - -div.footer { - width: {{ page_width }}; - margin: 20px auto 30px auto; - font-size: 14px; - color: #888; - text-align: right; -} - -div.footer a { - color: #888; -} - -div.sphinxsidebar a { - color: #444; - text-decoration: none; - border-bottom: 1px dotted #999; -} - -div.sphinxsidebar a:hover { - border-bottom: 1px solid #999; -} - -div.sphinxsidebarwrapper { - padding: 0 10px; -} - -div.sphinxsidebarwrapper p.logo { - padding: 0; - margin: -10px 0 0 -20px; - text-align: center; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: 'Garamond', 'Georgia', serif; - color: #444; - font-size: 24px; - font-weight: normal; - margin: 0 0 5px 0; - padding: 0; -} - -div.sphinxsidebar h4 { - font-size: 20px; -} - -div.sphinxsidebar h3 a { - color: #444; -} - -div.sphinxsidebar p.logo a, -div.sphinxsidebar h3 a, -div.sphinxsidebar p.logo a:hover, -div.sphinxsidebar h3 a:hover { - border: none; -} - -div.sphinxsidebar p { - color: #555; - margin: 10px 0; -} - -div.sphinxsidebar ul { - margin: 10px 0; - padding: 0; - color: #000; -} - -div.sphinxsidebar input { - border: 1px solid #ccc; - font-family: 'Georgia', serif; - font-size: 1em; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #004B6B; - text-decoration: underline; -} - -a:hover { - color: #6D4100; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: 'Garamond', 'Georgia', serif; - font-weight: normal; - margin: 30px 0px 10px 0px; - padding: 0; -} - -div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } -div.body h2 { font-size: 180%; } -div.body h3 { font-size: 150%; } -div.body h4 { font-size: 130%; } -div.body h5 { font-size: 100%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #ddd; - padding: 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - color: #444; - background: #eaeaea; -} - -div.body p, div.body dd, div.body li { - line-height: 1.4em; -} - -div.admonition { - background: #fafafa; - margin: 20px -30px; - padding: 10px 30px; - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; -} - -div.admonition tt.xref, div.admonition a tt { - border-bottom: 1px solid #fafafa; -} - -dd div.admonition { - margin-left: -60px; - padding-left: 60px; -} - -div.admonition p.admonition-title { - font-family: 'Garamond', 'Georgia', serif; - font-weight: normal; - font-size: 24px; - margin: 0 0 10px 0; - padding: 0; - line-height: 1; -} - -div.admonition p.last { - margin-bottom: 0; -} - -div.highlight { - background-color: white; -} - -dt:target, .highlight { - background: #FAF3E8; -} - -div.note { - background-color: #eee; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #eee; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre, tt { - font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; - font-size: 0.9em; -} - -img.screenshot { -} - -tt.descname, tt.descclassname { - font-size: 0.95em; -} - -tt.descname { - padding-right: 0.08em; -} - -img.screenshot { - -moz-box-shadow: 2px 2px 4px #eee; - -webkit-box-shadow: 2px 2px 4px #eee; - box-shadow: 2px 2px 4px #eee; -} - -table.docutils { - border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #eee; - -webkit-box-shadow: 2px 2px 4px #eee; - box-shadow: 2px 2px 4px #eee; -} - -table.docutils td, table.docutils th { - border: 1px solid #888; - padding: 0.25em 0.7em; -} - -table.field-list, table.footnote { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -table.footnote { - margin: 15px 0; - width: 100%; - border: 1px solid #eee; - background: #fdfdfd; - font-size: 0.9em; -} - -table.footnote + table.footnote { - margin-top: -15px; - border-top: none; -} - -table.field-list th { - padding: 0 0.8em 0 0; -} - -table.field-list td { - padding: 0; -} - -table.footnote td.label { - width: 0px; - padding: 0.3em 0 0.3em 0.5em; -} - -table.footnote td { - padding: 0.3em 0.5em; -} - -dl { - margin: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -blockquote { - margin: 0 0 0 30px; - padding: 0; -} - -ul, ol { - margin: 10px 0 10px 30px; - padding: 0; -} - -pre { - background: #eee; - padding: 7px 30px; - margin: 15px -30px; - line-height: 1.3em; -} - -dl pre, blockquote pre, li pre { - margin-left: -60px; - padding-left: 60px; -} - -dl dl pre { - margin-left: -90px; - padding-left: 90px; -} - -tt { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ -} - -tt.xref, a tt { - background-color: #FBFBFB; - border-bottom: 1px solid white; -} - -a.reference { - text-decoration: none; - border-bottom: 1px dotted #004B6B; -} - -a.reference:hover { - border-bottom: 1px solid #6D4100; -} - -a.footnote-reference { - text-decoration: none; - font-size: 0.7em; - vertical-align: top; - border-bottom: 1px dotted #004B6B; -} - -a.footnote-reference:hover { - border-bottom: 1px solid #6D4100; -} - -a:hover tt { - background: #EEE; -} - - -@media screen and (max-width: 600px) { - - div.document { - width: 100%; - - } - - div.documentwrapper { - margin-left: 0; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - } - - div.bodywrapper { - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - margin-left: 0; - } - - ul { - margin-left: 0; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .bodywrapper { - margin: 0; - } - - .footer { - width: auto; - } - - div.sphinxsidebar { - display: none; - } - -} - -div.sidebar_container, div.sidebar_container h1 { -} - -div.sidebar_container h1 { - padding: 0; - margin: 0; - font-size: 350%; - line-height: 100%; -} - -div.sidebar_container ul li { - padding: 2px 8px; - font-size: 0.9em; -} diff --git a/docs/_themes/searx_theme/theme.conf b/docs/_themes/searx_theme/theme.conf deleted file mode 100644 index 38f9aaa9..00000000 --- a/docs/_themes/searx_theme/theme.conf +++ /dev/null @@ -1,7 +0,0 @@ -[theme] -inherit = basic -stylesheet = style.css -pygments_style = flask_theme_support.FlaskyStyle - -[options] -touch_icon = diff --git a/docs/conf.py b/docs/conf.py index e71ea13a..1ad1b3b2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,358 +1,65 @@ # -*- coding: utf-8 -*- -# -# searx documentation build configuration file, created by -# sphinx-quickstart on Tue Nov 17 17:12:13 2015. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. -import sys -import os -import shlex +import sys, os +from searx.version import VERSION_STRING +from pallets_sphinx_themes import ProjectLink -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) +# Project -------------------------------------------------------------- -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.viewcode', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. project = u'searx' copyright = u'2015-2019, Adam Tauber, Noémi Ványi' author = u'Adam Tauber' +release, version = VERSION_STRING, VERSION_STRING -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '0.12.0' -# The full version, including alpha/beta/rc tags. -release = '0.12.0' +# General -------------------------------------------------------------- -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None +master_doc = "index" +source_suffix = '.rst' -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' +extensions = [ + 'sphinx.ext.viewcode', + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "pallets_sphinx_themes", + "sphinx_issues", # https://github.com/sloria/sphinx-issues/blob/master/README.rst +] -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -sys.path.append(os.path.abspath('_themes')) -html_theme_path = ['_themes'] -html_theme = 'searx_theme' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' -#html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# Now only 'ja' uses this config value -#html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -#html_search_scorer = 'scorer.js' - -# Output file base name for HTML help builder. -htmlhelp_basename = 'searxdoc' - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', - -# Latex figure (float) alignment -#'figure_align': 'htbp', +intersphinx_mapping = { + "python": ("https://docs.python.org/3/", None), + # "flask": ("https://flask.palletsprojects.com/", None), + # "werkzeug": ("https://werkzeug.palletsprojects.com/", None), + # "jinja": ("https://jinja.palletsprojects.com/", None), } -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). +issues_github_path = "asciimoo/searx" + +# HTML ----------------------------------------------------------------- + +sys.path.append(os.path.abspath('_themes')) + +html_theme_path = ['_themes'] +html_theme = "searx" + +html_theme_options = {"index_sidebar_logo": True} +html_context = { + "project_links": [ + ProjectLink("Source", os.environ.get("GIT_URL", "https://github.com/asciimoo")), + ProjectLink("Wiki", "https://github.com/asciimoo/searx/wiki"), + ProjectLink("Public instances", "https://github.com/asciimoo/searx/wiki/Searx-instances"), + ProjectLink("Twitter", "https://twitter.com/Searx_engine"), + ] +} +html_sidebars = { + "**": ["project.html", "relations.html", "searchbox.html"], +} +singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]} +html_static_path = ["static"] +html_logo = "static/img/searx_logo_small.png" +html_title = "Searx Documentation ({})".format("Searx-{}.tex".format(VERSION_STRING)) +html_show_sourcelink = False + +# LaTeX ---------------------------------------------------------------- + latex_documents = [ - (master_doc, 'searx.tex', u'searx Documentation', - u'Adam Tauber', 'manual'), + (master_doc, "searx-{}.tex".format(VERSION_STRING), html_title, author, "manual") ] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'searx', u'searx Documentation', - [author], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'searx', u'searx Documentation', - author, 'searx', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False - - -# -- Options for Epub output ---------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project -epub_author = author -epub_publisher = author -epub_copyright = copyright - -# The basename for the epub file. It defaults to the project name. -#epub_basename = project - -# The HTML theme for the epub output. Since the default themes are not optimized -# for small screen space, using the same theme for HTML and epub output is -# usually not wise. This defaults to 'epub', a theme designed to save visual -# space. -#epub_theme = 'epub' - -# The language of the text. It defaults to the language option -# or 'en' if the language is not set. -#epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -#epub_scheme = '' - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -#epub_identifier = '' - -# A unique identification for the text. -#epub_uid = '' - -# A tuple containing the cover image and cover page html template filenames. -#epub_cover = () - -# A sequence of (type, uri, title) tuples for the guide element of content.opf. -#epub_guide = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_pre_files = [] - -# HTML files shat should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_post_files = [] - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] - -# The depth of the table of contents in toc.ncx. -#epub_tocdepth = 3 - -# Allow duplicate toc entries. -#epub_tocdup = True - -# Choose between 'default' and 'includehidden'. -#epub_tocscope = 'default' - -# Fix unsupported image types using the Pillow. -#epub_fix_images = False - -# Scale large images. -#epub_max_image_width = 0 - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#epub_show_urls = 'inline' - -# If false, no index is generated. -#epub_use_index = True diff --git a/docs/index.rst b/docs/index.rst index 7854fdb0..38adf69f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -41,6 +41,7 @@ Administrator documentation admin/api admin/filtron admin/morty + blog/blog Developer documentation ----------------------- diff --git a/requirements-dev.txt b/requirements-dev.txt index 5e015a88..0bdf2046 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,3 +1,6 @@ +pallets-sphinx-themes +Sphinx +sphinx-issues mock==2.0.0 nose2[coverage_plugin] cov-core==1.15.0 From af2cae6d1d71859e867a9fbc5da604ef6a898794 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 4 Dec 2019 16:48:36 +0100 Subject: [PATCH 075/238] doc: make use of sphinx.ext.extlinks & sphinx.ext.intersphinx - add sphinx extensions - patch documentation to make use of These modules help to simplify the reST markup of external references. BTW it helps to write more readable reST and form custom brands. Signed-off-by: Markus Heiser --- Makefile | 3 +++ docs/blog/intro-offline.rst | 2 +- docs/conf.py | 14 +++++++++++++- docs/dev/engine_overview.rst | 13 ++++++------- docs/index.rst | 3 +-- docs/user/search_syntax.rst | 33 +++++++++++++++++++-------------- 6 files changed, 43 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index dae8fce3..b4eb14ba 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,8 @@ # -*- coding: utf-8; mode: makefile-gmake -*- +export GIT_URL=https://github.com/asciimoo/searx +export SEARX_URL=https://searx.me + PYOBJECTS = searx DOC = docs PY_SETUP_EXTRAS ?= \[test\] diff --git a/docs/blog/intro-offline.rst b/docs/blog/intro-offline.rst index 91452171..0def3e09 100644 --- a/docs/blog/intro-offline.rst +++ b/docs/blog/intro-offline.rst @@ -40,7 +40,7 @@ Example skeleton for the new engines: Development progress -------------------- -First, a proposal has been created as a Github issue. Then it was moved to the wiki as a design document. You can read it here: https://github.com/asciimoo/searx/wiki/Offline-engines +First, a proposal has been created as a Github issue. Then it was moved to the wiki as a design document. You can read it here: :wiki:`Offline-engines`. In this development step, searx core was prepared to accept and perform offline searches. Offline search requests are scheduled together with regular offline requests. diff --git a/docs/conf.py b/docs/conf.py index 1ad1b3b2..ee60e46e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -4,6 +4,9 @@ import sys, os from searx.version import VERSION_STRING from pallets_sphinx_themes import ProjectLink +GIT_URL = os.environ.get("GIT_URL", "https://github.com/asciimoo/searx") +SEARX_URL = os.environ.get("SEARX_URL", "https://searx.me") + # Project -------------------------------------------------------------- project = u'searx' @@ -16,7 +19,16 @@ release, version = VERSION_STRING, VERSION_STRING master_doc = "index" source_suffix = '.rst' +# usage:: lorem :patch:`f373169` ipsum + +extlinks = {} +extlinks['origin'] = (GIT_URL + '/blob/master/%s', 'git://') +extlinks['patch'] = (GIT_URL + '/commit/%s', '#') +extlinks['search'] = (SEARX_URL + '/%s', '#') +extlinks['wiki'] = ('https://github.com/asciimoo/searx/wiki/%s', ' ') + extensions = [ + 'sphinx.ext.extlinks', 'sphinx.ext.viewcode', "sphinx.ext.autodoc", "sphinx.ext.intersphinx", @@ -43,7 +55,7 @@ html_theme = "searx" html_theme_options = {"index_sidebar_logo": True} html_context = { "project_links": [ - ProjectLink("Source", os.environ.get("GIT_URL", "https://github.com/asciimoo")), + ProjectLink("Source", GIT_URL), ProjectLink("Wiki", "https://github.com/asciimoo/searx/wiki"), ProjectLink("Public instances", "https://github.com/asciimoo/searx/wiki/Searx-instances"), ProjectLink("Twitter", "https://twitter.com/Searx_engine"), diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index a6867b5d..937ca888 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -8,8 +8,7 @@ so it uses different search engines to provide better results. Because there is no general search API which could be used for every search engine, an adapter has to be built between searx and the external search engines. Adapters are stored under the folder -`searx/engines -`__. +:origin:`searx/engines`. .. contents:: @@ -199,7 +198,7 @@ default +--------------------+---------------------------------------------------------------------------------------------------------------+ | content | string, general result-text | +--------------------+---------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, time of publish | +| publishedDate | :py:class:`datetime.datetime`, time of publish | +--------------------+---------------------------------------------------------------------------------------------------------------+ images @@ -218,7 +217,7 @@ to use this template, the parameter +--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ | content | *(partly implemented)* | +--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, time of publish *(partly implemented)* | +| publishedDate | :py:class:`datetime.datetime`, time of publish *(partly implemented)* | +--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ | img\_src | string, url to the result image | +--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ @@ -239,7 +238,7 @@ videos +--------------------+--------------------------------------------------------------------------------------------------------------+ | content | *(not implemented yet)* | +--------------------+--------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, time of publish | +| publishedDate | :py:class:`datetime.datetime`, time of publish | +--------------------+--------------------------------------------------------------------------------------------------------------+ | thumbnail | string, url to a small-preview image | +--------------------+--------------------------------------------------------------------------------------------------------------+ @@ -258,7 +257,7 @@ torrent +------------------+---------------------------------------------------------------------------------------------------------------------------------------+ | content | string, general result-text | +------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, time of publish *(not implemented yet)* | +| publishedDate | :py:class:`datetime.datetime`, time of publish *(not implemented yet)* | +------------------+---------------------------------------------------------------------------------------------------------------------------------------+ | seed | int, number of seeder | +------------------+---------------------------------------------------------------------------------------------------------------------------------------+ @@ -286,7 +285,7 @@ map +-------------------------+--------------------------------------------------------------------------------------------------------------+ | content | string, general result-text | +-------------------------+--------------------------------------------------------------------------------------------------------------+ -| publishedDate | `datetime.datetime `__, time of publish | +| publishedDate | :py:class:`datetime.datetime`, time of publish | +-------------------------+--------------------------------------------------------------------------------------------------------------+ | latitude | latitude of result (in decimal format) | +-------------------------+--------------------------------------------------------------------------------------------------------------+ diff --git a/docs/index.rst b/docs/index.rst index 38adf69f..4b2f170c 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -5,9 +5,8 @@ Search without being tracked. Searx is a free internet metasearch engine which aggregates results from more than 70 search services. Users are neither tracked nor profiled. Additionally, searx can be used over Tor for online anonymity. -Get started with searx by using one of the `public instances`_. If you don't trust anyone, you can set up your own, see :ref:`installation`. +Get started with searx by using one of the :wiki:`Searx-instances`. If you don't trust anyone, you can set up your own, see :ref:`installation`. -.. _public instances: https://github.com/asciimoo/searx/wiki/Searx-instances Features -------- diff --git a/docs/user/search_syntax.rst b/docs/user/search_syntax.rst index af26ea83..90f901ba 100644 --- a/docs/user/search_syntax.rst +++ b/docs/user/search_syntax.rst @@ -4,30 +4,35 @@ Search syntax Searx allows you to modify the default categories, engines and search language via the search query. -Category/engine prefix: ``!`` +Prefix ``!`` + to set Category/engine -Language prefix: ``:`` +Prefix: ``:`` + to set language -Prefix to add engines and categories to the currently selected -categories: ``?`` +Prefix: ``?`` + to add engines and categories to the currently selected categories -Abbrevations of the engines and languages are also accepted. -Engine/category modifiers are chainable and inclusive (e.g. with -`!it !ddg !wp qwer `_ -search in IT category **and** duckduckgo **and** wikipedia for ``qwer``). +Abbrevations of the engines and languages are also accepted. Engine/category +modifiers are chainable and inclusive (e.g. with :search:`!it !ddg !wp qwer +` search in IT category **and** duckduckgo +**and** wikipedia for ``qwer``). -See the `/preferences page `_ for the -list of engines, categories and languages. +See the :search:`/preferences page ` for the list of engines, +categories and languages. Examples ~~~~~~~~ Search in wikipedia for ``qwer``: -`!wp qwer `__ or -`!wikipedia qwer `_ + +- :search:`!wp qwer ` or +- :search:`!wikipedia qwer :search:` Image search: -`!images Cthulhu `_ + +- :search:`!images Cthulhu ` Custom language in wikipedia: -`:hu !wp hackerspace `_ + +- :search:`:hu !wp hackerspace ` From 0a7479f1942a9e5fa63f55eda0977ce777088c71 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 4 Dec 2019 17:30:34 +0100 Subject: [PATCH 076/238] doc: [fix] WARNING: Could not lex literal_block as "json" docs/admin/filtron.rst:24: \ WARNING: Could not lex literal_block as "json". Highlighting skipped. Signed-off-by: Markus Heiser --- docs/admin/filtron.rst | 155 ++++++++++++++++++++++++----------------- 1 file changed, 93 insertions(+), 62 deletions(-) diff --git a/docs/admin/filtron.rst b/docs/admin/filtron.rst index c422cb0a..9e55d596 100644 --- a/docs/admin/filtron.rst +++ b/docs/admin/filtron.rst @@ -23,68 +23,99 @@ An example configuration can be find below. This configuration limits the access .. code:: json - [ - { - "name": "search request", - "filters": ["Param:q", "Path=^(/|/search)$"], - "interval": , - "limit": , - "subrules": [ - { - "name": "roboagent limit", - "interval": , - "limit": , - "filters": ["Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"], - "actions": [ - {"name": "block", - "params": {"message": "Rate limit exceeded"}} - ] - }, - { - "name": "botlimit", - "limit": 0, - "stop": true, - "filters": ["Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"], - "actions": [ - {"name": "block", - "params": {"message": "Rate limit exceeded"}} - ] - }, - { - "name": "IP limit", - "interval": , - "limit": , - "stop": true, - "aggregations": ["Header:X-Forwarded-For"], - "actions": [ - {"name": "block", - "params": {"message": "Rate limit exceeded"}} - ] - }, - { - "name": "rss/json limit", - "interval": , - "limit": , - "stop": true, - "filters": ["Param:format=(csv|json|rss)"], - "actions": [ - {"name": "block", - "params": {"message": "Rate limit exceeded"}} - ] - }, - { - "name": "useragent limit", - "interval": , - "limit": , - "aggregations": ["Header:User-Agent"], - "actions": [ - {"name": "block", - "params": {"message": "Rate limit exceeded"}} - ] - } + [{ + "name":"search request", + "filters":[ + "Param:q", + "Path=^(/|/search)$" + ], + "interval":"", + "limit":"", + "subrules":[ + { + "name":"roboagent limit", + "interval":"", + "limit":"", + "filters":[ + "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)" + ], + "actions":[ + { + "name":"block", + "params":{ + "message":"Rate limit exceeded" + } + } ] - } - ] + }, + { + "name":"botlimit", + "limit":0, + "stop":true, + "filters":[ + "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)" + ], + "actions":[ + { + "name":"block", + "params":{ + "message":"Rate limit exceeded" + } + } + ] + }, + { + "name":"IP limit", + "interval":"", + "limit":"", + "stop":true, + "aggregations":[ + "Header:X-Forwarded-For" + ], + "actions":[ + { + "name":"block", + "params":{ + "message":"Rate limit exceeded" + } + } + ] + }, + { + "name":"rss/json limit", + "interval":"", + "limit":"", + "stop":true, + "filters":[ + "Param:format=(csv|json|rss)" + ], + "actions":[ + { + "name":"block", + "params":{ + "message":"Rate limit exceeded" + } + } + ] + }, + { + "name":"useragent limit", + "interval":"", + "limit":"", + "aggregations":[ + "Header:User-Agent" + ], + "actions":[ + { + "name":"block", + "params":{ + "message":"Rate limit exceeded" + } + } + ] + } + ] + }] @@ -101,7 +132,7 @@ It listens on 127.0.0.1:4004 and forwards filtered requests to 127.0.0.1:8888 by Use it along with ``nginx`` with the following example configuration. -.. code:: bash +.. code:: nginx location / { proxy_set_header Host $http_host; From 5b14772b203fa32a9a2c7a6951a3c17ff32b6d88 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 4 Dec 2019 17:54:41 +0100 Subject: [PATCH 077/238] doc: installation.rst improve reST markup - normalize section header markup - limit all lines to a maximum of 79 characters - add option -H to the sudo command used in code blocks - place *WARNING* lines into a '.. warning::' admonition block - make use of ``literal`` markup for monospace rendering - drop useless indentation of lists [1] https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html Signed-off-by: Markus Heiser --- docs/dev/install/installation.rst | 156 ++++++++++++++++-------------- 1 file changed, 84 insertions(+), 72 deletions(-) diff --git a/docs/dev/install/installation.rst b/docs/dev/install/installation.rst index 50b33a32..239ce070 100644 --- a/docs/dev/install/installation.rst +++ b/docs/dev/install/installation.rst @@ -1,5 +1,6 @@ .. _installation: +============ Installation ============ @@ -7,37 +8,44 @@ Installation :depth: 3 Basic installation ------------------- +================== -Step by step installation for Debian/Ubuntu with virtualenv. For Ubuntu, be sure to have enable universe repository. +Step by step installation for Debian/Ubuntu with virtualenv. For Ubuntu, be sure +to have enable universe repository. Install packages: .. code:: sh - sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev + $ sudo -H apt-get install \ + git build-essential libxslt-dev \ + python-dev python-virtualenv python-babel \ + zlib1g-dev libffi-dev libssl-dev Install searx: .. code:: sh cd /usr/local - sudo git clone https://github.com/asciimoo/searx.git - sudo useradd searx -d /usr/local/searx - sudo chown searx:searx -R /usr/local/searx + sudo -H git clone https://github.com/asciimoo/searx.git + sudo -H useradd searx -d /usr/local/searx + sudo -H chown searx:searx -R /usr/local/searx Install dependencies in a virtualenv: .. code:: sh - sudo -u searx -i cd /usr/local/searx - virtualenv searx-ve - . ./searx-ve/bin/activate - ./manage.sh update_packages + sudo -H -u searx -i + +.. code:: sh + + (searx)$ virtualenv searx-ve + (searx)$ . ./searx-ve/bin/activate + (searx)$ ./manage.sh update_packages Configuration -------------- +============== .. code:: sh @@ -46,7 +54,7 @@ Configuration Edit searx/settings.yml if necessary. Check ------ +===== Start searx: @@ -68,18 +76,19 @@ You can exit the virtualenv and the searx user bash (enter exit command twice). uwsgi ------ +===== Install packages: .. code:: sh - sudo apt-get install uwsgi uwsgi-plugin-python + sudo -H apt-get install \ + uwsgi uwsgi-plugin-python -Create the configuration file /etc/uwsgi/apps-available/searx.ini with -this content: +Create the configuration file ``/etc/uwsgi/apps-available/searx.ini`` with this +content: -:: +.. code:: ini [uwsgi] # Who will run the code @@ -119,22 +128,22 @@ Activate the uwsgi application and restart: /etc/init.d/uwsgi restart Web server ----------- +========== with nginx -^^^^^^^^^^ +---------- If nginx is not installed (uwsgi will not work with the package nginx-light): .. code:: sh - sudo apt-get install nginx + sudo -H apt-get install nginx Hosted at / -""""""""""" +~~~~~~~~~~~ -Create the configuration file /etc/nginx/sites-available/searx with this +Create the configuration file ``/etc/nginx/sites-available/searx`` with this content: .. code:: nginx @@ -154,20 +163,20 @@ Create a symlink to sites-enabled: .. code:: sh - sudo ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx + sudo -H ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx Restart service: .. code:: sh - sudo service nginx restart - sudo service uwsgi restart + sudo -H service nginx restart + sudo -H service uwsgi restart from subdirectory URL (/searx) -"""""""""""""""""""""""""""""" +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Add this configuration in the server config file -/etc/nginx/sites-enabled/default: +``/etc/nginx/sites-enabled/default``: .. code:: nginx @@ -183,10 +192,8 @@ Add this configuration in the server config file } -OR - -using reverse proxy -(Please, note that reverse proxy advised to be used in case of single-user or low-traffic instances.) +**OR** using reverse proxy (Please, note that reverse proxy advised to be used +in case of single-user or low-traffic instances.) .. code:: nginx @@ -200,9 +207,9 @@ using reverse proxy } -Enable base\_url in searx/settings.yml +Enable ``base_url`` in ``searx/settings.yml`` -:: +.. code:: yaml base_url : http://your.domain.tld/searx/ @@ -210,18 +217,18 @@ Restart service: .. code:: sh - sudo service nginx restart - sudo service uwsgi restart + sudo -H service nginx restart + sudo -H service uwsgi restart disable logs -~~~~~~~~~~~~ +^^^^^^^^^^^^ for better privacy you can disable nginx logs about searx. -how to proceed: below ``uwsgi_pass`` in -/etc/nginx/sites-available/default add +how to proceed: below ``uwsgi_pass`` in ``/etc/nginx/sites-available/default`` +add: -:: +.. code:: nginx access_log /dev/null; error_log /dev/null; @@ -230,19 +237,19 @@ Restart service: .. code:: sh - sudo service nginx restart + sudo -H service nginx restart with apache -^^^^^^^^^^^ +----------- Add wsgi mod: .. code:: sh - sudo apt-get install libapache2-mod-uwsgi - sudo a2enmod uwsgi + sudo -H apt-get install libapache2-mod-uwsgi + sudo -H a2enmod uwsgi -Add this configuration in the file /etc/apache2/apache2.conf: +Add this configuration in the file ``/etc/apache2/apache2.conf``: .. code:: apache @@ -252,27 +259,26 @@ Add this configuration in the file /etc/apache2/apache2.conf: uWSGISocket /run/uwsgi/app/searx/socket
-Note that if your instance of searx is not at the root, you should -change ```` by the location of your instance, like -````. +Note that if your instance of searx is not at the root, you should change +```` by the location of your instance, like ````. Restart Apache: .. code:: sh - sudo /etc/init.d/apache2 restart + sudo -H /etc/init.d/apache2 restart disable logs -"""""""""""" +~~~~~~~~~~~~ For better privacy you can disable Apache logs. -WARNING: not tested +.. warning:: -WARNING: you can only disable logs for the whole (virtual) server not -for a specific path. + You can only disable logs for the whole (virtual) server not for a specific + path. -Go back to /etc/apache2/apache2.conf and above ```` add: +Go back to ``/etc/apache2/apache2.conf`` and above ```` add: .. code:: apache @@ -282,24 +288,30 @@ Restart Apache: .. code:: sh - sudo /etc/init.d/apache2 restart + sudo -H /etc/init.d/apache2 restart How to update -------------- +============= .. code:: sh cd /usr/local/searx - sudo -u searx -i - . ./searx-ve/bin/activate - git stash - git pull origin master - git stash apply - ./manage.sh update_packages - sudo service uwsgi restart + sudo -H -u searx -i + +.. code:: sh + + (searx)$ . ./searx-ve/bin/activate + (searx)$ git stash + (searx)$ git pull origin master + (searx)$ git stash apply + (searx)$ ./manage.sh update_packages + +.. code:: sh + + sudo -H service uwsgi restart Docker ------- +====== Make sure you have installed Docker. For instance, you can deploy searx like this: @@ -308,22 +320,22 @@ Make sure you have installed Docker. For instance, you can deploy searx like thi docker pull wonderfall/searx docker run -d --name searx -p $PORT:8888 wonderfall/searx -Go to http://localhost:$PORT. +Go to ``http://localhost:$PORT``. -See https://hub.docker.com/r/wonderfall/searx/ for more informations. - -It's also possible to build searx from the embedded Dockerfile. +See https://hub.docker.com/r/wonderfall/searx/ for more informations. It's also +possible to build searx from the embedded Dockerfile. .. code:: sh - git clone https://github.com/asciimoo/searx.git - cd searx - docker build -t whatever/searx . + git clone https://github.com/asciimoo/searx.git + cd searx + docker build -t whatever/searx . References ========== - * https://about.okhin.fr/posts/Searx/ with some additions +* https://about.okhin.fr/posts/Searx/ with some additions - * How to: `Setup searx in a couple of hours with a free SSL certificate `__ +* How to: `Setup searx in a couple of hours with a free SSL certificate + `__ From 0011890043a65b318a32134ab4029f3c74bc07ee Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 12 Dec 2019 14:15:41 +0100 Subject: [PATCH 078/238] gh-pages - build docs & deploy on gh-pages branch Signed-off-by: Markus Heiser --- .gitignore | 1 + Makefile | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 31800016..069dfd35 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ node_modules/ build/ dist/ local/ +gh-pages/ searx.egg-info/ diff --git a/Makefile b/Makefile index b4eb14ba..28b7c58c 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,7 @@ help: @echo ' run - run developer instance' @echo ' install - developer install (./local)' @echo ' uninstall - uninstall (./local)' + @echo ' gh-pages - build docs & deploy on gh-pages branch' @echo '' @$(MAKE) -s -f utils/makefile.include make-help @echo '' From e9fff4fde6d7a8bec3fae087d2afe1fce2145f22 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 12 Dec 2019 19:20:56 +0100 Subject: [PATCH 079/238] doc: proofread of the all reST sources (no content change) Normalize reST sources with best practice and KISS in mind. to name a few points: - simplify reST tables - make use of ``literal`` markup for monospace rendering - fix code-blocks for better rendering in HTML - normalize section header markup - limit all lines to a maximum of 79 characters - add option -H to the sudo command used in code blocks - drop useless indentation of lists - ... [1] https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html Signed-off-by: Markus Heiser --- docs/admin/api.rst | 160 ++++++------ docs/admin/filtron.rst | 55 ++-- docs/admin/morty.rst | 19 +- docs/blog/admin.rst | 55 ++-- docs/blog/blog.rst | 1 + docs/blog/intro-offline.rst | 64 +++-- docs/blog/python3.rst | 48 ++-- docs/conf.py | 8 +- docs/dev/contribution_guide.rst | 105 ++++---- docs/dev/engine_overview.rst | 427 ++++++++++++++------------------ docs/dev/plugins.rst | 45 ++-- docs/dev/quickstart.rst | 88 +++---- docs/dev/search_api.rst | 226 +++++------------ docs/dev/translation.rst | 44 ++-- docs/index.rst | 28 ++- docs/user/own-instance.rst | 70 ++++-- docs/user/search_syntax.rst | 10 +- 17 files changed, 700 insertions(+), 753 deletions(-) diff --git a/docs/admin/api.rst b/docs/admin/api.rst index 8d616224..7804a866 100644 --- a/docs/admin/api.rst +++ b/docs/admin/api.rst @@ -1,94 +1,96 @@ .. _adminapi: +================== Administration API ------------------- +================== Get configuration data -~~~~~~~~~~~~~~~~~~~~~~ +====================== -.. code:: sh +.. code:: http - GET /config + GET /config HTTP/1.1 Sample response -``````````````` +--------------- + +.. code:: json + + { + "autocomplete": "", + "categories": [ + "map", + "it", + "images", + ], + "default_locale": "", + "default_theme": "oscar", + "engines": [ + { + "categories": [ + "map" + ], + "enabled": true, + "name": "openstreetmap", + "shortcut": "osm" + }, + { + "categories": [ + "it" + ], + "enabled": true, + "name": "arch linux wiki", + "shortcut": "al" + }, + { + "categories": [ + "images" + ], + "enabled": true, + "name": "google images", + "shortcut": "goi" + }, + { + "categories": [ + "it" + ], + "enabled": false, + "name": "bitbucket", + "shortcut": "bb" + }, + ], + "instance_name": "searx", + "locales": { + "de": "Deutsch (German)", + "en": "English", + "eo": "Esperanto (Esperanto)", + }, + "plugins": [ + { + "enabled": true, + "name": "HTTPS rewrite" + }, + { + "enabled": false, + "name": "Vim-like hotkeys" + } + ], + "safe_search": 0 + } -.. code:: sh - - { - "autocomplete": "", - "categories": [ - "map", - "it", - "images", - ], - "default_locale": "", - "default_theme": "oscar", - "engines": [ - { - "categories": [ - "map" - ], - "enabled": true, - "name": "openstreetmap", - "shortcut": "osm" - }, - { - "categories": [ - "it" - ], - "enabled": true, - "name": "arch linux wiki", - "shortcut": "al" - }, - { - "categories": [ - "images" - ], - "enabled": true, - "name": "google images", - "shortcut": "goi" - }, - { - "categories": [ - "it" - ], - "enabled": false, - "name": "bitbucket", - "shortcut": "bb" - }, - ], - "instance_name": "searx", - "locales": { - "de": "Deutsch (German)", - "en": "English", - "eo": "Esperanto (Esperanto)", - }, - "plugins": [ - { - "enabled": true, - "name": "HTTPS rewrite" - }, - { - "enabled": false, - "name": "Vim-like hotkeys" - } - ], - "safe_search": 0 - } Embed search bar ----------------- +================ -The search bar can be embedded into websites. Just paste the example into the HTML of the site. -URL of the searx instance and values are customizable. +The search bar can be embedded into websites. Just paste the example into the +HTML of the site. URL of the searx instance and values are customizable. .. code:: html - -
- - - - - -
+ +
+ + + + + +
diff --git a/docs/admin/filtron.rst b/docs/admin/filtron.rst index 9e55d596..07dcb9bc 100644 --- a/docs/admin/filtron.rst +++ b/docs/admin/filtron.rst @@ -1,25 +1,26 @@ +========================== How to protect an instance ========================== -Searx depens on external search services. To avoid the abuse of these services it is advised to limit the number of requests processed by searx. +Searx depens on external search services. To avoid the abuse of these services +it is advised to limit the number of requests processed by searx. + +An application firewall, ``filtron`` solves exactly this problem. Information +on how to install it can be found at the `project page of filtron +`__. -An application firewall, ``filtron`` solves exactly this problem. Information on how to install it can be found at the `project page of filtron `__. Sample configuration of filtron -------------------------------- +=============================== -An example configuration can be find below. This configuration limits the access of - - * scripts or applications (roboagent limit) - - * webcrawlers (botlimit) - - * IPs which send too many requests (IP limit) - - * too many json, csv, etc. requests (rss/json limit) - - * the same UserAgent of if too many requests (useragent limit) +An example configuration can be find below. This configuration limits the access +of: +- scripts or applications (roboagent limit) +- webcrawlers (botlimit) +- IPs which send too many requests (IP limit) +- too many json, csv, etc. requests (rss/json limit) +- the same UserAgent of if too many requests (useragent limit) .. code:: json @@ -120,26 +121,28 @@ An example configuration can be find below. This configuration limits the access Route request through filtron ------------------------------ +============================= Filtron can be started using the following command: -.. code:: bash +.. code:: sh - $ filtron -rules rules.json + $ filtron -rules rules.json -It listens on 127.0.0.1:4004 and forwards filtered requests to 127.0.0.1:8888 by default. +It listens on ``127.0.0.1:4004`` and forwards filtered requests to +``127.0.0.1:8888`` by default. Use it along with ``nginx`` with the following example configuration. .. code:: nginx - location / { - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Scheme $scheme; - proxy_pass http://127.0.0.1:4004/; - } + location / { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Scheme $scheme; + proxy_pass http://127.0.0.1:4004/; + } -Requests are coming from port 4004 going through filtron and then forwarded to port 8888 where a searx is being run. +Requests are coming from port 4004 going through filtron and then forwarded to +port 8888 where a searx is being run. diff --git a/docs/admin/morty.rst b/docs/admin/morty.rst index 49e62bba..7d7b3449 100644 --- a/docs/admin/morty.rst +++ b/docs/admin/morty.rst @@ -1,21 +1,26 @@ +========================= How to setup result proxy ========================= -By default searx can only act as an image proxy for result images, -but it is possible to proxify all the result URLs with an external service, -`morty `__. +.. _morty: https://github.com/asciimoo/morty +.. _morty's README: https://github.com/asciimoo/morty -To use this feature, morty has to be installed and activated in searx's ``settings.yml``. +By default searx can only act as an image proxy for result images, but it is +possible to proxify all the result URLs with an external service, morty_. + +To use this feature, morty has to be installed and activated in searx's +``settings.yml``. Add the following snippet to your ``settings.yml`` and restart searx: - .. code:: yaml result_proxy: url : http://127.0.0.1:3000/ key : your_morty_proxy_key -``url`` is the address of the running morty service +``url`` + Is the address of the running morty service. -``key`` is an optional argument, see `morty's README `__ for more information. +``key`` + Is an optional argument, see `morty's README`_ for more information. diff --git a/docs/blog/admin.rst b/docs/blog/admin.rst index 18d5ed33..e9531619 100644 --- a/docs/blog/admin.rst +++ b/docs/blog/admin.rst @@ -1,42 +1,43 @@ -Searx admin interface: manage your instance from your browser +============================================================= +Searx admin interface ============================================================= -One of the biggest advantages of searx is being extremely customizable. But at first it can be daunting to newcomers. -A barrier of taking advantage of this feature is our ugly settings file which is sometimes hard to understand and edit. +.. _searx-admin: https://github.com/kvch/searx-admin#searx-admin +.. _NLnet Foundation: https://nlnet.nl/ -To make self-hosting searx more accessible a new tool is introduced, called ``searx-admin``. -It is a web application which is capable of managing your instance and manipulating its settings via a web UI. -It aims to replace editing of ``settings.yml`` for less experienced administrators or people -who prefer graphical admin interfaces. + manage your instance from your browser + +.. sidebar:: Installation + + Installation guide can be found in the repository of searx-admin_. + +One of the biggest advantages of searx is being extremely customizable. But at +first it can be daunting to newcomers. A barrier of taking advantage of this +feature is our ugly settings file which is sometimes hard to understand and +edit. + +To make self-hosting searx more accessible a new tool is introduced, called +``searx-admin``. It is a web application which is capable of managing your +instance and manipulating its settings via a web UI. It aims to replace editing +of ``settings.yml`` for less experienced administrators or people who prefer +graphical admin interfaces. .. figure:: searx-admin-engines.png - :scale: 50 % - :alt: Screenshot of engine list - :align: center - :figclass: align-center - - Configuration page of engines + :alt: Screenshot of engine list + Configuration page of engines -Since ``searx-admin`` acts as a supervisor for searx, we have decided to implement it -as a standalone tool instead of part of searx. Another reason for making it a standalone -tool is that the codebase and dependencies of searx should not grow because of a fully optional feature, -which does not affect existing instances. +Since ``searx-admin`` acts as a supervisor for searx, we have decided to +implement it as a standalone tool instead of part of searx. Another reason for +making it a standalone tool is that the codebase and dependencies of searx +should not grow because of a fully optional feature, which does not affect +existing instances. -Installation ------------- - -Installation guide can be found in the repository of searx-admin: -https://github.com/kvch/searx-admin#installation--usage - Acknowledgements ----------------- +================ This development was sponsored by `NLnet Foundation`_. -.. _NLnet Foundation: https://nlnet.nl/ - - | Happy hacking. | kvch // 2017.08.22 21:25 diff --git a/docs/blog/blog.rst b/docs/blog/blog.rst index 2ccaaa5d..52fa3f12 100644 --- a/docs/blog/blog.rst +++ b/docs/blog/blog.rst @@ -1,3 +1,4 @@ +==== Blog ==== diff --git a/docs/blog/intro-offline.rst b/docs/blog/intro-offline.rst index 0def3e09..f6e90de3 100644 --- a/docs/blog/intro-offline.rst +++ b/docs/blog/intro-offline.rst @@ -1,58 +1,70 @@ +=============================== Preparation for offline engines =============================== Offline engines ---------------- +=============== -To extend the functionality of searx, offline engines are going to be introduced. An offline engine is an engine which does not need Internet connection to perform a search and does not use HTTP to communicate. +To extend the functionality of searx, offline engines are going to be +introduced. An offline engine is an engine which does not need Internet +connection to perform a search and does not use HTTP to communicate. -Offline engines can be configured as online engines, by adding those to the `engines` list of `settings.yml`. Thus, searx finds the engine file and imports it. +Offline engines can be configured as online engines, by adding those to the +`engines` list of :origin:`settings.yml `. Thus, searx +finds the engine file and imports it. Example skeleton for the new engines: .. code:: python - from subprocess import PIPE, Popen + from subprocess import PIPE, Popen - categories = ['general'] - offline = True + categories = ['general'] + offline = True - def init(settings): - pass + def init(settings): + pass - def search(query, params): - process = Popen(['ls', query], stdout=PIPE) - return_code = process.wait() - if return_code != 0: - raise RuntimeError('non-zero return code', return_code) + def search(query, params): + process = Popen(['ls', query], stdout=PIPE) + return_code = process.wait() + if return_code != 0: + raise RuntimeError('non-zero return code', return_code) - results = [] - line = process.stdout.readline() - while line: - result = parse_line(line) - results.append(results) + results = [] + line = process.stdout.readline() + while line: + result = parse_line(line) + results.append(results) - line = process.stdout.readline() + line = process.stdout.readline() - return results + return results Development progress --------------------- +==================== -First, a proposal has been created as a Github issue. Then it was moved to the wiki as a design document. You can read it here: :wiki:`Offline-engines`. +First, a proposal has been created as a Github issue. Then it was moved to the +wiki as a design document. You can read it here: :wiki:`Offline-engines`. -In this development step, searx core was prepared to accept and perform offline searches. Offline search requests are scheduled together with regular offline requests. +In this development step, searx core was prepared to accept and perform offline +searches. Offline search requests are scheduled together with regular offline +requests. -As offline searches can return arbitrary results depending on the engine, the current result templates were insufficient to present such results. Thus, a new template is introduced which is caplable of presenting arbitrary key value pairs as a table. You can check out the pull request for more details: https://github.com/asciimoo/searx/pull/1700 +As offline searches can return arbitrary results depending on the engine, the +current result templates were insufficient to present such results. Thus, a new +template is introduced which is caplable of presenting arbitrary key value pairs +as a table. You can check out the pull request for more details see +:pull:`1700`. Next steps ----------- +========== Today, it is possible to create/run an offline engine. However, it is going to be publicly available for everyone who knows the searx instance. So the next step is to introduce token based access for engines. This way administrators are able to limit the access to private engines. Acknowledgement ---------------- +=============== This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ . diff --git a/docs/blog/python3.rst b/docs/blog/python3.rst index eb14a49e..5bb7f1c8 100644 --- a/docs/blog/python3.rst +++ b/docs/blog/python3.rst @@ -1,7 +1,17 @@ -Introducing Python3 support -=========================== +============================ +Introducing Python 3 support +============================ -As most operation systems are coming with Python3 installed by default. So it is time for searx to support Python3. But don't worry support of Python2.7 won't be dropped. +.. _Python 2.7 clock: https://pythonclock.org/ + +.. sidebar:: Python 2.7 to 3 upgrade + + This chapter exists of historical reasons. Python 2.7 release schedule ends + (`Python 2.7 clock`_) after 11 years Python 3 exists + +As most operation systems are coming with Python3 installed by default. So it is +time for searx to support Python3. But don't worry support of Python2.7 won't be +dropped. .. image:: searxpy3.png :scale: 50 % @@ -9,13 +19,14 @@ As most operation systems are coming with Python3 installed by default. So it is :align: center -How to run searx using Python3 ------------------------------- +How to run searx using Python 3 +=============================== -Please make sure that you run at least Python3.5. +Please make sure that you run at least Python 3.5. -To run searx, first a Python3 virtualenv should be created. After entering the virtualenv, -dependencies must be installed. Then run searx with python3 instead of the usual python command. +To run searx, first a Python3 virtualenv should be created. After entering the +virtualenv, dependencies must be installed. Then run searx with python3 instead +of the usual python command. .. code:: sh @@ -25,25 +36,28 @@ dependencies must be installed. Then run searx with python3 instead of the usual python3 searx/webapp.py -If you want to run searx using Python2.7, you don't have to do anything differently as before. +If you want to run searx using Python2.7, you don't have to do anything +differently as before. Fun facts ---------- +========= - 115 files were changed when implementing the support for both Python versions. -- All of the dependencies was compatible except for the robotframework used for browser tests. Thus, these tests were migrated to splinter. So from now on both versions are being tested on Travis and can be tested locally. +- All of the dependencies was compatible except for the robotframework used for + browser tests. Thus, these tests were migrated to splinter. So from now on + both versions are being tested on Travis and can be tested locally. -If you found bugs... --------------------- +If you found bugs +================= -...please open an issue on `GitHub`_. Make sure that you mention your Python version in your issue, -so we can investigate it properly. +Please open an issue on `GitHub`_. Make sure that you mention your Python +version in your issue, so we can investigate it properly. .. _GitHub: https://github.com/asciimoo/searx/issues -Acknowledgement ---------------- +Acknowledgment +============== This development was sponsored by `NLnet Foundation`_. diff --git a/docs/conf.py b/docs/conf.py index ee60e46e..5186d012 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -20,12 +20,16 @@ master_doc = "index" source_suffix = '.rst' # usage:: lorem :patch:`f373169` ipsum - extlinks = {} + +# upstream links +extlinks['wiki'] = ('https://github.com/asciimoo/searx/wiki/%s', ' ') +extlinks['pull'] = ('https://github.com/asciimoo/searx/pull/%s', 'PR ') + +# links to custom brand extlinks['origin'] = (GIT_URL + '/blob/master/%s', 'git://') extlinks['patch'] = (GIT_URL + '/commit/%s', '#') extlinks['search'] = (SEARX_URL + '/%s', '#') -extlinks['wiki'] = ('https://github.com/asciimoo/searx/wiki/%s', ' ') extensions = [ 'sphinx.ext.extlinks', diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 65e58729..9414de2c 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -1,66 +1,68 @@ +================= How to contribute ------------------ +================= Prime directives: Privacy, Hackability -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +====================================== -Searx has two prime directives, privacy-by-design and hackability. The +Searx has two prime directives, **privacy-by-design and hackability** . The hackability comes in three levels: -- support of search engines -- plugins to alter search behaviour -- hacking searx itself +- support of search engines +- plugins to alter search behaviour +- hacking searx itself -Note the lack of "world domination" among the directives. -Searx has no intention of wide mass-adoption, rounded -corners, etc. The prime directive "privacy" deserves a separate -chapter, as it's quite uncommon unfortunately. +Note the lack of "world domination" among the directives. Searx has no +intention of wide mass-adoption, rounded corners, etc. The prime directive +"privacy" deserves a separate chapter, as it's quite uncommon unfortunately. Privacy-by-design -^^^^^^^^^^^^^^^^^ +----------------- -Searx was born out of the need for a privacy-respecting search tool -which can be extended easily to maximize both its search and its -privacy protecting capabilities. +Searx was born out of the need for a **privacy-respecting** search tool which +can be extended easily to maximize both, its search and its privacy protecting +capabilities. -A few widely used features work differently or turned off by default or not implemented -at all as a consequence of privacy-by-design. +A few widely used features work differently or turned off by default or not +implemented at all **as a consequence of privacy-by-design**. -If a feature reduces the privacy preserving aspects of searx, it -should be switched off by default or should not implemented at all. -There are plenty of search engines already providing such features. -If a feature reduces the protection of searx, users must be -informed about the effect of choosing to enable it. Features -that protect privacy but differ from the expectations of the -user should also be explained. +If a feature reduces the privacy preserving aspects of searx, it should be +switched off by default or should not implemented at all. There are plenty of +search engines already providing such features. If a feature reduces the +protection of searx, users must be informed about the effect of choosing to +enable it. Features that protect privacy but differ from the expectations of +the user should also be explained. -Also, if you think that something works weird with searx, -it's might be because of the tool you use is designed in a way to interfere with -the privacy respect. Submitting a bugreport to the vendor of the tool that -misbehaves might be a good feedback to reconsider the disrespect to -its customers (e.g. GET vs POST requests in various browsers). +Also, if you think that something works weird with searx, it's might be because +of the tool you use is designed in a way to interfere with the privacy respect. +Submitting a bugreport to the vendor of the tool that misbehaves might be a good +feedback to reconsider the disrespect to its customers (e.g. ``GET`` vs ``POST`` +requests in various browsers). -Remember the other prime directive of searx is to be hackable, so if the -above privacy concerns do not fancy you, simply fork it. +Remember the other prime directive of searx is to be hackable, so if the above +privacy concerns do not fancy you, simply fork it. -Happy hacking. + *Happy hacking.* Code -~~~~ +==== + +.. _PEP8: https://www.python.org/dev/peps/pep-0008/ + In order to submit a patch, please follow the steps below: - Follow coding conventions. - - PEP8 standards apply, except the convention of line length - + - PEP8_ standards apply, except the convention of line length - Maximum line length is 120 characters -- Check if your code breaks existing tests. If so, update the tests or fix your code. +- Check if your code breaks existing tests. If so, update the tests or fix your + code. - If your code can be unit-tested, add unit tests. -- Add yourself to the AUTHORS file. +- Add yourself to the :origin:`AUTHORS.rst` file. - Create a pull request. @@ -68,31 +70,20 @@ For more help on getting started with searx development, see :ref:`devquickstart Translation -~~~~~~~~~~~ +=========== -Translation currently takes place on -`transifex `__. +Translation currently takes place on :ref:`transifex `. + +.. caution:: + + Please, do not update translation files in the repo. -**Please, do not update translation files in the repo.** Documentation -~~~~~~~~~~~~~ +============= -The documentation is built using Sphinx. So in order to be able to generate the required -files, you have to install it on your system. (It can be installed easily using pip.) +.. admonition:: ToDo -1. Checkout the gh-pages branch. + docs are no longer in gh-branch -2. Edit the rst file you wish to update. Or create a new rst file and place it under the appropriate folder. - -3. Build the documentation using Sphinx. - -4. Add the updated and created files of these extension: - - - .rst - - - .html - - - .txt - -6. Create a pull request. + Update this chapter and document the /docs workflow!! diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index 937ca888..92405dc6 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -1,21 +1,25 @@ + +.. _engines-dev: + +=============== Engine overview =============== +.. _metasearch-engine: https://en.wikipedia.org/wiki/Metasearch_engine -searx is a `metasearch-engine `__, -so it uses different search engines to provide better results. - -Because there is no general search API which could be used for every -search engine, an adapter has to be built between searx and the -external search engines. Adapters are stored under the folder -:origin:`searx/engines`. +searx is a metasearch-engine_, so it uses different search engines to provide +better results. +Because there is no general search API which could be used for every search +engine, an adapter has to be built between searx and the external search +engines. Adapters are stored under the folder :origin:`searx/engines`. .. contents:: :depth: 3 + :backlinks: entry general engine configuration ----------------------------- +============================ It is required to tell searx the type of results the engine provides. The arguments can be set in the engine file or in the settings file @@ -23,292 +27,239 @@ arguments can be set in the engine file or in the settings file the ones in the engine file. It does not matter if an option is stored in the engine file or in the -settings. However, the standard way is the following: +settings. However, the standard way is the following: engine file -~~~~~~~~~~~ +----------- + +======================= =========== =========================================== +argument type information +======================= =========== =========================================== +categories list pages, in which the engine is working +paging boolean support multible pages +language_support boolean support language choosing +time_range_support boolean support search time range +offline boolean engine runs offline +======================= =========== =========================================== -+----------------------+-----------+-----------------------------------------+ -| argument | type | information | -+======================+===========+=========================================+ -| categories | list | pages, in which the engine is working | -+----------------------+-----------+-----------------------------------------+ -| paging | boolean | support multible pages | -+----------------------+-----------+-----------------------------------------+ -| language\_support | boolean | support language choosing | -+----------------------+-----------+-----------------------------------------+ -| time\_range\_support | boolean | support search time range | -+----------------------+-----------+-----------------------------------------+ -| offline | boolean | engine runs offline | -+----------------------+-----------+-----------------------------------------+ settings.yml -~~~~~~~~~~~~ +------------ + +======================= =========== =========================================== +argument type information +======================= =========== =========================================== +name string name of search-engine +engine string name of searx-engine + (filename without ``.py``) +shortcut string shortcut of search-engine +timeout string specific timeout for search-engine +======================= =========== =========================================== -+------------+----------+-----------------------------------------------+ -| argument | type | information | -+============+==========+===============================================+ -| name | string | name of search-engine | -+------------+----------+-----------------------------------------------+ -| engine | string | name of searx-engine (filename without .py) | -+------------+----------+-----------------------------------------------+ -| shortcut | string | shortcut of search-engine | -+------------+----------+-----------------------------------------------+ -| timeout | string | specific timeout for search-engine | -+------------+----------+-----------------------------------------------+ overrides -~~~~~~~~~ +--------- -A few of the options have default values in the engine, but are -often overwritten by the settings. If ``None`` is assigned to an option -in the engine file, it has to be redefined in the settings, -otherwise searx will not start with that engine. +A few of the options have default values in the engine, but are often +overwritten by the settings. If ``None`` is assigned to an option in the engine +file, it has to be redefined in the settings, otherwise searx will not start +with that engine. -The naming of overrides is arbitrary. But the recommended -overrides are the following: +The naming of overrides is arbitrary. But the recommended overrides are the +following: -+-----------------------+----------+----------------------------------------------------------------+ -| argument | type | information | -+=======================+==========+================================================================+ -| base\_url | string | base-url, can be overwritten to use same engine on other URL | -+-----------------------+----------+----------------------------------------------------------------+ -| number\_of\_results | int | maximum number of results per request | -+-----------------------+----------+----------------------------------------------------------------+ -| language | string | ISO code of language and country like en\_US | -+-----------------------+----------+----------------------------------------------------------------+ -| api\_key | string | api-key if required by engine | -+-----------------------+----------+----------------------------------------------------------------+ +======================= =========== =========================================== +argument type information +======================= =========== =========================================== +base_url string base-url, can be overwritten to use same + engine on other URL +number_of_results int maximum number of results per request +language string ISO code of language and country like en_US +api_key string api-key if required by engine +======================= =========== =========================================== example code -~~~~~~~~~~~~ +------------ .. code:: python - # engine dependent config - categories = ['general'] - paging = True - language_support = True + # engine dependent config + categories = ['general'] + paging = True + language_support = True + making a request ----------------- +================ -To perform a search an URL have to be specified. In addition to -specifying an URL, arguments can be passed to the query. +To perform a search an URL have to be specified. In addition to specifying an +URL, arguments can be passed to the query. passed arguments -~~~~~~~~~~~~~~~~ +---------------- -These arguments can be used to construct the search query. Furthermore, +These arguments can be used to construct the search query. Furthermore, parameters with default value can be redefined for special purposes. -+----------------------+------------+------------------------------------------------------------------------+ -| argument | type | default-value, information | -+======================+============+========================================================================+ -| url | string | ``''`` | -+----------------------+------------+------------------------------------------------------------------------+ -| method | string | ``'GET'`` | -+----------------------+------------+------------------------------------------------------------------------+ -| headers | set | ``{}`` | -+----------------------+------------+------------------------------------------------------------------------+ -| data | set | ``{}`` | -+----------------------+------------+------------------------------------------------------------------------+ -| cookies | set | ``{}`` | -+----------------------+------------+------------------------------------------------------------------------+ -| verify | boolean | ``True`` | -+----------------------+------------+------------------------------------------------------------------------+ -| headers.User-Agent | string | a random User-Agent | -+----------------------+------------+------------------------------------------------------------------------+ -| category | string | current category, like ``'general'`` | -+----------------------+------------+------------------------------------------------------------------------+ -| started | datetime | current date-time | -+----------------------+------------+------------------------------------------------------------------------+ -| pageno | int | current pagenumber | -+----------------------+------------+------------------------------------------------------------------------+ -| language | string | specific language code like ``'en_US'``, or ``'all'`` if unspecified | -+----------------------+------------+------------------------------------------------------------------------+ +====================== ============ ======================================================================== +argument type default-value, information +====================== ============ ======================================================================== +url string ``''`` +method string ``'GET'`` +headers set ``{}`` +data set ``{}`` +cookies set ``{}`` +verify boolean ``True`` +headers.User-Agent string a random User-Agent +category string current category, like ``'general'`` +started datetime current date-time +pageno int current pagenumber +language string specific language code like ``'en_US'``, or ``'all'`` if unspecified +====================== ============ ======================================================================== parsed arguments -~~~~~~~~~~~~~~~~ +---------------- -The function ``def request(query, params):`` always returns the -``params`` variable. Inside searx, the following paramters can be -used to specify a search request: +The function ``def request(query, params):`` always returns the ``params`` +variable. Inside searx, the following paramters can be used to specify a search +request: + +============ =========== ========================================================= +argument type information +============ =========== ========================================================= +url string requested url +method string HTTP request method +headers set HTTP header information +data set HTTP data information (parsed if ``method != 'GET'``) +cookies set HTTP cookies +verify boolean Performing SSL-Validity check +============ =========== ========================================================= -+------------+-----------+---------------------------------------------------------+ -| argument | type | information | -+============+===========+=========================================================+ -| url | string | requested url | -+------------+-----------+---------------------------------------------------------+ -| method | string | HTTP request method | -+------------+-----------+---------------------------------------------------------+ -| headers | set | HTTP header information | -+------------+-----------+---------------------------------------------------------+ -| data | set | HTTP data information (parsed if ``method != 'GET'``) | -+------------+-----------+---------------------------------------------------------+ -| cookies | set | HTTP cookies | -+------------+-----------+---------------------------------------------------------+ -| verify | boolean | Performing SSL-Validity check | -+------------+-----------+---------------------------------------------------------+ example code -~~~~~~~~~~~~ +------------ .. code:: python - # search-url - base_url = 'https://example.com/' - search_string = 'search?{query}&page={page}' + # search-url + base_url = 'https://example.com/' + search_string = 'search?{query}&page={page}' - # do search-request - def request(query, params): - search_path = search_string.format( - query=urlencode({'q': query}), - page=params['pageno']) + # do search-request + def request(query, params): + search_path = search_string.format( + query=urlencode({'q': query}), + page=params['pageno']) - params['url'] = base_url + search_path + params['url'] = base_url + search_path + + return params - return params returned results ----------------- +================ -Searx is able to return results of different media-types. -Currently the following media-types are supported: +Searx is able to return results of different media-types. Currently the +following media-types are supported: -- default -- images -- videos -- torrent -- map +- default_ +- images_ +- videos_ +- torrent_ +- map_ -To set another media-type as default, the parameter -``template`` must be set to the desired type. +To set another media-type as default, the parameter ``template`` must be set to +the desired type. default -~~~~~~~ +------- -+--------------------+---------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+====================+===============================================================================================================+ -| url | string, url of the result | -+--------------------+---------------------------------------------------------------------------------------------------------------+ -| title | string, title of the result | -+--------------------+---------------------------------------------------------------------------------------------------------------+ -| content | string, general result-text | -+--------------------+---------------------------------------------------------------------------------------------------------------+ -| publishedDate | :py:class:`datetime.datetime`, time of publish | -+--------------------+---------------------------------------------------------------------------------------------------------------+ +========================= ===================================================== +result-parameter information +========================= ===================================================== +url string, url of the result +title string, title of the result +content string, general result-text +publishedDate :py:class:`datetime.datetime`, time of publish +========================= ===================================================== images -~~~~~~ +------ -to use this template, the parameter +To use this template, the parameter: -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+====================+=======================================================================================================================================+ -| template | is set to ``images.html`` | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| url | string, url to the result site | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, title of the result *(partly implemented)* | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| content | *(partly implemented)* | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | :py:class:`datetime.datetime`, time of publish *(partly implemented)* | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| img\_src | string, url to the result image | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| thumbnail\_src | string, url to a small-preview image | -+--------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +========================= ===================================================== +result-parameter information +========================= ===================================================== +template is set to ``images.html`` +url string, url to the result site +title string, title of the result *(partly implemented)* +content *(partly implemented)* +publishedDate :py:class:`datetime.datetime`, + time of publish *(partly implemented)* +img\_src string, url to the result image +thumbnail\_src string, url to a small-preview image +========================= ===================================================== videos -~~~~~~ +------ -+--------------------+--------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+====================+==============================================================================================================+ -| template | is set to ``videos.html`` | -+--------------------+--------------------------------------------------------------------------------------------------------------+ -| url | string, url of the result | -+--------------------+--------------------------------------------------------------------------------------------------------------+ -| title | string, title of the result | -+--------------------+--------------------------------------------------------------------------------------------------------------+ -| content | *(not implemented yet)* | -+--------------------+--------------------------------------------------------------------------------------------------------------+ -| publishedDate | :py:class:`datetime.datetime`, time of publish | -+--------------------+--------------------------------------------------------------------------------------------------------------+ -| thumbnail | string, url to a small-preview image | -+--------------------+--------------------------------------------------------------------------------------------------------------+ +========================= ===================================================== +result-parameter information +========================= ===================================================== +template is set to ``videos.html`` +url string, url of the result +title string, title of the result +content *(not implemented yet)* +publishedDate :py:class:`datetime.datetime`, time of publish +thumbnail string, url to a small-preview image +========================= ===================================================== torrent -~~~~~~~ +------- -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+==================+=======================================================================================================================================+ -| template | is set to ``torrent.html`` | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| url | string, url of the result | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| title | string, title of the result | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| content | string, general result-text | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| publishedDate | :py:class:`datetime.datetime`, time of publish *(not implemented yet)* | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| seed | int, number of seeder | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| leech | int, number of leecher | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| filesize | int, size of file in bytes | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| files | int, number of files | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| magnetlink | string, `magnetlink `__ of the result | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -| torrentfile | string, torrentfile of the result | -+------------------+---------------------------------------------------------------------------------------------------------------------------------------+ +.. _magnetlink: https://en.wikipedia.org/wiki/Magnet_URI_scheme + +========================= ===================================================== +result-parameter information +========================= ===================================================== +template is set to ``torrent.html`` +url string, url of the result +title string, title of the result +content string, general result-text +publishedDate :py:class:`datetime.datetime`, + time of publish *(not implemented yet)* +seed int, number of seeder +leech int, number of leecher +filesize int, size of file in bytes +files int, number of files +magnetlink string, magnetlink_ of the result +torrentfile string, torrentfile of the result +========================= ===================================================== map -~~~ - -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| result-parameter | information | -+=========================+==============================================================================================================+ -| url | string, url of the result | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| title | string, title of the result | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| content | string, general result-text | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| publishedDate | :py:class:`datetime.datetime`, time of publish | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| latitude | latitude of result (in decimal format) | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| longitude | longitude of result (in decimal format) | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| boundingbox | boundingbox of result (array of 4. values ``[lat-min, lat-max, lon-min, lon-max]``) | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| geojson | geojson of result (http://geojson.org) | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| osm.type | type of osm-object (if OSM-Result) | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| osm.id | id of osm-object (if OSM-Result) | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| address.name | name of object | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| address.road | street name of object | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| address.house\_number | house number of object | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| address.locality | city, place of object | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| address.postcode | postcode of object | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ -| address.country | country of object | -+-------------------------+--------------------------------------------------------------------------------------------------------------+ +--- +========================= ===================================================== +result-parameter information +========================= ===================================================== +url string, url of the result +title string, title of the result +content string, general result-text +publishedDate :py:class:`datetime.datetime`, time of publish +latitude latitude of result (in decimal format) +longitude longitude of result (in decimal format) +boundingbox boundingbox of result (array of 4. values + ``[lat-min, lat-max, lon-min, lon-max]``) +geojson geojson of result (http://geojson.org) +osm.type type of osm-object (if OSM-Result) +osm.id id of osm-object (if OSM-Result) +address.name name of object +address.road street name of object +address.house_number house number of object +address.locality city, place of object +address.postcode postcode of object +address.country country of object +========================= ===================================================== diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst index 1d77f861..e97bbeb4 100644 --- a/docs/dev/plugins.rst +++ b/docs/dev/plugins.rst @@ -1,45 +1,48 @@ +======= Plugins -------- +======= -Plugins can extend or replace functionality of various components of -searx. +Plugins can extend or replace functionality of various components of searx. Example plugin -~~~~~~~~~~~~~~ +============== .. code:: python - name = 'Example plugin' - description = 'This plugin extends the suggestions with the word "example"' - default_on = False # disabled by default + name = 'Example plugin' + description = 'This plugin extends the suggestions with the word "example"' + default_on = False # disabled by default - js_dependencies = tuple() # optional, list of static js files - css_dependencies = tuple() # optional, list of static css files + js_dependencies = tuple() # optional, list of static js files + css_dependencies = tuple() # optional, list of static css files - # attach callback to the post search hook - # request: flask request object - # ctx: the whole local context of the post search hook - def post_search(request, ctx): - ctx['search'].suggestions.add('example') - return True + # attach callback to the post search hook + # request: flask request object + # ctx: the whole local context of the post search hook + def post_search(request, ctx): + ctx['search'].suggestions.add('example') + return True Plugin entry points -~~~~~~~~~~~~~~~~~~~ +=================== -Entry points (hooks) define when a plugin runs. Right now only three hooks are implemented. So feel free to implement a hook if it fits the behaviour of your plugin. +Entry points (hooks) define when a plugin runs. Right now only three hooks are +implemented. So feel free to implement a hook if it fits the behaviour of your +plugin. Pre search hook -``````````````` +--------------- Runs BEFORE the search request. Function to implement: ``pre_search`` Post search hook -```````````````` +---------------- Runs AFTER the search request. Function to implement: ``post_search`` Result hook -``````````` +----------- -Runs when a new result is added to the result list. Function to implement: ``on_result`` +Runs when a new result is added to the result list. Function to implement: +``on_result`` diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index e7d4baf4..a4a37a26 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -1,17 +1,18 @@ .. _devquickstart: +====================== Development Quickstart ----------------------- +====================== -This quickstart guide gets your environment set up with searx. Furthermore, it gives a -short introduction to the new manage.sh script. +This quickstart guide gets your environment set up with searx. Furthermore, it +gives a short introduction to the ``manage.sh`` script. How to setup your development environment -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +========================================= -First, clone the source code of searx to the desired folder. In this case the source -is cloned to ~/myprojects/searx. Then create and activate the searx-ve -virtualenv and install the required packages using manage.sh. +First, clone the source code of searx to the desired folder. In this case the +source is cloned to ``~/myprojects/searx``. Then create and activate the +searx-ve virtualenv and install the required packages using manage.sh. .. code:: sh @@ -24,85 +25,86 @@ virtualenv and install the required packages using manage.sh. How to run tests -~~~~~~~~~~~~~~~~ +================ -Tests can be run using the manage.sh script. - -Following tests and checks are available: +Tests can be run using the ``manage.sh`` script. Following tests and checks are +available: - Unit tests - - Selenium tests - - PEP8 validation - - Unit test coverage check For example unit tests are run with the command below: .. code:: sh - ./manage.sh unit_tests + ./manage.sh unit_tests -For further test options, please consult the help of the manage.sh script. +For further test options, please consult the help of the ``manage.sh`` script. How to compile styles and javascript -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +==================================== + +.. _less: http://lesscss.org/ +.. _NodeJS: https://nodejs.org How to build styles -^^^^^^^^^^^^^^^^^^^ +------------------- -Less is required to build the styles of searx. Less can be installed using either NodeJS or Apt. +Less_ is required to build the styles of searx. Less_ can be installed using +either NodeJS_ or Apt. .. code:: sh - sudo apt-get install nodejs - sudo npm install -g less - + sudo -H apt-get install nodejs + sudo -H npm install -g less OR .. code:: sh - sudo apt-get install node-less + sudo -H apt-get install node-less -After satisfying the requirements styles can be build using manage.sh +After satisfying the requirements styles can be build using ``manage.sh`` .. code:: sh - ./manage.sh styles + ./manage.sh styles How to build the source of the oscar theme -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +========================================== -Grunt must be installed in order to build the javascript sources. It depends on NodeJS, so first -Node has to be installed. +.. _grunt: https://gruntjs.com/ + +Grunt_ must be installed in order to build the javascript sources. It depends on +NodeJS, so first Node has to be installed. .. code:: sh - sudo apt-get install nodejs - sudo npm install -g grunt-cli + sudo -H apt-get install nodejs + sudo -H npm install -g grunt-cli -After installing grunt, the files can be built using the following command: +After installing grunt, the files can be built using the following command: .. code:: sh - ./manage.sh grunt_build - + ./manage.sh grunt_build Tips for debugging/development -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================== -1. Turn on debug logging - Whether you are working on a new engine or trying to eliminate a bug, it is always a good idea - to turn on debug logging. When debug logging is enabled a stack trace appears, - instead of the cryptic ``Internal Server Error`` message. It can be turned on by setting - ``debug: False`` to ``debug: True`` in settings.yml. +Turn on debug logging + Whether you are working on a new engine or trying to eliminate a bug, it is + always a good idea to turn on debug logging. When debug logging is enabled a + stack trace appears, instead of the cryptic ``Internal Server Error`` + message. It can be turned on by setting ``debug: False`` to ``debug: True`` in + :origin:`settings.yml `. -2. Run ``./manage.sh tests`` before creating a PR. - Failing build on Travis is common because of PEP8 checks. So a new commit must be created - containing these format fixes. This phase can be skipped if ``./manage.sh tests`` is run - locally before creating a PR. +Run ``./manage.sh tests`` before creating a PR. + Failing build on Travis is common because of PEP8 checks. So a new commit + must be created containing these format fixes. This phase can be skipped if + ``./manage.sh tests`` is run locally before creating a PR. diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index ea3b0501..158cab7c 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -1,3 +1,4 @@ +========== Search API ========== @@ -11,194 +12,101 @@ Furthermore, two enpoints ``/`` and ``/search`` are available for querying. ``GET /search`` Parameters -~~~~~~~~~~ +========== -.. code:: sh +``q`` : required + The search query. This string is passed to external search services. Thus, + searx supports syntax of each search service. For example, ``site:github.com + searx`` is a valid query for Google. However, if simply the query above is + passed to any search engine which does not filter its results based on this + syntax, you might not get the results you wanted. - q + See more at :ref:`search-syntax` -The search query. This string is passed to external search services. -Thus, searx supports syntax of each search service. For example, ``site:github.com searx`` is a valid -query for Google. However, if simply the query above is passed to any search engine which does not filter its -results based on this syntax, you might not get the results you wanted. +``categories`` : optional + Comma separated list, specifies the active search categories +``engines``: optional + Comma separated list, specifies the active search engines. -See more at :doc:`/user/search_syntax` +``lang``: default ``all`` + Code of the language. -Required. +``pageno``: default ``1`` + Search page number. -.. code:: sh +``time_range``: optional + [ ``day``, ``month``, ``year`` ] - categories + Time range of search for engines which support it. See if an engine supports + time range search in the preferences page of an instance. -Comma separated list, specifies the active search categories +``format``: optional + [ ``json``, ``csv``, ``rss`` ] -Optional. + Output format of results. -.. code:: sh +``results_on_new_tab``: default ``0`` + [ ``0``, ``1`` ] - engines + Open search results on new tab. -Comma separated list, specifies the active search engines. +``image_proxy``: default ``False`` + [ ``True``, ``False`` ] -Optional. + Proxy image results through searx. -.. code:: sh +``autocomplete``: default *empty* + [ ``google``, ``dbpedia``, ``duckduckgo``, ``startpage``, ``wikipedia`` ] - lang + Service which completes words as you type. -Code of the language. +``safesearch``: default ``None`` + [ ``0``, ``1``, ``None`` ] -Optional. + Filter search results of engines which support safe search. See if an engine + supports safe search in the preferences page of an instance. -Default: ``all`` +``theme``: default ``oscar`` + [ ``oscar``, ``simple``, ``legacy``, ``pix-art``, ``courgette`` ] -.. code:: sh + Theme of instance. - pageno + Please note, available themes depend on an instance. It is possible that an + instance administrator deleted, created or renamed themes on his/her instance. + See the available options in the preferences page of the instance. -Search page number. +``oscar-style``: default ``logicodev`` + [ ``pointhi``, ``logicodev`` ] -Optional. + Style of Oscar theme. It is only parsed if the theme of an instance is + ``oscar``. -Default: ``1`` + Please note, available styles depend on an instance. It is possible that an + instance administrator deleted, created or renamed styles on his/her + instance. See the available options in the preferences page of the instance. -.. code:: sh +``enabled_plugins``: optional + List of enabled plugins. - time_range + :default: ``HTTPS_rewrite``, ``Self_Informations``, + ``Search_on_category_select``, ``Tracker_URL_remover`` -Time range of search for engines which support it. See if an engine supports time range search in the preferences page of an instance. + :values: [ ``DOAI_rewrite``, ``HTTPS_rewrite``, ``Infinite_scroll``, + ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, + ``Search_on_category_select`` ] -Optional. +``disabled_plugins``: optional + List of disabled plugins. -Possible: ``day``, ``month``, ``year`` + :default: ``DOAI_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys`` + :values: ``DOAI_rewrite``, ``HTTPS_rewrite``, ``Infinite_scroll``, + ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, + ``Search_on_category_select`` -.. code:: sh +``enabled_engines``: optional : *all* :origin:`engines ` + List of enabled engines. - format +``disabled_engines``: optional : *all* :origin:`engines ` + List of disabled engines. -Output format of results. - -Optional. - -Possible: ``json``, ``csv``, ``rss`` - -.. code:: sh - - results_on_new_tab - -Open search results on new tab. - -Optional. - -Default: ``0`` - -Possible: ``0``, ``1`` - -.. code:: sh - - image_proxy - -Proxy image results through searx. - -Optional. - -Default: ``False`` - -Possible: ``True``, ``False`` - -.. code:: sh - - autocomplete - -Service which completes words as you type. - -Optional. - -Default: empty - -Possible: ``google``, ``dbpedia``, ``duckduckgo``, ``startpage``, ``wikipedia`` - -.. code:: sh - - safesearch - -Filter search results of engines which support safe search. See if an engine supports safe search in the preferences page of an instance. - -Optional. - -Default: ``None`` - -Possible: ``0``, ``1``, ``None`` - -.. code:: sh - - theme - -Theme of instance. - -Optional. - -Default: ``oscar`` - -Possible: ``oscar``, ``simple``, ``legacy``, ``pix-art``, ``courgette`` - -Please note, available themes depend on an instance. It is possible that an instance administrator deleted, created or renamed themes on his/her instance. See the available options in the preferences page of the instance. - -.. code:: sh - - oscar-style - -Style of Oscar theme. It is only parsed if the theme of an instance is ``oscar``. - -Optional. - -Default: ``logicodev`` - -Possible: ``pointhi``, ``logicodev`` - -Please note, available styles depend on an instance. It is possible that an instance administrator deleted, created or renamed styles on his/her instance. See the available options in the preferences page of the instance. - -.. code:: sh - - enabled_plugins - -List of enabled plugins. - -Optional. - -Default: ``HTTPS_rewrite``, ``Self_Informations``, ``Search_on_category_select``, ``Tracker_URL_remover`` - -Possible: ``DOAI_rewrite``, ``HTTPS_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, ``Search_on_category_select`` - -.. code:: sh - - disabled_plugins - -List of disabled plugins. - -Optional. - -Default: ``DOAI_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys`` - -Possible: ``DOAI_rewrite``, ``HTTPS_rewrite``, ``Infinite_scroll``, ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, ``Search_on_category_select`` - -.. code:: sh - - enabled_engines - -List of enabled engines. - -Optional. - -Possible: all engines - -.. code:: sh - - disabled_engines - -List of disabled engines. - -Optional. - -Possible: all engines diff --git a/docs/dev/translation.rst b/docs/dev/translation.rst index ab4dd98c..86c4c843 100644 --- a/docs/dev/translation.rst +++ b/docs/dev/translation.rst @@ -1,28 +1,36 @@ +.. _translation: + +=========== Translation =========== +.. _searx@transifex: https://www.transifex.com/asciimoo/searx/ + +Translation currently takes place on `searx@transifex`_ + Requirements ------------- +============ - * Transifex account - - * Installed CLI tool of Transifex +* Transifex account +* Installed CLI tool of Transifex Init Transifex project ----------------------- +====================== -After installing ``transifex`` using pip, run the following command to initialize the project. +After installing ``transifex`` using pip, run the following command to +initialize the project. -.. code:: shell +.. code:: sh - tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/ + tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/ -After ``$HOME/.transifexrc`` is created, get a Transifex API key and insert it into the configuration file. +After ``$HOME/.transifexrc`` is created, get a Transifex API key and insert it +into the configuration file. Create a configuration file for ``tx`` named ``$HOME/.tx/config``. -.. code:: shell +.. code:: ini [main] host = https://www.transifex.com @@ -42,20 +50,22 @@ Then run ``tx set``: Update translations -------------------- +=================== To retrieve the latest translations, pull it from Transifex. -.. code:: shell +.. code:: sh - tx pull -a + tx pull -a -Then check the new languages. If strings translated are not enough, delete those folders, because -those should not be compiled. Call the command below to compile the ``.po`` files. +Then check the new languages. If strings translated are not enough, delete those +folders, because those should not be compiled. Call the command below to compile +the ``.po`` files. .. code:: shell - pybabel compile -d searx/translations + pybabel compile -d searx/translations -After the compilation is finished commit the ``.po`` and ``.mo`` files and create a PR. +After the compilation is finished commit the ``.po`` and ``.mo`` files and +create a PR. diff --git a/docs/index.rst b/docs/index.rst index 4b2f170c..8fd37cbd 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -3,22 +3,24 @@ Welcome to searx Search without being tracked. -Searx is a free internet metasearch engine which aggregates results from more than 70 search services. Users are neither tracked nor profiled. Additionally, searx can be used over Tor for online anonymity. +.. sidebar:: Features -Get started with searx by using one of the :wiki:`Searx-instances`. If you don't trust anyone, you can set up your own, see :ref:`installation`. + - Self hosted + - No user tracking + - No user profiling + - About 70 supported search engines + - Easy integration with any search engine + - Cookies are not used by default + - Secure, encrypted connections (HTTPS/SSL) + - Hosted by organizations, such as *La Quadrature du Net*, which promote + digital rights +Searx is a free internet metasearch engine which aggregates results from more +than 70 search services. Users are neither tracked nor profiled. Additionally, +searx can be used over Tor for online anonymity. -Features --------- - - - Self hosted - - No user tracking - - No user profiling - - About 70 supported search engines - - Easy integration with any search engine - - Cookies are not used by default - - Secure, encrypted connections (HTTPS/SSL) - - Hosted by organisations, such as La Quadrature du Net, which promote digital rights +Get started with searx by using one of the :wiki:`Searx-instances`. If you +don't trust anyone, you can set up your own, see :ref:`installation`. User documentation diff --git a/docs/user/own-instance.rst b/docs/user/own-instance.rst index 555f82cc..a2f73656 100644 --- a/docs/user/own-instance.rst +++ b/docs/user/own-instance.rst @@ -1,43 +1,77 @@ +=========================== Why use a private instance? =========================== -"Is it worth to run my own instance?" is a common question among searx users. Before answering this question, see what options a searx user has. +"Is it worth to run my own instance?" is a common question among searx users. +Before answering this question, see what options a searx user has. -Public instances are open to everyone who has access to its URL. Usually, these are operated by unknown parties (from the users' point of view). Private instances can be used by a select group of people. It is for example a searx of group of friends or a company which can be accessed through VPN. Also it can be single user one which runs on the user's laptop. +Public instances are open to everyone who has access to its URL. Usually, these +are operated by unknown parties (from the users' point of view). Private +instances can be used by a select group of people. It is for example a searx of +group of friends or a company which can be accessed through VPN. Also it can be +single user one which runs on the user's laptop. -To gain more insight on how these instances work let's dive into how searx protects its users. +To gain more insight on how these instances work let's dive into how searx +protects its users. How does searx protect privacy? -------------------------------- +=============================== -Searx protects the privacy of its users in multiple ways regardless of the type of the instance (private, public). Removal of private data from search requests comes in three forms: +Searx protects the privacy of its users in multiple ways regardless of the type +of the instance (private, public). Removal of private data from search requests +comes in three forms: 1. removal of private data from requests going to search services - 2. not forwarding anything from a third party services through search services (e.g. advertisement) + 2. not forwarding anything from a third party services through search services + (e.g. advertisement) 3. removal of private data from requests going to the result pages -Removing private data means not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. IP addresses will be the IP of the instance. But searx can be configured to use proxy or Tor. `Result proxy `__ is supported, too. +Removing private data means not sending cookies to external search engines and +generating a random browser profile for every request. Thus, it does not matter +if a public or private instance handles the request, because it is anonymized in +both cases. IP addresses will be the IP of the instance. But searx can be +configured to use proxy or Tor. `Result proxy +`__ is supported, too. + +Searx does not serve ads or tracking content unlike most search services. So +private data is not forwarded to third parties who might monetize it. Besides +protecting users from search services, both referring page and search query are +hidden from visited result pages. -Searx does not serve ads or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. What are the consequences of using public instances? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +---------------------------------------------------- -If someone uses a public instance, he/she has to trust the administrator of that instance. -This means that the user of the public instance does not know whether his/her requests are logged, aggregated and sent or sold to a third party. +If someone uses a public instance, he/she has to trust the administrator of that +instance. This means that the user of the public instance does not know whether +his/her requests are logged, aggregated and sent or sold to a third party. -Also, public instances without proper protection are more vulnerable to abusing the search service, In this case the external service in exchange returns CAPTCHAs or bans the IP of the instance. Thus, search requests return less results. +Also, public instances without proper protection are more vulnerable to abusing +the search service, In this case the external service in exchange returns +CAPTCHAs or bans the IP of the instance. Thus, search requests return less +results. I see. What about private instances? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------------------ -If users run their own instances, everything is in their control: the source code, logging settings and private data. Unknown instance administrators do not have to be trusted. +If users run their own instances, everything is in their control: the source +code, logging settings and private data. Unknown instance administrators do not +have to be trusted. -Furthermore, as the default settings of their instance is editable, there is no need to use cookies to tailor searx to their needs. So preferences will not be reset to defaults when clearing browser cookies. As settings are stored on their computer, it will not be accessible to others as long as their computer is not compromised. +Furthermore, as the default settings of their instance is editable, there is no +need to use cookies to tailor searx to their needs. So preferences will not be +reset to defaults when clearing browser cookies. As settings are stored on +their computer, it will not be accessible to others as long as their computer is +not compromised. Conclusion ----------- +========== -Always use an instance which is operated by people you trust. The privacy features of searx are available to users no matter what kind of instance they use. +Always use an instance which is operated by people you trust. The privacy +features of searx are available to users no matter what kind of instance they +use. -If someone is on the go or just wants to try searx for the first time public instances are the best choices. Additionally, public instance are making a world a better place, because those who cannot or do not want to run an instance, have access to a privacy respecting search service. +If someone is on the go or just wants to try searx for the first time public +instances are the best choices. Additionally, public instance are making a +world a better place, because those who cannot or do not want to run an +instance, have access to a privacy respecting search service. diff --git a/docs/user/search_syntax.rst b/docs/user/search_syntax.rst index 90f901ba..b738c727 100644 --- a/docs/user/search_syntax.rst +++ b/docs/user/search_syntax.rst @@ -1,8 +1,12 @@ + +.. _search-syntax: + +============= Search syntax ============= -Searx allows you to modify the default categories, engines and search -language via the search query. +Searx allows you to modify the default categories, engines and search language +via the search query. Prefix ``!`` to set Category/engine @@ -22,7 +26,7 @@ See the :search:`/preferences page ` for the list of engines, categories and languages. Examples -~~~~~~~~ +======== Search in wikipedia for ``qwer``: From 04eeeb53a1215315d8027ac99978b560f45d5521 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 12 Dec 2019 19:48:42 +0100 Subject: [PATCH 080/238] doc: moved reST sources in the right folder (much clearer) Signed-off-by: Markus Heiser --- docs/admin/index.rst | 11 ++++++ docs/{dev/install => admin}/installation.rst | 0 docs/blog/{blog.rst => index.rst} | 0 docs/dev/index.rst | 13 +++++++ docs/index.rst | 38 ++++---------------- docs/user/index.rst | 9 +++++ 6 files changed, 39 insertions(+), 32 deletions(-) create mode 100644 docs/admin/index.rst rename docs/{dev/install => admin}/installation.rst (100%) rename docs/blog/{blog.rst => index.rst} (100%) create mode 100644 docs/dev/index.rst create mode 100644 docs/user/index.rst diff --git a/docs/admin/index.rst b/docs/admin/index.rst new file mode 100644 index 00000000..f3a99576 --- /dev/null +++ b/docs/admin/index.rst @@ -0,0 +1,11 @@ +=========================== +Administrator documentation +=========================== + +.. toctree:: + :maxdepth: 1 + + installation + api + filtron + morty diff --git a/docs/dev/install/installation.rst b/docs/admin/installation.rst similarity index 100% rename from docs/dev/install/installation.rst rename to docs/admin/installation.rst diff --git a/docs/blog/blog.rst b/docs/blog/index.rst similarity index 100% rename from docs/blog/blog.rst rename to docs/blog/index.rst diff --git a/docs/dev/index.rst b/docs/dev/index.rst new file mode 100644 index 00000000..8e18066c --- /dev/null +++ b/docs/dev/index.rst @@ -0,0 +1,13 @@ +======================= +Developer documentation +======================= + +.. toctree:: + :maxdepth: 1 + + quickstart + contribution_guide + engine_overview + search_api + plugins + translation diff --git a/docs/index.rst b/docs/index.rst index 8fd37cbd..d9503fef 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,3 +1,4 @@ +================ Welcome to searx ================ @@ -22,37 +23,10 @@ searx can be used over Tor for online anonymity. Get started with searx by using one of the :wiki:`Searx-instances`. If you don't trust anyone, you can set up your own, see :ref:`installation`. - -User documentation ------------------- - .. toctree:: - :maxdepth: 1 + :maxdepth: 2 - user/search_syntax - user/own-instance - -Administrator documentation ---------------------------- - -.. toctree:: - :maxdepth: 1 - - dev/install/installation - admin/api - admin/filtron - admin/morty - blog/blog - -Developer documentation ------------------------ - -.. toctree:: - :maxdepth: 1 - - dev/quickstart - dev/contribution_guide - dev/engine_overview - dev/search_api - dev/plugins - dev/translation + user/index + admin/index + dev/index + blog/index diff --git a/docs/user/index.rst b/docs/user/index.rst new file mode 100644 index 00000000..b13aca21 --- /dev/null +++ b/docs/user/index.rst @@ -0,0 +1,9 @@ +================== +User documentation +================== + +.. toctree:: + :maxdepth: 1 + + search_syntax + own-instance From 121f6964602d7717185df12c9ecd69387aad1d2d Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 13 Dec 2019 12:58:46 +0100 Subject: [PATCH 081/238] Makefile: gh-pages: keep history of gh-branch intact (don't drop) Signed-off-by: Markus Heiser --- Makefile | 3 +++ utils/makefile.sphinx | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 28b7c58c..cf5e5e63 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ export GIT_URL=https://github.com/asciimoo/searx export SEARX_URL=https://searx.me +export DOCS_URL=https://asciimoo.github.io/searx/ PYOBJECTS = searx DOC = docs @@ -59,6 +60,8 @@ PHONY += docs-live docs-live: pyenvinstall sphinx-live $(call cmd,sphinx_autobuild,html,docs,docs) +$(GH_PAGES):: + @echo "doc available at --> $(DOCS_URL)" # test # ---- diff --git a/utils/makefile.sphinx b/utils/makefile.sphinx index 01181ff2..5cbc5ebd 100644 --- a/utils/makefile.sphinx +++ b/utils/makefile.sphinx @@ -194,20 +194,20 @@ $(BOOKS_CLEAN): # github pages PHONY += $(GH_PAGES) -$(GH_PAGES): +$(GH_PAGES):: $(MAKE) docs [ -d "gh-pages/.git" ] || git clone $(GIT_URL) gh-pages - -cd $(GH_PAGES); git checkout --orphan gh-pages || exit 0 - rm -rf $(GH_PAGES)/* $(GH_PAGES)/.gitignore - touch $(GH_PAGES)/.nojekyll ;\ + -cd $(GH_PAGES); git checkout gh-pages >/dev/null + -cd $(GH_PAGES); ls -A | grep -v '.git$$' | xargs rm -rf cp -r $(DOCS_DIST)/* $(GH_PAGES)/ + touch $(GH_PAGES)/.nojekyll echo "" > $(GH_PAGES)/404.html - -cd $(GH_PAGES); git push origin :gh-pages cd $(GH_PAGES);\ git add --all . ;\ git commit -m "gh-pages: updated" ;\ git push origin gh-pages + PHONY += docs-clean docs-clean: $(BOOKS_CLEAN) $(call cmd,sphinx_clean) From 97b86fd184e81263b818dfd2168385c2e60f327a Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 13 Dec 2019 14:57:07 +0100 Subject: [PATCH 082/238] doc: document the new reST & gh-pages workflow Signed-off-by: Markus Heiser --- docs/conf.py | 2 ++ docs/dev/contribution_guide.rst | 59 +++++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 5186d012..c0bd246a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -6,6 +6,7 @@ from pallets_sphinx_themes import ProjectLink GIT_URL = os.environ.get("GIT_URL", "https://github.com/asciimoo/searx") SEARX_URL = os.environ.get("SEARX_URL", "https://searx.me") +DOCS_URL = os.environ.get("DOCS_URL", "https://asciimoo.github.io/searx/") # Project -------------------------------------------------------------- @@ -30,6 +31,7 @@ extlinks['pull'] = ('https://github.com/asciimoo/searx/pull/%s', 'PR ') extlinks['origin'] = (GIT_URL + '/blob/master/%s', 'git://') extlinks['patch'] = (GIT_URL + '/commit/%s', '#') extlinks['search'] = (SEARX_URL + '/%s', '#') +extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ') extensions = [ 'sphinx.ext.extlinks', diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 9414de2c..22d69003 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -82,8 +82,61 @@ Translation currently takes place on :ref:`transifex `. Documentation ============= -.. admonition:: ToDo +.. _Sphinx: http://www.sphinx-doc.org +.. _reST: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html - docs are no longer in gh-branch +.. sidebar:: The reST sources - Update this chapter and document the /docs workflow!! + has been moved from ``gh-branch`` into ``master`` (:origin:`docs`). + +The documentation is built using Sphinx_. So in order to be able to generate +the required files, you have to install it on your system. Much easier, use +Makefile our targets. + +Here is an example which makes complete rebuild: + +.. code:: sh + + $ make docs-clean docs + ... + The HTML pages are in dist/docs. + + +live build +---------- + +Live build is like WYSIWYG, If you want to edit the documentation, its +recommended to use. The Makefile target ``docs-live`` builds the docs, opens URL +in your favorite browser and rebuilds every time a reST file has been changed. + +.. code:: sh + + $ make docs-clean docs-clean + ... + The HTML pages are in dist/docs. + ... Serving on http://0.0.0.0:8080 + ... Start watching changes + + + +deploy on github.io +------------------- + +To deploy documentation at :docs:`github.io <.>` use Makefile target +``gh-pages``, which will builds the documentation, clones searx into a sub +folder ``gh-pages``, cleans it, copies the doc build into and runs all the +needed git add, commit and push: + +.. code:: sh + + $ make gh-pages + ... + SPHINX docs --> file://<...>/dist/docs + The HTML pages are in dist/docs. + ... + Cloning into 'gh-pages' ... + ... + cd gh-pages; git checkout gh-pages >/dev/null + Switched to a new branch 'gh-pages' + ... + doc available at --> https://asciimoo.github.io/searx From e4e578e8a972ff7d7d224c30f2a109d2b5438ea1 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 13 Dec 2019 14:58:13 +0100 Subject: [PATCH 083/238] doc: theme - make sidebar less eye-catching Signed-off-by: Markus Heiser --- docs/_themes/searx/static/searx.css | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index ae59adea..10f5b4ed 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -13,3 +13,18 @@ a:hover { p.version-warning { background-color: #004b6b; } + +div.sidebar { + background-color: whitesmoke; + border-color: lightsteelblue; + border-radius: 3pt; +} + +p.sidebar-title, .sidebar p { + margin: 6pt; +} + +.sidebar li { + list-style-type: disclosure-closed; +} + From fcd7f4cd1205db48c8796a1ba12bcb1d358a554e Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 13 Dec 2019 15:22:10 +0100 Subject: [PATCH 084/238] doc: add note about docs-clean target BTW: fix some typos Signed-off-by: Markus Heiser --- docs/dev/contribution_guide.rst | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 22d69003..064f28e6 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -93,7 +93,7 @@ The documentation is built using Sphinx_. So in order to be able to generate the required files, you have to install it on your system. Much easier, use Makefile our targets. -Here is an example which makes complete rebuild: +Here is an example which makes a complete rebuild: .. code:: sh @@ -105,13 +105,18 @@ Here is an example which makes complete rebuild: live build ---------- +.. sidebar:: docs-clean + + It is recommended to assert a complete rebuild before deploying (use + ``docs-clean``). + Live build is like WYSIWYG, If you want to edit the documentation, its recommended to use. The Makefile target ``docs-live`` builds the docs, opens URL in your favorite browser and rebuilds every time a reST file has been changed. .. code:: sh - $ make docs-clean docs-clean + $ make docs-live ... The HTML pages are in dist/docs. ... Serving on http://0.0.0.0:8080 @@ -129,7 +134,7 @@ needed git add, commit and push: .. code:: sh - $ make gh-pages + $ make docs-clean gh-pages ... SPHINX docs --> file://<...>/dist/docs The HTML pages are in dist/docs. From 02d5173fb23dfcba02634e2765bf7fd91e3d0437 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 13 Dec 2019 16:08:34 +0100 Subject: [PATCH 085/238] Makefile: remove trailing '/' from DOCS_URL Signed-off-by: Markus Heiser --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index cf5e5e63..b69202ba 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ export GIT_URL=https://github.com/asciimoo/searx export SEARX_URL=https://searx.me -export DOCS_URL=https://asciimoo.github.io/searx/ +export DOCS_URL=https://asciimoo.github.io/searx PYOBJECTS = searx DOC = docs From 0ae86cd1685d244c83a6080a7816365096ab06f8 Mon Sep 17 00:00:00 2001 From: Nick Espig Date: Tue, 4 Jun 2019 19:16:19 +0200 Subject: [PATCH 086/238] Fix not jumping to results loaded by infinite scroll Infinite scroll adds a `hr` tag to split up the sections loaded by it. The vim bindings `j` and `k`, which jump to the next and previous result respectively, search for a **direct** sibling with the class `result`. With the `hr` between results a direct sibling cannot be found. To fix this we remove the restriction of it having to be a direct sibling. --- searx/static/plugins/js/vim_hotkeys.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/searx/static/plugins/js/vim_hotkeys.js b/searx/static/plugins/js/vim_hotkeys.js index 13bd070e..b0f265cb 100644 --- a/searx/static/plugins/js/vim_hotkeys.js +++ b/searx/static/plugins/js/vim_hotkeys.js @@ -125,6 +125,14 @@ $(document).ready(function() { } }); + function nextResult(current, direction) { + var next = current[direction](); + while (!next.is('.result') && next.length !== 0) { + next = next[direction](); + } + return next + } + function highlightResult(which) { return function() { var current = $('.result[data-vim-selected]'); @@ -157,13 +165,13 @@ $(document).ready(function() { } break; case 'down': - next = current.next('.result'); + next = nextResult(current, 'next'); if (next.length === 0) { next = $('.result:first'); } break; case 'up': - next = current.prev('.result'); + next = nextResult(current, 'prev'); if (next.length === 0) { next = $('.result:last'); } From 088752959e5cb635b55cb74e8d9d90e5062e0a7f Mon Sep 17 00:00:00 2001 From: "mathieu.brunot" Date: Tue, 17 Dec 2019 21:06:22 +0100 Subject: [PATCH 087/238] :memo: Opencontainers labels in docker image #1772 Signed-off-by: mathieu.brunot --- Dockerfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b0b5a609..9885fb79 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,4 +76,11 @@ LABEL maintainer="searx " \ org.label-schema.vcs-ref=${LABEL_VCS_REF} \ org.label-schema.vcs-url=${LABEL_VCS_URL} \ org.label-schema.build-date="${LABEL_DATE}" \ - org.label-schema.usage="https://github.com/searx/searx-docker" + org.label-schema.usage="https://github.com/searx/searx-docker" \ + org.opencontainers.image.title="searx" \ + org.opencontainers.image.version="${SEARX_GIT_VERSION}" \ + org.opencontainers.image.url="${LABEL_VCS_URL}" \ + org.opencontainers.image.revision=${LABEL_VCS_REF} \ + org.opencontainers.image.source=${LABEL_VCS_URL} \ + org.opencontainers.image.created="${LABEL_DATE}" \ + org.opencontainers.image.documentation="https://github.com/searx/searx-docker" From f09459b98ae877d7dfd40d85c0edf058c65913d5 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 18 Dec 2019 16:11:05 +0100 Subject: [PATCH 088/238] doc: describe Makefile targets With the aim to simplify development cycles, started with PR #1756 a Makefile based boilerplate was added. This patch adds the missing developer documentation. Signed-off-by: Markus Heiser --- Makefile | 4 + docs/conf.py | 1 + docs/dev/contribution_guide.rst | 15 ++- docs/dev/index.rst | 1 + docs/dev/makefile.rst | 217 ++++++++++++++++++++++++++++++++ docs/dev/quickstart.rst | 26 +++- 6 files changed, 257 insertions(+), 7 deletions(-) create mode 100644 docs/dev/makefile.rst diff --git a/Makefile b/Makefile index b69202ba..f35b86c4 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,9 @@ PYOBJECTS = searx DOC = docs PY_SETUP_EXTRAS ?= \[test\] +PYDIST=./dist/py +PYBUILD=./build/py + include utils/makefile.include include utils/makefile.python include utils/makefile.sphinx @@ -23,6 +26,7 @@ help: @echo ' install - developer install (./local)' @echo ' uninstall - uninstall (./local)' @echo ' gh-pages - build docs & deploy on gh-pages branch' + @echo ' clean - drop builds and environments' @echo '' @$(MAKE) -s -f utils/makefile.include make-help @echo '' diff --git a/docs/conf.py b/docs/conf.py index c0bd246a..64c7a715 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -32,6 +32,7 @@ extlinks['origin'] = (GIT_URL + '/blob/master/%s', 'git://') extlinks['patch'] = (GIT_URL + '/commit/%s', '#') extlinks['search'] = (SEARX_URL + '/%s', '#') extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ') +extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ') extensions = [ 'sphinx.ext.extlinks', diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 064f28e6..6d8d3924 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -79,6 +79,8 @@ Translation currently takes place on :ref:`transifex `. Please, do not update translation files in the repo. +.. _contrib docs: + Documentation ============= @@ -91,7 +93,7 @@ Documentation The documentation is built using Sphinx_. So in order to be able to generate the required files, you have to install it on your system. Much easier, use -Makefile our targets. +our :ref:`makefile`. Here is an example which makes a complete rebuild: @@ -101,6 +103,7 @@ Here is an example which makes a complete rebuild: ... The HTML pages are in dist/docs. +.. _make docs-live: live build ---------- @@ -110,9 +113,10 @@ live build It is recommended to assert a complete rebuild before deploying (use ``docs-clean``). -Live build is like WYSIWYG, If you want to edit the documentation, its -recommended to use. The Makefile target ``docs-live`` builds the docs, opens URL -in your favorite browser and rebuilds every time a reST file has been changed. +Live build is like WYSIWYG. If you want to edit the documentation, its +recommended to use. The Makefile target ``docs-live`` builds the docs, opens +URL in your favorite browser and rebuilds every time a reST file has been +changed. .. code:: sh @@ -123,12 +127,13 @@ in your favorite browser and rebuilds every time a reST file has been changed. ... Start watching changes +.. _deploy on github.io: deploy on github.io ------------------- To deploy documentation at :docs:`github.io <.>` use Makefile target -``gh-pages``, which will builds the documentation, clones searx into a sub +:ref:`make gh-pages`, which will builds the documentation, clones searx into a sub folder ``gh-pages``, cleans it, copies the doc build into and runs all the needed git add, commit and push: diff --git a/docs/dev/index.rst b/docs/dev/index.rst index 8e18066c..93340c1d 100644 --- a/docs/dev/index.rst +++ b/docs/dev/index.rst @@ -11,3 +11,4 @@ Developer documentation search_api plugins translation + makefile diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst new file mode 100644 index 00000000..65cddd3e --- /dev/null +++ b/docs/dev/makefile.rst @@ -0,0 +1,217 @@ +.. _makefile: + +================ +Makefile Targets +================ + +.. sidebar:: build environment + + Before looking deeper at the targets, first read about :ref:`makefile setup` + and :ref:`make pyenv`. + +With the aim to simplify development cycles, started with :pull:`1756` a +``Makefile`` based boilerplate was added. + +The usage is simple, just type ``make {target-name}`` to *build* a target. +Calling the ``help`` target gives a first overview:: + + $ make help + test - run developer tests + docs - build documentation + docs-live - autobuild HTML documentation while editing + run - run developer instance + install - developer install (./local) + uninstall - uninstall (./local) + gh-pages - build docs & deploy on gh-pages branch + clean - drop builds and environments + ... + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: entry + + +.. _makefile setup: + +Setup +===== + +.. _git stash: https://git-scm.com/docs/git-stash + +The main setup is done in the :origin:`Makefile`:: + + export GIT_URL=https://github.com/asciimoo/searx + export SEARX_URL=https://searx.me + export DOCS_URL=https://asciimoo.github.io/searx + +.. sidebar:: fork & upstream + + Commit changes in your (local) branch, fork or whatever, but do not push them + upstream / `git stash`_ is your friend. + +:GIT_URL: Changes this, to point to your searx fork. + +:SEARX_URL: Changes this, to point to your searx instance. + +:DOCS_URL: If you host your own (branded) documentation, change this URL. + +.. _make pyenv: + +Python environment +================== + +.. sidebar:: activate environment + + ``source ./local/py3/bin/activate`` + +With Makefile we do no longer need to build up the virualenv manually (as +described in the :ref:`devquickstart` guide). Jump into your git working tree +and release a ``make pyenv``: + +.. code:: sh + + $ cd ~/searx-clone + $ make pyenv + PYENV usage: source ./local/py3/bin/activate + ... + +With target ``pyenv`` a development environment (aka virtualenv) was build up in +``./local/py3/``. To make a *developer install** of searx (:origin:`setup.py`) +into this environment make target ``install`` + +.. code:: sh + + $ make install + PYENV usage: source ./local/py3/bin/activate + PYENV using virtualenv from ./local/py3 + PYENV install . + +You have never to think about intermediate targets like ``pyenv`` or +``install``, the ``Makefile`` chains them as requisites. Just run your main +target. + +.. sidebar:: drop environment + + To get rid of the existing environment before re-build use :ref:`clean target + ` first. + +If you think, something goes wrong with your ./local environment or you change +the :origin:`setup.py` file (or the requirements listed in +:origin:`requirements-dev.txt` and :origin:`requirements.txt`), you have to call +:ref:`make clean`. + + +.. _make run: + +``make run`` +============ + +To get up a running a developer instance simply call ``make run``. This enables +*debug* option in :origin:`searx/settings.yml`, starts ``./searx/webapp.py`` +instance, disables *debug* option and opens the site (xdg-open): + +.. code:: sh + + $ make run + PYENV usage: source ./local/py3/bin/activate + PYENV install . + ./local/py3/bin/python ./searx/webapp.py + ... + INFO:werkzeug: * Running on http://127.0.0.1:8888/ (Press CTRL+C to quit) + ... + +.. _make clean: + +``make clean`` +============== + +Drop all intermediate files, all builds, but keep sources untouched. Includes +target ``pyclean`` which drops ./local environment. Before calling ``make +clean`` stop all processes using :ref:`make pyenv`. + +.. code:: sh + + $ make clean + CLEAN pyclean + CLEAN clean + +.. _make docs: + +``make docs docs-live docs-clean`` +================================== + +We describe the usage of the ``doc*`` targets in the :ref:`How to contribute / +Documentation ` section. If you want to edit the documentation +read our :ref:`make docs-live` section. If you are working in your own brand, +adjust your :ref:`Makefile setup `. + + +.. _make gh-pages: + +``make gh-pages`` +================= + +To deploy on github.io first adjust your :ref:`Makefile setup `. For any further read :ref:`deploy on github.io`. + +.. _make test: + +``make test`` +============= + +Runs a series of tests: ``test.pep8``, ``test.unit``, ``test.robot`` and does +additional :ref:`pylint checks `. You can run tests selective, +e.g.: + +.. code:: sh + + $ make test.pep8 test.unit + . ./local/py3/bin/activate; ./manage.sh pep8_check + [!] Running pep8 check + . ./local/py3/bin/activate; ./manage.sh unit_tests + [!] Running unit tests + +.. _make pylint: + +``make pylint`` +=============== + +.. _Pylint: https://www.pylint.org/ + +Before commiting its recommend to do some (more) linting. Pylint_ is known as +one of the best source-code, bug and quality checker for the Python programming +language. Pylint_ is not yet a quality gate within our searx project (like +:ref:`test.pep8 ` it is), but Pylint_ can help to improve code +quality anyway. The pylint profile we use at searx project is found in +project's root folder :origin:`.pylintrc`. + +Code quality is a ongoing process. Don't try to fix all messages from Pylint, +run Pylint and check if your changed lines are bringing up new messages. If so, +fix it. By this, code quality gets incremental better and if there comes the +day, the linting is balanced out, we might decide to add Pylint as a quality +gate. + + +``make pybuild`` +================ + +.. _PyPi: https://pypi.org/ +.. _twine: https://twine.readthedocs.io/en/latest/ + +Build Python packages in ``./dist/py``. + +.. code:: sh + + $ make pybuild + ... + BUILD pybuild + running sdist + running egg_info + ... + $ ls ./dist/py/ + searx-0.15.0-py3-none-any.whl searx-0.15.0.tar.gz + +To upload packages to PyPi_, there is also a ``upload-pypi`` target. It needs +twine_ to be installed. Since you are not the owner of :pypi:`searx` you will +never need the latter. diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index a4a37a26..e40772b3 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -4,15 +4,23 @@ Development Quickstart ====================== +.. sidebar:: :ref:`makefile` + + For additional developer purpose there are :ref:`makefile`. + This quickstart guide gets your environment set up with searx. Furthermore, it gives a short introduction to the ``manage.sh`` script. How to setup your development environment ========================================= +.. sidebar:: :ref:`make pyenv ` + + Alternatively use the :ref:`make pyenv`. + First, clone the source code of searx to the desired folder. In this case the source is cloned to ``~/myprojects/searx``. Then create and activate the -searx-ve virtualenv and install the required packages using manage.sh. +searx-ve virtualenv and install the required packages using ``manage.sh``. .. code:: sh @@ -27,6 +35,10 @@ searx-ve virtualenv and install the required packages using manage.sh. How to run tests ================ +.. sidebar:: :ref:`make test.unit ` + + Alternatively use the ``test.pep8``, ``test.unit``, ``test.robot`` targets. + Tests can be run using the ``manage.sh`` script. Following tests and checks are available: @@ -41,7 +53,8 @@ For example unit tests are run with the command below: ./manage.sh unit_tests -For further test options, please consult the help of the ``manage.sh`` script. +For further test options, please consult the help of the ``manage.sh`` script or +read :ref:`make test`. How to compile styles and javascript @@ -97,6 +110,11 @@ After installing grunt, the files can be built using the following command: Tips for debugging/development ============================== +.. sidebar:: :ref:`make run` + + Makefile target ``run`` already enables debug option for your developer + session / see :ref:`make run`. + Turn on debug logging Whether you are working on a new engine or trying to eliminate a bug, it is always a good idea to turn on debug logging. When debug logging is enabled a @@ -104,6 +122,10 @@ Turn on debug logging message. It can be turned on by setting ``debug: False`` to ``debug: True`` in :origin:`settings.yml `. +.. sidebar:: :ref:`make test` + + Alternatively use the :ref:`make test` targets. + Run ``./manage.sh tests`` before creating a PR. Failing build on Travis is common because of PEP8 checks. So a new commit must be created containing these format fixes. This phase can be skipped if From 2b4526916dd8092191baa5b9387e8198e5072b83 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 18 Dec 2019 18:32:42 +0100 Subject: [PATCH 089/238] edoc: -- makefile.rst fix typo and add extlinks['man'] Signed-off-by: Markus Heiser --- docs/conf.py | 1 + docs/dev/makefile.rst | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 64c7a715..9eba67cf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -33,6 +33,7 @@ extlinks['patch'] = (GIT_URL + '/commit/%s', '#') extlinks['search'] = (SEARX_URL + '/%s', '#') extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ') extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ') +extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '') extensions = [ 'sphinx.ext.extlinks', diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst index 65cddd3e..00825623 100644 --- a/docs/dev/makefile.rst +++ b/docs/dev/makefile.rst @@ -4,13 +4,16 @@ Makefile Targets ================ +.. _gnu-make: https://www.gnu.org/software/make/manual/make.html#Introduction + .. sidebar:: build environment Before looking deeper at the targets, first read about :ref:`makefile setup` and :ref:`make pyenv`. With the aim to simplify development cycles, started with :pull:`1756` a -``Makefile`` based boilerplate was added. +``Makefile`` based boilerplate was added. If you are not familiar with +Makefiles, we recommend to read gnu-make_ introduction. The usage is simple, just type ``make {target-name}`` to *build* a target. Calling the ``help`` target gives a first overview:: @@ -77,7 +80,7 @@ and release a ``make pyenv``: ... With target ``pyenv`` a development environment (aka virtualenv) was build up in -``./local/py3/``. To make a *developer install** of searx (:origin:`setup.py`) +``./local/py3/``. To make a *developer install* of searx (:origin:`setup.py`) into this environment make target ``install`` .. code:: sh @@ -108,8 +111,9 @@ the :origin:`setup.py` file (or the requirements listed in ============ To get up a running a developer instance simply call ``make run``. This enables -*debug* option in :origin:`searx/settings.yml`, starts ``./searx/webapp.py`` -instance, disables *debug* option and opens the site (xdg-open): +*debug* option in :origin:`searx/settings.yml`, starts a ``./searx/webapp.py`` +instance, disables *debug* option again and opens the URL in your favorite WEB +browser (:man:`xdg-open`): .. code:: sh From bee19a76f7dc8b86af3ef342acd3f4db72f51543 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 19 Dec 2019 17:05:50 +0100 Subject: [PATCH 090/238] doc: add reST primer (inital / WIP) preview: https://return42.github.io/searx/dev/reST.html includes: - :class: rst-example // admonitions with (rendered) reST markup example - extlinks to docutils Signed-off-by: Markus Heiser --- docs/_themes/searx/static/searx.css | 42 +++ docs/conf.py | 11 +- docs/dev/index.rst | 1 + docs/dev/makefile.rst | 2 +- docs/dev/reST.rst | 491 ++++++++++++++++++++++++++++ 5 files changed, 544 insertions(+), 3 deletions(-) create mode 100644 docs/dev/reST.rst diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index 10f5b4ed..ee084d49 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -28,3 +28,45 @@ p.sidebar-title, .sidebar p { list-style-type: disclosure-closed; } + +/* admonitions with (rendered) reST markup examples (:class: rst-example) + * + * .. admonition:: title of the example + * :class: rst-example + * .... +/* navigation menu: use sans font and select light/dark colors for better +* contrast. +*/ + +div.rst-example { + padding-left: 12px; + padding-right: 12px; + background-color: white; + transform: scale(0.9); + transition: transform 1s; +} + +/* div.rst-example > .admonition-title { */ +/* background-color: inherit; */ +/* color: inherit; */ +/* } */ + +/* div.rst-example > .admonition-title:after{ */ +/* font-family: inherit; */ +/* font-style: italic; */ +/* content: " // hover mouse over .."; */ +/* } */ + +@media screen { + div.rst-example:hover { + transform: scale(1); + background-color: inherit; + padding-left: inherit; + padding-right: inherit; + border-left: inherit; + } + + div.rst-example:hover > .admonition-title { + display: none; + } +} diff --git a/docs/conf.py b/docs/conf.py index 9eba67cf..33954cbd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -14,6 +14,7 @@ project = u'searx' copyright = u'2015-2019, Adam Tauber, Noémi Ványi' author = u'Adam Tauber' release, version = VERSION_STRING, VERSION_STRING +highlight_language = 'none' # General -------------------------------------------------------------- @@ -34,6 +35,12 @@ extlinks['search'] = (SEARX_URL + '/%s', '#') extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ') extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ') extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '') +extlinks['duref'] = ( + 'http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#%s', '') +extlinks['durole'] = ( + 'http://docutils.sourceforge.net/docs/ref/rst/roles.html#%s', '') +extlinks['dudir'] = ( + 'http://docutils.sourceforge.net/docs/ref/rst/directives.html#%s', '') extensions = [ 'sphinx.ext.extlinks', @@ -46,9 +53,9 @@ extensions = [ intersphinx_mapping = { "python": ("https://docs.python.org/3/", None), - # "flask": ("https://flask.palletsprojects.com/", None), + "flask": ("https://flask.palletsprojects.com/", None), # "werkzeug": ("https://werkzeug.palletsprojects.com/", None), - # "jinja": ("https://jinja.palletsprojects.com/", None), + "jinja": ("https://jinja.palletsprojects.com/", None), } issues_github_path = "asciimoo/searx" diff --git a/docs/dev/index.rst b/docs/dev/index.rst index 93340c1d..cb913a82 100644 --- a/docs/dev/index.rst +++ b/docs/dev/index.rst @@ -12,3 +12,4 @@ Developer documentation plugins translation makefile + reST diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst index 00825623..f5957001 100644 --- a/docs/dev/makefile.rst +++ b/docs/dev/makefile.rst @@ -81,7 +81,7 @@ and release a ``make pyenv``: With target ``pyenv`` a development environment (aka virtualenv) was build up in ``./local/py3/``. To make a *developer install* of searx (:origin:`setup.py`) -into this environment make target ``install`` +into this environment, use make target ``install``: .. code:: sh diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst new file mode 100644 index 00000000..c8482e77 --- /dev/null +++ b/docs/dev/reST.rst @@ -0,0 +1,491 @@ +.. _reST primer: + +=========== +reST primer +=========== + +.. sidebar:: KISS_ and readability_ + + Instead of defining more and more roles, we at searx encourage our + contributors to follow principles like KISS_ and readability_. + +We at searx are using reStructuredText (aka reST_) markup for all kind of +documentation, with the builders from the Sphinx_ project a HTML output is +generated and deployed at :docs:`github.io <.>`. + +The sources of Searx's documentation are located at :origin:`docs`. Run +:ref:`make docs-live ` to build HTML while editing. + +------ + +.. contents:: Contents + :depth: 3 + :local: + :backlinks: entry + +Sphinx_ and reST_ have their place in the python ecosystem. Over that reST is +used in popular projects, e.g the Linux kernel documentation `[kernel doc]`_. + +.. _[kernel doc]: https://www.kernel.org/doc/html/latest/doc-guide/sphinx.html + +.. sidebar:: Content matters + + The readability_ of the reST sources has its value, therefore we recommend to + make sparse usage of reST markup / .. content matters! + +**reST** is a plaintext markup language, its markup is *mostly* intuitive and +you will not need to learn much to produce well formed articles with. I use the +word *mostly*: like everything in live, reST has its advantages and +disadvantages, some markups feel a bit grumpy (especially if you are used to +other plaintext markups). + +Soft skills +=========== + +Before going any deeper into the markup let's face on some **soft skills** a +trained author brings with, to reach a well feedback from readers: + +- Documentation is dedicated to an audience and answers questions from the + audience point of view. +- Don't detail things which are general knowledge from the audience point of + view. +- Limit the subject, use cross links for any further reading. + +To be more concrete what a *point of view* means. In the (:origin:`docs`) +folder we have three sections (and the *blog* folder), each dedicate to a +different group of audience. + +.. sidebar:: Further reading + + - Sphinx-Primer_ + - `Sphinx markup constructs`_ + - reST_, docutils_, `docutils FAQ`_ + - Sphinx_, `sphinx-doc FAQ`_ + - `sphinx config`_, doctree_ + - `sphinx cross references`_ + - intersphinx_ + - `Sphinx's autodoc`_ + - `Sphinx's Python domain`_, `Sphinx's C domain`_ + +User's POV: :origin:`docs/user` + A typical user knows about search engines and might have heard about + meta crawlers and privacy. + +Admin's POV: :origin:`docs/admin` + A typical Admin knows about setting up services on a linux system, but he does + not know all the pros and cons of a searx setup. + +Developer's POV: :origin:`docs/dev` + Depending on the readability_ of code, a typical developer is able to read and + understand source code. Describe what a item aims to do (e.g. a function), + describe chronological order matters, describe it. Name the *out-of-limits + condition* and all the side effects a external developer will not know. + +.. _reST inline markup: + +Basic inline markup +=================== + +``*italics*`` -- *italics* + one asterisk for emphasis + +``**boldface**`` -- **boldface** + two asterisks for strong emphasis and + +````foo()```` -- ``foo()`` + backquotes for code samples and literals. + +``\*foo is a pointer`` -- \*foo is a pointer + If asterisks or backquotes appear in running text and could be confused with + inline markup delimiters, they have to be escaped with a backslash (``\*foo is + a pointer``). + + +Roles +===== + +A *custom interpreted text role* (:duref:`ref `) is an inline piece of +explicit markup. It signifies that that the enclosed text should be interpreted +in a specific way. The general syntax is ``:rolename:`content```. + +Docutils supports the following roles: + +* :durole:`emphasis` -- equivalent of ``*emphasis*`` +* :durole:`strong` -- equivalent of ``**strong**`` +* :durole:`literal` -- equivalent of ````literal```` +* :durole:`subscript` -- subscript text +* :durole:`superscript` -- superscript text +* :durole:`title-reference` -- for titles of books, periodicals, and other + materials + +Refer to `Sphinx Roles`_ for roles added by Sphinx. + + +Anchors & Links +=============== + +.. _reST anchor: + +Anchors +------- + +.. _ref role: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref + +To refer a point in the documentation a anchor is needed. The :ref:`reST +template ` shows an example where a chapter titled *"Chapters"* +gets an anchor named ``chapter title``. Another example from *this* document, +where the anchor named ``reST anchor``: + +.. code:: reST + + .. _reST anchor: + + Anchors + ------- + + To refer a point in the documentation a anchor is needed ... + +To refer anchors use the `ref role`_ markup: + +.. code:: reST + + Visit chapter :ref:`reST anchor`. + Or set hyperlink text manualy :ref:`foo bar `. + +.. admonition:: ``:ref:`` role + :class: rst-example + + Visist chapter :ref:`reST anchor` + Or set hyperlink text manualy :ref:`foo bar `. + +.. _reST ordinary ref: + +link ordinary URL +----------------- + +If you need to reference external URLs use *named* hyperlinks to maintain +readability of reST sources. Here is a example taken from *this* article: + +.. code:: reST + + .. _Sphinx Field Lists: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/field-lists.html + + With the *named* hyperlink `Sphinx Field Lists`_, the raw text is much more + readable. + + And this shows the alternative (less readable) hyperlink markup `Sphinx Field + Lists + `__. + +.. admonition:: Named hyperlink + :class: rst-example + + With the *named* hyperlink `Sphinx Field Lists`_, the raw text is much more + readable. + + And this shows the alternative (less readable) hyperlink markup `Sphinx Field + Lists + `__. + + +.. _reST smart ref: + +smart references +---------------- + +With the power of sphinx.ext.extlinks_ and intersphinx_ referencing external +content becomes smart. To refer ... + +sphinx.ext.extlinks_: + +:project's wiki article: :wiki:`Searx-instances` +:to docs public URL: :docs:`dev/reST.html` +:files & folders from origin: :origin:`docs/dev/reST.rst` +:a pull request: :pull:`1756` +:a patch: :patch:`af2cae6` +:a PyPi package: :pypi:`searx` +:a manual page man: :man:`bash` + +.. code:: reST + + :project's wiki article: :wiki:`Searx-instances` + :to docs public URL: :docs:`dev/reST.html` + :files & folders from origin: :origin:`docs/dev/reST.rst` + :a pull request: :pull:`1756` + :a patch: :patch:`af2cae6` + :a PyPi package: :pypi:`searx` + :a manual page man: :man:`bash` + + +intersphinx_: + + :external anchor: :ref:`python:and` + :external doc anchor: :doc:`jinja:templates` + :python code object: :py:obj:`datetime.datetime` + :flask code object: webapp is a :py:obj:`flask.Flask` app + +.. code:: reST + + :external anchor: :ref:`python:and` + :external doc anchor: :doc:`jinja:templates` + :python code object: :py:obj:`datetime.datetime` + :flask code object: webapp is a :py:obj:`flask.Flask` app + + +Intersphinx is configured in :origin:`docs/conf.py`: + +.. code:: python + + intersphinx_mapping = { + "python": ("https://docs.python.org/3/", None), + "flask": ("https://flask.palletsprojects.com/", None), + "jinja": ("https://jinja.palletsprojects.com/", None), + } + + +To list all anchors of the inventory (e.g. ``python``) use: + +.. code:: sh + + $ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv + + +.. _reST basic structure: + +Basic article structure +======================= + +The basic structure of an article makes use of heading adornments to markup +chapter, sections and subsections. + +#. ``=`` with overline for document title +#. ``=`` for chapters +#. ``-`` for sections +#. ``~`` for subsections + +.. _reST template: + +.. admonition:: reST template + :class: rst-example + + .. code:: reST + + .. _document title: + + ============== + Document title + ============== + + Lorem ipsum dolor sit amet, consectetur adipisici elit .. + Further read :ref:`chapter title`. + + .. _chapter title: + + Chapters + ======== + + Ut enim ad minim veniam, quis nostrud exercitation ullamco + laboris nisi ut aliquid ex ea commodi consequat ... + + Section + ------- + + lorem .. + + Subsection + ~~~~~~~~~~ + + lorem .. + +.. _reST lists: + +List markups +============ + +Bullet list +----------- + +List markup (:duref:`ref `) is simple: + +.. code:: reST + + - This is a bulleted list. + + 1. Nested lists are possible, but be aware that they must be separated from + the parent list items by blank line + 2. Second item of nested list + + - It has two items, the second + item uses two lines. + + #. This is a numbered list. + #. It has two items too. + +.. admonition:: bullet list + :class: rst-example + + - This is a bulleted list. + + 1. Nested lists are possible, but be aware that they must be separated from + the parent list items by blank line + 2. Second item of nested list + + - It has two items, the second + item uses two lines. + + #. This is a numbered list. + #. It has two items too. + + +Definition list +--------------- + +.. sidebar:: definition term + + Note that the term cannot have more than one line of text. + +Definition lists (:duref:`ref `) are created as follows: + +.. code:: reST + + term (up to a line of text) + Definition of the term, which must be indented + + and can even consist of multiple paragraphs + + next term + Description. + +.. admonition:: definition list + :class: rst-example + + term (up to a line of text) + Definition of the term, which must be indented + + and can even consist of multiple paragraphs + + next term + Description. + + +Quoted paragraphs +----------------- + +Quoted paragraphs (:duref:`ref `) are created by just indenting +them more than the surrounding paragraphs. Line blocks (:duref:`ref +`) are a way of preserving line breaks: + +.. code:: reST + + normal paragraph ... + lorem ipsum. + + Quoted paragraph ... + lorem ipsum. + + | These lines are + | broken exactly like in + | the source file. + + +.. admonition:: Quoted paragraph and line block + :class: rst-example + + normal paragraph ... + lorem ipsum. + + Quoted paragraph ... + lorem ipsum. + + | These lines are + | broken exactly like in + | the source file. + + +.. _reST field list: + +Field Lists +----------- + +.. _Sphinx Field Lists: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/field-lists.html + +.. sidebar:: bibliographic fields + + First lines fields are bibliographic fields, see `Sphinx Field Lists`_. + +Field lists are used as part of an extension syntax, such as options for +directives, or database-like records meant for further processing. Field lists +are mappings from field names to field bodies. They marked up like this: + +.. code:: reST + + :fieldname: Field content + :foo: first paragraph in field foo + + second paragraph in field foo + + :bar: Field content + +.. admonition:: Field List + :class: rst-example + + :fieldname: Field content + :foo: first paragraph in field foo + + second paragraph in field foo + + :bar: Field content + + +They are commonly used in Python documentation: + +.. code:: python + + def my_function(my_arg, my_other_arg): + """A function just for me. + + :param my_arg: The first of my arguments. + :param my_other_arg: The second of my arguments. + + :returns: A message (just for me, of course). + """ + +Further list blocks +------------------- + +- field lists (:duref:`ref `, with caveats noted in + :ref:`reST field list`) +- option lists (:duref:`ref `) +- quoted literal blocks (:duref:`ref `) +- doctest blocks (:duref:`ref `) + + +.. _KISS: https://en.wikipedia.org/wiki/KISS_principle +.. _readability: https://docs.python-guide.org/writing/style/ +.. _Sphinx-Primer: + http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _reST: https://docutils.sourceforge.io/rst.html +.. _Sphinx Roles: + https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html +.. _Sphinx: http://www.sphinx-doc.org +.. _`sphinx-doc FAQ`: http://www.sphinx-doc.org/en/stable/faq.html +.. _Sphinx markup constructs: + http://www.sphinx-doc.org/en/stable/markup/index.html +.. _`sphinx cross references`: + http://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-arbitrary-locations +.. _sphinx.ext.extlinks: + https://www.sphinx-doc.org/en/master/usage/extensions/extlinks.html +.. _intersphinx: http://www.sphinx-doc.org/en/stable/ext/intersphinx.html +.. _sphinx config: http://www.sphinx-doc.org/en/stable/config.html +.. _Sphinx's autodoc: http://www.sphinx-doc.org/en/stable/ext/autodoc.html +.. _Sphinx's Python domain: + http://www.sphinx-doc.org/en/stable/domains.html#the-python-domain +.. _Sphinx's C domain: + http://www.sphinx-doc.org/en/stable/domains.html#cross-referencing-c-constructs +.. _doctree: + http://www.sphinx-doc.org/en/master/extdev/tutorial.html?highlight=doctree#build-phases +.. _docutils: http://docutils.sourceforge.net/docs/index.html +.. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html From e1566e68aa9e18e60a86d0eea8772a3673cb3c7b Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 19 Dec 2019 23:36:53 +0100 Subject: [PATCH 091/238] doc: add content to reST primer (WIP) // linuxdoc Signed-off-by: Markus Heiser --- docs/_themes/searx/static/searx.css | 8 + docs/conf.py | 11 + docs/dev/hello.dot | 3 + docs/dev/reST.rst | 311 ++++++++++++++++++++-------- docs/dev/svg_image.svg | 10 + requirements-dev.txt | 1 + 6 files changed, 254 insertions(+), 90 deletions(-) create mode 100644 docs/dev/hello.dot create mode 100644 docs/dev/svg_image.svg diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index ee084d49..747cb050 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -29,6 +29,14 @@ p.sidebar-title, .sidebar p { } +div.admonition, +div.topic { + background-color: #fafafa; + margin: 8px 0px; + padding: 1em; + border: none; +} + /* admonitions with (rendered) reST markup examples (:class: rst-example) * * .. admonition:: title of the example diff --git a/docs/conf.py b/docs/conf.py index 33954cbd..b960621d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -20,6 +20,7 @@ highlight_language = 'none' master_doc = "index" source_suffix = '.rst' +numfig = True # usage:: lorem :patch:`f373169` ipsum extlinks = {} @@ -35,6 +36,8 @@ extlinks['search'] = (SEARX_URL + '/%s', '#') extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ') extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ') extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '') +#extlinks['role'] = ( +# 'https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-%s', '') extlinks['duref'] = ( 'http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#%s', '') extlinks['durole'] = ( @@ -49,6 +52,12 @@ extensions = [ "sphinx.ext.intersphinx", "pallets_sphinx_themes", "sphinx_issues", # https://github.com/sloria/sphinx-issues/blob/master/README.rst + 'linuxdoc.rstFlatTable', # Implementation of the 'flat-table' reST-directive. + 'linuxdoc.rstKernelDoc', # Implementation of the 'kernel-doc' reST-directive. + 'linuxdoc.kernel_include', # Implementation of the 'kernel-include' reST-directive. + 'linuxdoc.manKernelDoc', # Implementation of the 'kernel-doc-man' builder + 'linuxdoc.cdomain', # Replacement for the sphinx c-domain. + 'linuxdoc.kfigure', # Sphinx extension which implements scalable image handling. ] intersphinx_mapping = { @@ -56,6 +65,8 @@ intersphinx_mapping = { "flask": ("https://flask.palletsprojects.com/", None), # "werkzeug": ("https://werkzeug.palletsprojects.com/", None), "jinja": ("https://jinja.palletsprojects.com/", None), + "linuxdoc" : ("https://return42.github.io/linuxdoc/", None), + "sphinx" : ("https://www.sphinx-doc.org/en/master/", None), } issues_github_path = "asciimoo/searx" diff --git a/docs/dev/hello.dot b/docs/dev/hello.dot new file mode 100644 index 00000000..504621df --- /dev/null +++ b/docs/dev/hello.dot @@ -0,0 +1,3 @@ +graph G { + Hello -- World +} diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index c8482e77..5522f9e1 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -18,11 +18,26 @@ The sources of Searx's documentation are located at :origin:`docs`. Run ------ +.. sidebar:: Further reading + + - Sphinx-Primer_ + - `Sphinx markup constructs`_ + - reST_, docutils_, `docutils FAQ`_ + - Sphinx_, `sphinx-doc FAQ`_ + - `sphinx config`_, doctree_ + - `sphinx cross references`_ + - linuxdoc_ + - intersphinx_ + - `Sphinx's autodoc`_ + - `Sphinx's Python domain`_, `Sphinx's C domain`_ + .. contents:: Contents :depth: 3 :local: :backlinks: entry +------ + Sphinx_ and reST_ have their place in the python ecosystem. Over that reST is used in popular projects, e.g the Linux kernel documentation `[kernel doc]`_. @@ -55,18 +70,6 @@ To be more concrete what a *point of view* means. In the (:origin:`docs`) folder we have three sections (and the *blog* folder), each dedicate to a different group of audience. -.. sidebar:: Further reading - - - Sphinx-Primer_ - - `Sphinx markup constructs`_ - - reST_, docutils_, `docutils FAQ`_ - - Sphinx_, `sphinx-doc FAQ`_ - - `sphinx config`_, doctree_ - - `sphinx cross references`_ - - intersphinx_ - - `Sphinx's autodoc`_ - - `Sphinx's Python domain`_, `Sphinx's C domain`_ - User's POV: :origin:`docs/user` A typical user knows about search engines and might have heard about meta crawlers and privacy. @@ -100,25 +103,52 @@ Basic inline markup inline markup delimiters, they have to be escaped with a backslash (``\*foo is a pointer``). +.. _reST basic structure: -Roles -===== +Basic article structure +======================= -A *custom interpreted text role* (:duref:`ref `) is an inline piece of -explicit markup. It signifies that that the enclosed text should be interpreted -in a specific way. The general syntax is ``:rolename:`content```. +The basic structure of an article makes use of heading adornments to markup +chapter, sections and subsections. -Docutils supports the following roles: +#. ``=`` with overline for document title +#. ``=`` for chapters +#. ``-`` for sections +#. ``~`` for subsections -* :durole:`emphasis` -- equivalent of ``*emphasis*`` -* :durole:`strong` -- equivalent of ``**strong**`` -* :durole:`literal` -- equivalent of ````literal```` -* :durole:`subscript` -- subscript text -* :durole:`superscript` -- superscript text -* :durole:`title-reference` -- for titles of books, periodicals, and other - materials +.. _reST template: -Refer to `Sphinx Roles`_ for roles added by Sphinx. +.. admonition:: reST template + :class: rst-example + + .. code:: reST + + .. _document title: + + ============== + Document title + ============== + + Lorem ipsum dolor sit amet, consectetur adipisici elit .. + Further read :ref:`chapter title`. + + .. _chapter title: + + Chapters + ======== + + Ut enim ad minim veniam, quis nostrud exercitation ullamco + laboris nisi ut aliquid ex ea commodi consequat ... + + Section + ------- + + lorem .. + + Subsection + ~~~~~~~~~~ + + lorem .. Anchors & Links @@ -196,42 +226,29 @@ smart references ---------------- With the power of sphinx.ext.extlinks_ and intersphinx_ referencing external -content becomes smart. To refer ... +content becomes smart. -sphinx.ext.extlinks_: - -:project's wiki article: :wiki:`Searx-instances` -:to docs public URL: :docs:`dev/reST.html` -:files & folders from origin: :origin:`docs/dev/reST.rst` -:a pull request: :pull:`1756` -:a patch: :patch:`af2cae6` -:a PyPi package: :pypi:`searx` -:a manual page man: :man:`bash` - -.. code:: reST - - :project's wiki article: :wiki:`Searx-instances` - :to docs public URL: :docs:`dev/reST.html` - :files & folders from origin: :origin:`docs/dev/reST.rst` - :a pull request: :pull:`1756` - :a patch: :patch:`af2cae6` - :a PyPi package: :pypi:`searx` - :a manual page man: :man:`bash` - - -intersphinx_: - - :external anchor: :ref:`python:and` - :external doc anchor: :doc:`jinja:templates` - :python code object: :py:obj:`datetime.datetime` - :flask code object: webapp is a :py:obj:`flask.Flask` app - -.. code:: reST - - :external anchor: :ref:`python:and` - :external doc anchor: :doc:`jinja:templates` - :python code object: :py:obj:`datetime.datetime` - :flask code object: webapp is a :py:obj:`flask.Flask` app +========================== ================================== ==================================== +refer ... rendered example markup +========================== ================================== ==================================== +:rst:role:`rfc` :rfc:`822` ``:rfc:`822``` +:rst:role:`pep` :pep:`8` ``:pep:`8``` +sphinx.ext.extlinks_ +-------------------------------------------------------------------------------------------------- +project's wiki article :wiki:`Searx-instances` ``:wiki:`Searx-instances``` +to docs public URL :docs:`dev/reST.html` ``:docs:`dev/reST.html``` +files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst``` +pull request :pull:`1756` ``:pull:`1756``` +patch :patch:`af2cae6` ``:patch:`af2cae6``` +PyPi package :pypi:`searx` ``:pypi:`searx``` +manual page man :man:`bash` ``:man:`bash``` +intersphinx_ +-------------------------------------------------------------------------------------------------- +external anchor :ref:`python:and` ``:ref:`python:and``` +external doc anchor :doc:`jinja:templates` ``:doc:`jinja:templates``` +python code object :py:obj:`datetime.datetime` ``:py:obj:`datetime.datetime``` +flask code object :py:obj:`flask.Flask` ``:py:obj:`flask.Flask``` +========================== ================================== ==================================== Intersphinx is configured in :origin:`docs/conf.py`: @@ -242,6 +259,8 @@ Intersphinx is configured in :origin:`docs/conf.py`: "python": ("https://docs.python.org/3/", None), "flask": ("https://flask.palletsprojects.com/", None), "jinja": ("https://jinja.palletsprojects.com/", None), + "linuxdoc" : ("https://return42.github.io/linuxdoc/", None), + "sphinx" : ("https://www.sphinx-doc.org/en/master/", None), } @@ -252,52 +271,163 @@ To list all anchors of the inventory (e.g. ``python``) use: $ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv -.. _reST basic structure: +Roles +===== -Basic article structure -======================= +A *custom interpreted text role* (:duref:`ref `) is an inline piece of +explicit markup. It signifies that that the enclosed text should be interpreted +in a specific way. The general syntax is ``:rolename:`content```. -The basic structure of an article makes use of heading adornments to markup -chapter, sections and subsections. +========================== ================================== ==================================== +role rendered example markup +========================== ================================== ==================================== +:rst:role:`guilabel` :guilabel:`&Cancel` ``:guilabel:`&Cancel``` +:rst:role:`kbd` :kbd:`C-x C-f` ``:kbd:`C-x C-f``` +:rst:role:`menuselection` :menuselection:`Open --> File` ``:menuselection:`Open --> File``` +:rst:role:`download` :download:`this file ` ``:download:`this file ``` +:rst:role:`math` :math:`a^2 + b^2 = c^2` ``:math:`a^2 + b^2 = c^2``` +:rst:role:`ref` :ref:`svg image example` ``:ref:`svg image example``` +:rst:role:`command` :command:`ls -la` ``:command:`ls -la``` +:durole:`emphasis` :emphasis:`italic` ``:emphasis:`italic``` +:durole:`strong` :strong:`bold` ``:strong:`bold``` +:durole:`literal` :literal:`foo()` ``:literal:`foo()``` +:durole:`subscript` H\ :sub:`2`\ O ``H\ :sub:`2`\ O`` +:durole:`superscript` E = mc\ :sup:`2` ``E = mc\ :sup:`2``` +:durole:`title-reference` :title:`Time` ``:title:`Time``` +========================== ================================== ==================================== -#. ``=`` with overline for document title -#. ``=`` for chapters -#. ``-`` for sections -#. ``~`` for subsections +Refer to `Sphinx Roles`_ for roles added by Sphinx. -.. _reST template: -.. admonition:: reST template +Figures & Images +================ + +Searx's sphinx setup includes: :ref:`linuxdoc:kfigure`. Scalable here means; +scalable in sense of the build process. Normally in absence of a converter +tool, the build process will break. From the authors POV it’s annoying to care +about the build process when handling with images, especially since he has no +access to the build process. With :ref:`linuxdoc:kfigure` the build process +continues and scales output quality in dependence of installed image processors. + +If you want to add an image, you should use the ``kernel-figure`` and +``kernel-image`` directives. E.g. to insert a figure with a scalable image +format use SVG (:ref:`svg_image_example`): + +.. code:: reST + + .. _svg image example: + + .. kernel-figure:: svg_image.svg + :alt: simple SVG image + + SVG image example + +.. _svg image example: + +.. kernel-figure:: svg_image.svg + :alt: simple SVG image + + SVG image example + +DOT files (aka Graphviz) +------------------------ + +The kernel figure (and image) directive support **DOT** formated files, see + +* DOT: http://graphviz.org/pdf/dotguide.pdf +* Graphviz: http://www.graphviz.org/content/dot-language + +A simple example (:ref:`hello_dot_file`): + +.. code:: reST + + .. kernel-figure:: hello.dot + :alt: hello world + + DOT's hello world example + +.. admonition:: hello.dot :class: rst-example - .. code:: reST + .. kernel-figure:: hello.dot + :alt: hello world - .. _document title: + DOT's hello world example - ============== - Document title - ============== +``kernel-render`` DOT +--------------------- - Lorem ipsum dolor sit amet, consectetur adipisici elit .. - Further read :ref:`chapter title`. +Embed *render* markups (or languages) like Graphviz's **DOT** is provided by the +``kernel-render`` directives. - .. _chapter title: +.. code:: reST - Chapters - ======== + .. kernel-render:: DOT markup + :alt: foobar digraph + :caption: Embedded **DOT** (Graphviz) code - Ut enim ad minim veniam, quis nostrud exercitation ullamco - laboris nisi ut aliquid ex ea commodi consequat ... + digraph foo { + "bar" -> "baz"; + } - Section - ------- +How this will be rendered depends on the installed tools. If Graphviz is +installed, you will see an vector image. If not the raw markup is inserted as +*literal-block* (:ref:`hello_dot_render`). - lorem .. +.. admonition:: DOT markup + :class: rst-example - Subsection - ~~~~~~~~~~ + .. _hello_dot_render: + + .. kernel-render:: DOT + :alt: foobar digraph + :caption: Embedded **DOT** (Graphviz) code + + digraph foo { + "bar" -> "baz"; + } + +The *render* directive has all the options known from the *figure* directive, +plus option ``caption``. If ``caption`` has a value, a *figure* node is +inserted. If not, a *image* node is inserted. A ``caption`` is also needed, if +you want to refer it (:ref:`hello_svg_render`). + + +``kernel-render`` SVG +--------------------- + +.. code:: reST + + .. kernel-render:: SVG markup + :caption: Embedded **SVG** markup + :alt: so-nw-arrow +.. + + .. code:: xml + + + + + + + +.. admonition:: SVG markup + :class: rst-example + + .. _hello_svg_render: + + .. kernel-render:: SVG + :caption: Embedded **SVG** markup + :alt: so-nw-arrow + + + + + + - lorem .. .. _reST lists: @@ -489,3 +619,4 @@ Further list blocks http://www.sphinx-doc.org/en/master/extdev/tutorial.html?highlight=doctree#build-phases .. _docutils: http://docutils.sourceforge.net/docs/index.html .. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html +.. _linuxdoc: https://return42.github.io/linuxdoc diff --git a/docs/dev/svg_image.svg b/docs/dev/svg_image.svg new file mode 100644 index 00000000..5405f85b --- /dev/null +++ b/docs/dev/svg_image.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/requirements-dev.txt b/requirements-dev.txt index 0bdf2046..54643908 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,3 +11,4 @@ transifex-client==0.12.2 unittest2==1.1.0 zope.testrunner==4.5.1 selenium==3.141.0 +linuxdoc @ git+http://github.com/return42/linuxdoc.git From b82f61f7044665b900b0d8f556cbe207f3133837 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 20 Dec 2019 11:01:41 +0100 Subject: [PATCH 092/238] doc: reST primer -- describe admonitions & customize their CSS Signed-off-by: Markus Heiser --- docs/_themes/searx/static/searx.css | 73 +++++++++++++++++------------ docs/dev/reST.rst | 72 ++++++++++++++++++++++++++-- 2 files changed, 110 insertions(+), 35 deletions(-) diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index 747cb050..10cfc413 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -28,53 +28,64 @@ p.sidebar-title, .sidebar p { list-style-type: disclosure-closed; } +/* admonitions +*/ -div.admonition, -div.topic { +div.admonition, div.topic { background-color: #fafafa; margin: 8px 0px; padding: 1em; - border: none; + border-radius: 3pt 0 0 3pt; + border-top: none; + border-right: none; + border-bottom: none; + border-left: 5pt solid #ccc; } +p.admonition-title:after { + content: none; +} + +.admonition.hint { border-color: #416dc0b0; } +.admonition.note { border-color: #6c856cb0; } +.admonition.tip { border-color: #85c5c2b0; } +.admonition.attention { border-color: #ecec97b0; } +.admonition.caution { border-color: #a6c677b0; } +.admonition.danger { border-color: #d46262b0; } +.admonition.important { border-color: #dfa3a3b0; } +.admonition.error { border-color: red; } +.admonition.warning { border-color: darkred; } + +.admonition.admonition-generic-admonition-title { + border-color: #416dc0b0; +} + + /* admonitions with (rendered) reST markup examples (:class: rst-example) * * .. admonition:: title of the example * :class: rst-example * .... -/* navigation menu: use sans font and select light/dark colors for better -* contrast. */ div.rst-example { - padding-left: 12px; - padding-right: 12px; - background-color: white; - transform: scale(0.9); - transition: transform 1s; + padding-left: 12px; + padding-right: 12px; + background-color: inherit; + transform: scale(0.9); + transition: transform 1s; + border-left: none; } -/* div.rst-example > .admonition-title { */ -/* background-color: inherit; */ -/* color: inherit; */ -/* } */ - -/* div.rst-example > .admonition-title:after{ */ -/* font-family: inherit; */ -/* font-style: italic; */ -/* content: " // hover mouse over .."; */ -/* } */ - @media screen { - div.rst-example:hover { - transform: scale(1); - background-color: inherit; - padding-left: inherit; - padding-right: inherit; - border-left: inherit; - } + div.rst-example:hover { + transform: scale(1); + padding-left: inherit; + padding-right: inherit; + border-left: inherit; + } - div.rst-example:hover > .admonition-title { - display: none; - } + div.rst-example:hover > .admonition-title { + display: none; + } } diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 5522f9e1..69e4a930 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -16,8 +16,6 @@ generated and deployed at :docs:`github.io <.>`. The sources of Searx's documentation are located at :origin:`docs`. Run :ref:`make docs-live ` to build HTML while editing. ------- - .. sidebar:: Further reading - Sphinx-Primer_ @@ -36,8 +34,6 @@ The sources of Searx's documentation are located at :origin:`docs`. Run :local: :backlinks: entry ------- - Sphinx_ and reST_ have their place in the python ecosystem. Over that reST is used in popular projects, e.g the Linux kernel documentation `[kernel doc]`_. @@ -593,6 +589,74 @@ Further list blocks - doctest blocks (:duref:`ref `) +Admonitions +=========== + +Admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, +:dudir:`caution`, :dudir:`danger`, :dudir:`error`, , :dudir:`important`, , +:dudir:`warning` and the generic :dudir:`admonition `. + +.. code:: reST + + .. admonition:: generic admonition title + + lorem ipsum .. + + .. hint:: + + lorem ipsum .. + + .. note:: + + lorem ipsum .. + + .. warning:: + + lorem ipsum .. + + +.. admonition:: generic admonition title + + lorem ipsum .. + +.. hint:: + + lorem ipsum .. + +.. note:: + + lorem ipsum .. + +.. tip:: + + lorem ipsum .. + +.. attention:: + + lorem ipsum .. + +.. caution:: + + lorem ipsum .. + +.. danger:: + + lorem ipsum .. + +.. important:: + + lorem ipsum .. + +.. error:: + + lorem ipsum .. + +.. warning:: + + lorem ipsum .. + + + .. _KISS: https://en.wikipedia.org/wiki/KISS_principle .. _readability: https://docs.python-guide.org/writing/style/ .. _Sphinx-Primer: From ae7cb5937e597dd59b652333f5e3693efef3c1aa Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 20 Dec 2019 12:10:43 +0100 Subject: [PATCH 093/238] docs: reST-primer first proofreading (WIP) Signed-off-by: Markus Heiser --- docs/dev/reST.rst | 152 ++++++++++++++++++++++++++++++---------------- 1 file changed, 100 insertions(+), 52 deletions(-) diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 69e4a930..8bab5e33 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -28,6 +28,9 @@ The sources of Searx's documentation are located at :origin:`docs`. Run - intersphinx_ - `Sphinx's autodoc`_ - `Sphinx's Python domain`_, `Sphinx's C domain`_ + - SVG_, ImageMagick_ + - DOT_, `Graphviz's dot`_, Graphviz_ + .. contents:: Contents :depth: 3 @@ -76,9 +79,9 @@ Admin's POV: :origin:`docs/admin` Developer's POV: :origin:`docs/dev` Depending on the readability_ of code, a typical developer is able to read and - understand source code. Describe what a item aims to do (e.g. a function), - describe chronological order matters, describe it. Name the *out-of-limits - condition* and all the side effects a external developer will not know. + understand source code. Describe what a item aims to do (e.g. a function). + If the chronological order matters, describe it. Name the *out-of-limits + conditions* and all the side effects a external developer will not know. .. _reST inline markup: @@ -254,7 +257,7 @@ Intersphinx is configured in :origin:`docs/conf.py`: intersphinx_mapping = { "python": ("https://docs.python.org/3/", None), "flask": ("https://flask.palletsprojects.com/", None), - "jinja": ("https://jinja.palletsprojects.com/", None), + "jinja": ("https://jinja.palletsprojects.com/", None), "linuxdoc" : ("https://return42.github.io/linuxdoc/", None), "sphinx" : ("https://www.sphinx-doc.org/en/master/", None), } @@ -298,6 +301,12 @@ Refer to `Sphinx Roles`_ for roles added by Sphinx. Figures & Images ================ +.. sidebar:: Image processing + + With the directives from :ref:`linuxdoc ` the build process + is flexible. To get best results in the generated output format, install + ImageMagick_ and Graphviz_. + Searx's sphinx setup includes: :ref:`linuxdoc:kfigure`. Scalable here means; scalable in sense of the build process. Normally in absence of a converter tool, the build process will break. From the authors POV it’s annoying to care @@ -307,36 +316,44 @@ continues and scales output quality in dependence of installed image processors. If you want to add an image, you should use the ``kernel-figure`` and ``kernel-image`` directives. E.g. to insert a figure with a scalable image -format use SVG (:ref:`svg_image_example`): +format use SVG (:ref:`svg image example`): .. code:: reST .. _svg image example: .. kernel-figure:: svg_image.svg - :alt: simple SVG image + :alt: SVG image example - SVG image example + simple SVG image + + To refer the figure, a caption block is needed: :ref:`svg image example`. .. _svg image example: .. kernel-figure:: svg_image.svg - :alt: simple SVG image + :alt: SVG image example - SVG image example + simple SVG image + +To refer the figure, a caption block is needed: :ref:`svg image example`. DOT files (aka Graphviz) ------------------------ -The kernel figure (and image) directive support **DOT** formated files, see +With :ref:`linuxdoc:kernel-figure` reST support for **DOT** formatted files is +given. -* DOT: http://graphviz.org/pdf/dotguide.pdf -* Graphviz: http://www.graphviz.org/content/dot-language +- `Graphviz's dot`_ +- DOT_ +- Graphviz_ -A simple example (:ref:`hello_dot_file`): +A simple example is shown in :ref:`dot file example`: .. code:: reST + .. _dot file example: + .. kernel-figure:: hello.dot :alt: hello world @@ -345,6 +362,8 @@ A simple example (:ref:`hello_dot_file`): .. admonition:: hello.dot :class: rst-example + .. _dot file example: + .. kernel-figure:: hello.dot :alt: hello world @@ -354,77 +373,100 @@ A simple example (:ref:`hello_dot_file`): --------------------- Embed *render* markups (or languages) like Graphviz's **DOT** is provided by the -``kernel-render`` directives. +:ref:`linuxdoc:kernel-render` directive. A simple example of embedded DOT_ is +shown in figure :ref:`dot render example`: -.. code:: reST +.. code-block:: rst - .. kernel-render:: DOT markup - :alt: foobar digraph - :caption: Embedded **DOT** (Graphviz) code - - digraph foo { - "bar" -> "baz"; - } - -How this will be rendered depends on the installed tools. If Graphviz is -installed, you will see an vector image. If not the raw markup is inserted as -*literal-block* (:ref:`hello_dot_render`). - -.. admonition:: DOT markup - :class: rst-example - - .. _hello_dot_render: + .. _dot render example: .. kernel-render:: DOT - :alt: foobar digraph - :caption: Embedded **DOT** (Graphviz) code + :alt: digraph + :caption: Embedded DOT (Graphviz) code digraph foo { "bar" -> "baz"; } -The *render* directive has all the options known from the *figure* directive, -plus option ``caption``. If ``caption`` has a value, a *figure* node is -inserted. If not, a *image* node is inserted. A ``caption`` is also needed, if -you want to refer it (:ref:`hello_svg_render`). + Attribute ``caption`` is needed, if you want to refer the figure: :ref:`dot + render example`. +Please note :ref:`build tools `. If Graphviz_ is +installed, you will see an vector image. If not, the raw markup is inserted as +*literal-block*. + +.. admonition:: kernel-render DOT + :class: rst-example + + .. _dot render example: + + .. kernel-render:: DOT + :alt: digraph + :caption: Embedded DOT (Graphviz) code + + digraph foo { + "bar" -> "baz"; + } + + Attribute ``caption`` is needed, if you want to refer the figure: :ref:`dot + render example`. ``kernel-render`` SVG --------------------- -.. code:: reST +A simple example of embedded SVG_ is shown in figure :ref:`svg render example`: - .. kernel-render:: SVG markup +.. code-block:: rst + + .. _svg render example: + + .. kernel-render:: SVG :caption: Embedded **SVG** markup :alt: so-nw-arrow .. - .. code:: xml + .. code:: xml - - - + + + -.. admonition:: SVG markup +.. admonition:: kernel-render SVG :class: rst-example - .. _hello_svg_render: + .. _svg render example: .. kernel-render:: SVG :caption: Embedded **SVG** markup :alt: so-nw-arrow - - - + + + + + .. _reST lists: List markups @@ -551,7 +593,7 @@ are mappings from field names to field bodies. They marked up like this: :fieldname: Field content :foo: first paragraph in field foo - second paragraph in field foo + second paragraph in field foo :bar: Field content @@ -561,7 +603,7 @@ are mappings from field names to field bodies. They marked up like this: :fieldname: Field content :foo: first paragraph in field foo - second paragraph in field foo + second paragraph in field foo :bar: Field content @@ -684,3 +726,9 @@ Admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, .. _docutils: http://docutils.sourceforge.net/docs/index.html .. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html .. _linuxdoc: https://return42.github.io/linuxdoc +.. _SVG: https://www.w3.org/TR/SVG11/expanded-toc.html +.. _DOT: https://graphviz.gitlab.io/_pages/doc/info/lang.html +.. _`Graphviz's dot`: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf +.. _Graphviz: https://graphviz.gitlab.io + +.. _ImageMagick: https://www.imagemagick.org From b201f8459527a9a186838d1325977fe950dd2f0a Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 20 Dec 2019 17:47:24 +0100 Subject: [PATCH 094/238] docs: reST-primer continued proofreading (WIP) Signed-off-by: Markus Heiser --- docs/dev/reST.rst | 168 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 119 insertions(+), 49 deletions(-) diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 8bab5e33..609517f6 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -88,19 +88,23 @@ Developer's POV: :origin:`docs/dev` Basic inline markup =================== -``*italics*`` -- *italics* - one asterisk for emphasis +.. sidebar:: Inline markup -``**boldface**`` -- **boldface** - two asterisks for strong emphasis and + - :ref:`reST roles` + - :ref:`reST smart ref` -````foo()```` -- ``foo()`` - backquotes for code samples and literals. +Basic inline markup is done with asterisks and backquotes. If asterisks or +backquotes appear in running text and could be confused with inline markup +delimiters, they have to be escaped with a backslash (``\*pointer``). -``\*foo is a pointer`` -- \*foo is a pointer - If asterisks or backquotes appear in running text and could be confused with - inline markup delimiters, they have to be escaped with a backslash (``\*foo is - a pointer``). +================================================ ==================== ======================== +description rendered markup +================================================ ==================== ======================== +one asterisk for emphasis *italics* ``*italics*`` +two asterisks for strong emphasis **boldface** ``**boldface**`` +backquotes for code samples and literals ``foo()`` ````foo()```` +quote asterisks or backquotes \*foo is a pointer ``\*foo is a pointer`` +================================================ ==================== ======================== .. _reST basic structure: @@ -110,44 +114,82 @@ Basic article structure The basic structure of an article makes use of heading adornments to markup chapter, sections and subsections. -#. ``=`` with overline for document title -#. ``=`` for chapters -#. ``-`` for sections -#. ``~`` for subsections - .. _reST template: -.. admonition:: reST template - :class: rst-example +reST template +------------- + +reST template for an simple article: + +.. code:: reST + + .. _doc refname: + + ============== + Document title + ============== + + Lorem ipsum dolor sit amet, consectetur adipisici elit .. Further read + :ref:`chapter refname`. + + .. _chapter refname: + + Chapter + ======= + + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquid ex ea commodi consequat ... + + .. _section refname: + + Section + ------- + + lorem .. + + .. _subsection refname: + + Subsection + ~~~~~~~~~~ + + lorem .. + + +Headings +-------- + +#. title - with overline for document title: + + .. code:: reST + + ============== + Document title + ============== + + +#. chapter - with anchor named ``anchor name``: .. code:: reST - .. _document title: + .. _anchor name: - ============== - Document title - ============== + Chapter + ======= - Lorem ipsum dolor sit amet, consectetur adipisici elit .. - Further read :ref:`chapter title`. +#. section - .. _chapter title: + .. code:: reST - Chapters - ======== + Section + ------- - Ut enim ad minim veniam, quis nostrud exercitation ullamco - laboris nisi ut aliquid ex ea commodi consequat ... +#. subsection - Section - ------- + .. code:: reST - lorem .. + Subsection + ~~~~~~~~~~ - Subsection - ~~~~~~~~~~ - - lorem .. Anchors & Links @@ -179,18 +221,18 @@ To refer anchors use the `ref role`_ markup: .. code:: reST - Visit chapter :ref:`reST anchor`. - Or set hyperlink text manualy :ref:`foo bar `. + Visit chapter :ref:`reST anchor`. Or set hyperlink text manualy :ref:`foo + bar `. .. admonition:: ``:ref:`` role :class: rst-example - Visist chapter :ref:`reST anchor` - Or set hyperlink text manualy :ref:`foo bar `. + Visist chapter :ref:`reST anchor`. Or set hyperlink text manualy :ref:`foo + bar `. .. _reST ordinary ref: -link ordinary URL +Link ordinary URL ----------------- If you need to reference external URLs use *named* hyperlinks to maintain @@ -221,8 +263,8 @@ readability of reST sources. Here is a example taken from *this* article: .. _reST smart ref: -smart references ----------------- +Smart refs +---------- With the power of sphinx.ext.extlinks_ and intersphinx_ referencing external content becomes smart. @@ -270,6 +312,8 @@ To list all anchors of the inventory (e.g. ``python``) use: $ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv +.. _reST roles: + Roles ===== @@ -634,9 +678,24 @@ Further list blocks Admonitions =========== -Admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, -:dudir:`caution`, :dudir:`danger`, :dudir:`error`, , :dudir:`important`, , -:dudir:`warning` and the generic :dudir:`admonition `. +Sidebar +------- + +Sidebar is an eye catcher, often used for admonitions pointing further stuff or +site effects. Here is the source of the sidebar :ref:`on top of this page `. + +.. code:: reST + + .. sidebar:: KISS_ and readability_ + + Instead of defining more and more roles, we at searx encourage our + contributors to follow principles like KISS_ and readability_. + +Generic admonition +------------------ + +The generic :dudir:`admonition ` needs a title: .. code:: reST @@ -644,6 +703,21 @@ Admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, lorem ipsum .. + +.. admonition:: generic admonition title + + lorem ipsum .. + + +Specific admonitions +-------------------- + +Specific admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, +:dudir:`caution`, :dudir:`danger`, :dudir:`error`, , :dudir:`important`, and +:dudir:`warning` . + +.. code:: reST + .. hint:: lorem ipsum .. @@ -657,10 +731,6 @@ Admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attention`, lorem ipsum .. -.. admonition:: generic admonition title - - lorem ipsum .. - .. hint:: lorem ipsum .. From c2b9aa0c2fe5e9eee24619d2fe563da01d9ecf87 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 20 Dec 2019 20:39:14 +0100 Subject: [PATCH 095/238] docs: reST-primer describe table markup (WIP) Signed-off-by: Markus Heiser --- docs/dev/csv_table.txt | 6 + docs/dev/reST.rst | 419 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 374 insertions(+), 51 deletions(-) create mode 100644 docs/dev/csv_table.txt diff --git a/docs/dev/csv_table.txt b/docs/dev/csv_table.txt new file mode 100644 index 00000000..8a145413 --- /dev/null +++ b/docs/dev/csv_table.txt @@ -0,0 +1,6 @@ +stub col row 1, column, "loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy +eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam +voluptua." +stub col row 1, "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita +kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", column +stub col row 1, column, column diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 609517f6..50caa0fe 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -97,14 +97,17 @@ Basic inline markup is done with asterisks and backquotes. If asterisks or backquotes appear in running text and could be confused with inline markup delimiters, they have to be escaped with a backslash (``\*pointer``). -================================================ ==================== ======================== -description rendered markup -================================================ ==================== ======================== -one asterisk for emphasis *italics* ``*italics*`` -two asterisks for strong emphasis **boldface** ``**boldface**`` -backquotes for code samples and literals ``foo()`` ````foo()```` -quote asterisks or backquotes \*foo is a pointer ``\*foo is a pointer`` -================================================ ==================== ======================== +.. table:: basic inline markup + :widths: 4 3 7 + + ================================================ ==================== ======================== + description rendered markup + ================================================ ==================== ======================== + one asterisk for emphasis *italics* ``*italics*`` + two asterisks for strong emphasis **boldface** ``**boldface**`` + backquotes for code samples and literals ``foo()`` ````foo()```` + quote asterisks or backquotes \*foo is a pointer ``\*foo is a pointer`` + ================================================ ==================== ======================== .. _reST basic structure: @@ -269,27 +272,30 @@ Smart refs With the power of sphinx.ext.extlinks_ and intersphinx_ referencing external content becomes smart. -========================== ================================== ==================================== -refer ... rendered example markup -========================== ================================== ==================================== -:rst:role:`rfc` :rfc:`822` ``:rfc:`822``` -:rst:role:`pep` :pep:`8` ``:pep:`8``` -sphinx.ext.extlinks_ --------------------------------------------------------------------------------------------------- -project's wiki article :wiki:`Searx-instances` ``:wiki:`Searx-instances``` -to docs public URL :docs:`dev/reST.html` ``:docs:`dev/reST.html``` -files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst``` -pull request :pull:`1756` ``:pull:`1756``` -patch :patch:`af2cae6` ``:patch:`af2cae6``` -PyPi package :pypi:`searx` ``:pypi:`searx``` -manual page man :man:`bash` ``:man:`bash``` -intersphinx_ --------------------------------------------------------------------------------------------------- -external anchor :ref:`python:and` ``:ref:`python:and``` -external doc anchor :doc:`jinja:templates` ``:doc:`jinja:templates``` -python code object :py:obj:`datetime.datetime` ``:py:obj:`datetime.datetime``` -flask code object :py:obj:`flask.Flask` ``:py:obj:`flask.Flask``` -========================== ================================== ==================================== +.. table:: smart refs with sphinx.ext.extlinks_ and intersphinx_ + :widths: 4 3 7 + + ========================== ================================== ==================================== + refer ... rendered example markup + ========================== ================================== ==================================== + :rst:role:`rfc` :rfc:`822` ``:rfc:`822``` + :rst:role:`pep` :pep:`8` ``:pep:`8``` + sphinx.ext.extlinks_ + -------------------------------------------------------------------------------------------------- + project's wiki article :wiki:`Searx-instances` ``:wiki:`Searx-instances``` + to docs public URL :docs:`dev/reST.html` ``:docs:`dev/reST.html``` + files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst``` + pull request :pull:`1756` ``:pull:`1756``` + patch :patch:`af2cae6` ``:patch:`af2cae6``` + PyPi package :pypi:`searx` ``:pypi:`searx``` + manual page man :man:`bash` ``:man:`bash``` + intersphinx_ + -------------------------------------------------------------------------------------------------- + external anchor :ref:`python:and` ``:ref:`python:and``` + external doc anchor :doc:`jinja:templates` ``:doc:`jinja:templates``` + python code object :py:obj:`datetime.datetime` ``:py:obj:`datetime.datetime``` + flask code object :py:obj:`flask.Flask` ``:py:obj:`flask.Flask``` + ========================== ================================== ==================================== Intersphinx is configured in :origin:`docs/conf.py`: @@ -317,30 +323,43 @@ To list all anchors of the inventory (e.g. ``python``) use: Roles ===== +.. sidebar:: Further reading + + - `Sphinx Roles`_ + - :doc:`sphinx:usage/restructuredtext/domains` + + A *custom interpreted text role* (:duref:`ref `) is an inline piece of explicit markup. It signifies that that the enclosed text should be interpreted -in a specific way. The general syntax is ``:rolename:`content```. +in a specific way. -========================== ================================== ==================================== -role rendered example markup -========================== ================================== ==================================== -:rst:role:`guilabel` :guilabel:`&Cancel` ``:guilabel:`&Cancel``` -:rst:role:`kbd` :kbd:`C-x C-f` ``:kbd:`C-x C-f``` -:rst:role:`menuselection` :menuselection:`Open --> File` ``:menuselection:`Open --> File``` -:rst:role:`download` :download:`this file ` ``:download:`this file ``` -:rst:role:`math` :math:`a^2 + b^2 = c^2` ``:math:`a^2 + b^2 = c^2``` -:rst:role:`ref` :ref:`svg image example` ``:ref:`svg image example``` -:rst:role:`command` :command:`ls -la` ``:command:`ls -la``` -:durole:`emphasis` :emphasis:`italic` ``:emphasis:`italic``` -:durole:`strong` :strong:`bold` ``:strong:`bold``` -:durole:`literal` :literal:`foo()` ``:literal:`foo()``` -:durole:`subscript` H\ :sub:`2`\ O ``H\ :sub:`2`\ O`` -:durole:`superscript` E = mc\ :sup:`2` ``E = mc\ :sup:`2``` -:durole:`title-reference` :title:`Time` ``:title:`Time``` -========================== ================================== ==================================== +The general markup is one of: -Refer to `Sphinx Roles`_ for roles added by Sphinx. +.. code:: reST + :rolename:`ref-name` + :rolename:`ref text ` + +.. table:: smart refs with sphinx.ext.extlinks_ and intersphinx_ + :widths: 4 3 7 + + ========================== ================================== ==================================== + role rendered example markup + ========================== ================================== ==================================== + :rst:role:`guilabel` :guilabel:`&Cancel` ``:guilabel:`&Cancel``` + :rst:role:`kbd` :kbd:`C-x C-f` ``:kbd:`C-x C-f``` + :rst:role:`menuselection` :menuselection:`Open --> File` ``:menuselection:`Open --> File``` + :rst:role:`download` :download:`this file ` ``:download:`this file ``` + :rst:role:`math` :math:`a^2 + b^2 = c^2` ``:math:`a^2 + b^2 = c^2``` + :rst:role:`ref` :ref:`svg image example` ``:ref:`svg image example``` + :rst:role:`command` :command:`ls -la` ``:command:`ls -la``` + :durole:`emphasis` :emphasis:`italic` ``:emphasis:`italic``` + :durole:`strong` :strong:`bold` ``:strong:`bold``` + :durole:`literal` :literal:`foo()` ``:literal:`foo()``` + :durole:`subscript` H\ :sub:`2`\ O ``H\ :sub:`2`\ O`` + :durole:`superscript` E = mc\ :sup:`2` ``E = mc\ :sup:`2``` + :durole:`title-reference` :title:`Time` ``:title:`Time``` + ========================== ================================== ==================================== Figures & Images ================ @@ -420,7 +439,7 @@ Embed *render* markups (or languages) like Graphviz's **DOT** is provided by the :ref:`linuxdoc:kernel-render` directive. A simple example of embedded DOT_ is shown in figure :ref:`dot render example`: -.. code-block:: rst +.. code:: reST .. _dot render example: @@ -460,7 +479,7 @@ installed, you will see an vector image. If not, the raw markup is inserted as A simple example of embedded SVG_ is shown in figure :ref:`svg render example`: -.. code-block:: rst +.. code:: reST .. _svg render example: @@ -768,8 +787,302 @@ Specific admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attenti lorem ipsum .. +Tables +====== + +.. sidebar:: Nested tables + + Nested tables are ugly! Not all builder support nested tables, don't use + them! + +ASCII-art tables like :ref:`reST simple table` and :ref:`reST grid table` might +be comfortable for readers of the text-files, but they have huge disadvantages +in the creation and modifying. First, they are hard to edit. Think about +adding a row or a column to a ASCII-art table or adding a paragraph in a cell, +it is a nightmare on big tables. + + +.. sidebar:: List tables + + For meaningful patch and diff use :ref:`reST flat table`. + +Second the diff of modifying ASCII-art tables is not meaningful, e.g. widening a +cell generates a diff in which also changes are included, which are only +ascribable to the ASCII-art. Anyway, if you prefer ASCII-art for any reason, +here are some helpers: + +* `Emacs Table Mode`_ +* `Online Tables Generator`_ + +.. _reST simple table: + +Simple tables +------------- + +:duref:`Simple tables ` allow *colspan* but not *rowspan*. If +your table need some metadata (e.g. a title) you need to add the ``.. table:: +directive`` :dudir:`(ref) ` in front and place the table in its body: + +.. code:: reST + + .. table:: foo gate truth table + :widths: grid + :align: left + + ====== ====== ====== + Inputs Output + ------------- ------ + A B A or B + ====== ====== ====== + False + -------------------- + True + -------------------- + True False True + (foo) + ------ ------ ------ + False True + (foo) + ====== ============= + +.. admonition:: Simple ASCII table + :class: rst-example + + .. table:: foo gate truth table + :widths: grid + :align: left + + ====== ====== ====== + Inputs Output + ------------- ------ + A B A or B + ====== ====== ====== + False + -------------------- + True + -------------------- + True False True + (foo) + ------ ------ ------ + False True + (foo) + ====== ============= + + + +.. _reST grid table: + +Grid tables +----------- + +:duref:`Grid tables ` allow colspan *colspan* and *rowspan*: + +.. code:: reST + + .. table:: grid table example + :widths: 1 1 5 + + +------------+------------+-----------+ + | Header 1 | Header 2 | Header 3 | + +============+============+===========+ + | body row 1 | column 2 | column 3 | + +------------+------------+-----------+ + | body row 2 | Cells may span columns.| + +------------+------------+-----------+ + | body row 3 | Cells may | - Cells | + +------------+ span rows. | - contain | + | body row 4 | | - blocks. | + +------------+------------+-----------+ + +.. admonition:: ASCII grid table + :class: rst-example + + .. table:: grid table example + :widths: 1 1 5 + + +------------+------------+-----------+ + | Header 1 | Header 2 | Header 3 | + +============+============+===========+ + | body row 1 | column 2 | column 3 | + +------------+------------+-----------+ + | body row 2 | Cells may span columns.| + +------------+------------+-----------+ + | body row 3 | Cells may | - Cells | + +------------+ span rows. | - contain | + | body row 4 | | - blocks. | + +------------+------------+-----------+ + + +.. _reST flat table: + +flat-table +---------- + +The ``flat-table`` is a further developed variant of the :ref:`list tables +`. It is a double-stage list similar to the +:dudir:`list-table` with some additional features: + +column-span: ``cspan`` + with the role ``cspan`` a cell can be extended through additional columns + +row-span: ``rspan`` + with the role ``rspan`` a cell can be extended through additional rows + +auto-span: + spans rightmost cell of a table row over the missing cells on the right side + of that table-row. With Option ``:fill-cells:`` this behavior can changed + from *auto span* to *auto fill*, which automatically inserts (empty) cells + instead of spanning the last cell. + +options: + :header-rows: [int] count of header rows + :stub-columns: [int] count of stub columns + :widths: [[int] [int] ... ] widths of columns + :fill-cells: instead of auto-span missing cells, insert missing cells + +roles: + :cspan: [int] additional columns (*morecols*) + :rspan: [int] additional rows (*morerows*) + +The example below shows how to use this markup. The first level of the staged +list is the *table-row*. In the *table-row* there is only one markup allowed, +the list of the cells in this *table-row*. Exception are *comments* ( ``..`` ) +and *targets* (e.g. a ref to :ref:`row 2 of table's body `). + +.. code:: reST + + .. flat-table:: ``flat-table`` example + :header-rows: 2 + :stub-columns: 1 + :widths: 1 1 1 1 2 + + * - :rspan:`1` head / stub + - :cspan:`3` head 1.1-4 + + * - head 2.1 + - head 2.2 + - head 2.3 + - head 2.4 + + * .. row body 1 / this is a comment + + - row 1 + - :rspan:`2` cell 1-3.1 + - cell 1.2 + - cell 1.3 + - cell 1.4 + + * .. Comments and targets are allowed on *table-row* stage. + .. _`row body 2`: + + - row 2 + - cell 2.2 + - :rspan:`1` :cspan:`1` + cell 2.3 with a span over + + * col 3-4 & + * row 2-3 + + * - row 3 + - cell 3.2 + + * - row 4 + - cell 4.1 + - cell 4.2 + - cell 4.3 + - cell 4.4 + + * - row 5 + - cell 5.1 with automatic span to rigth end + + * - row 6 + - cell 6.1 + - .. + + +.. admonition:: List table + :class: rst-example + + .. flat-table:: ``flat-table`` example + :header-rows: 2 + :stub-columns: 1 + :widths: 1 1 1 1 2 + + * - :rspan:`1` head / stub + - :cspan:`3` head 1.1-4 + + * - head 2.1 + - head 2.2 + - head 2.3 + - head 2.4 + + * .. row body 1 / this is a comment + + - row 1 + - :rspan:`2` cell 1-3.1 + - cell 1.2 + - cell 1.3 + - cell 1.4 + + * .. Comments and targets are allowed on *table-row* stage. + .. _`row body 2`: + + - row 2 + - cell 2.2 + - :rspan:`1` :cspan:`1` + cell 2.3 with a span over + + * col 3-4 & + * row 2-3 + + * - row 3 + - cell 3.2 + + * - row 4 + - cell 4.1 + - cell 4.2 + - cell 4.3 + - cell 4.4 + + * - row 5 + - cell 5.1 with automatic span to rigth end + + * - row 6 + - cell 6.1 + - .. + + +CSV table +--------- + +CSV table might be the choice if you want to include CSV-data from a outstanding +(build) process into your documentation. + +.. code:: reST + + .. csv-table:: CSV table example + :header: .. , Column 1, Column 2 + :widths: 2 5 5 + :stub-columns: 1 + :file: csv_table.txt + +Content of file ``csv_table.txt``: + +.. literalinclude:: csv_table.txt + +.. admonition:: CSV table + :class: rst-example + + .. csv-table:: CSV table example + :header: .. , Column 1, Column 2 + :widths: 3 5 5 + :stub-columns: 1 + :file: csv_table.txt + + .. _KISS: https://en.wikipedia.org/wiki/KISS_principle + .. _readability: https://docs.python-guide.org/writing/style/ .. _Sphinx-Primer: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html @@ -796,9 +1109,13 @@ Specific admonitions: :dudir:`hint`, :dudir:`note`, :dudir:`tip` :dudir:`attenti .. _docutils: http://docutils.sourceforge.net/docs/index.html .. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html .. _linuxdoc: https://return42.github.io/linuxdoc + .. _SVG: https://www.w3.org/TR/SVG11/expanded-toc.html .. _DOT: https://graphviz.gitlab.io/_pages/doc/info/lang.html .. _`Graphviz's dot`: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf .. _Graphviz: https://graphviz.gitlab.io - .. _ImageMagick: https://www.imagemagick.org + +.. _`Emacs Table Mode`: https://www.emacswiki.org/emacs/TableMode +.. _`Online Tables Generator`: http://www.tablesgenerator.com/text_tables +.. _`OASIS XML Exchange Table Model`: https://www.oasis-open.org/specs/tm9901.html From d1154202bcd27a7cf3a1bed524ee6b24955df8af Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sat, 21 Dec 2019 17:13:38 +0100 Subject: [PATCH 096/238] doc: add reST templating // incl. generic engine tabe Signed-off-by: Markus Heiser --- docs/admin/engines.rst | 68 ++++++++++++++++++++++++++++++++++++ docs/admin/index.rst | 1 + docs/conf.py | 10 +++--- docs/dev/engine_overview.rst | 2 ++ docs/dev/reST.rst | 34 +++++++++++++++++- docs/dev/search_api.rst | 7 ++++ requirements-dev.txt | 1 + 7 files changed, 118 insertions(+), 5 deletions(-) create mode 100644 docs/admin/engines.rst diff --git a/docs/admin/engines.rst b/docs/admin/engines.rst new file mode 100644 index 00000000..40c3b9e4 --- /dev/null +++ b/docs/admin/engines.rst @@ -0,0 +1,68 @@ +.. _engines generic: + +======= +engines +======= + +.. sidebar:: Further reading .. + + - :ref:`engines generic` + - :ref:`configured engines` + - :ref:`engine settings` + - :ref:`engine file` + +============= =========== ==================== ============ +:ref:`engine settings` :ref:`engine file` +------------------------- --------------------------------- +Name (cfg) Categories +------------------------- --------------------------------- +Engine .. Paging support **P** +------------------------- -------------------- ------------ +Shortcut **S** Language support **L** +Timeout **TO** Time range support **TR** +Disabled **D** Offline **O** +------------- ----------- -------------------- ------------ +Suspend end **SE** +------------- ----------- --------------------------------- +Safe search **SS** +============= =========== ================================= + +Configuration defaults (at built time): + +.. _configured engines: + +.. jinja:: webapp + + .. flat-table:: Engines configured at built time (defaults) + :header-rows: 1 + :stub-columns: 2 + + * - Name (cfg) + - S + - Engine + - TO + - Categories + - P + - L + - SS + - D + - TR + - O + - SE + + {% for name, mod in engines.items() %} + + * - {{name}} + - !{{mod.shortcut}} + - {{mod.__name__}} + - {{mod.timeout}} + - {{", ".join(mod.categories)}} + - {{(mod.paging and "y") or ""}} + - {{(mod.language_support and "y") or ""}} + - {{(mod.safesearch and "y") or ""}} + - {{(mod.disabled and "y") or ""}} + - {{(mod.time_range_support and "y") or ""}} + - {{(mod.offline and "y") or ""}} + - {{mod.suspend_end_time}} + + {% endfor %} diff --git a/docs/admin/index.rst b/docs/admin/index.rst index f3a99576..6e9a3451 100644 --- a/docs/admin/index.rst +++ b/docs/admin/index.rst @@ -9,3 +9,4 @@ Administrator documentation api filtron morty + engines diff --git a/docs/conf.py b/docs/conf.py index b960621d..e49562a3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,6 +22,11 @@ master_doc = "index" source_suffix = '.rst' numfig = True +from searx import webapp +jinja_contexts = { + 'webapp': dict(**webapp.__dict__) +} + # usage:: lorem :patch:`f373169` ipsum extlinks = {} @@ -52,11 +57,8 @@ extensions = [ "sphinx.ext.intersphinx", "pallets_sphinx_themes", "sphinx_issues", # https://github.com/sloria/sphinx-issues/blob/master/README.rst + "sphinxcontrib.jinja", # https://github.com/tardyp/sphinx-jinja 'linuxdoc.rstFlatTable', # Implementation of the 'flat-table' reST-directive. - 'linuxdoc.rstKernelDoc', # Implementation of the 'kernel-doc' reST-directive. - 'linuxdoc.kernel_include', # Implementation of the 'kernel-include' reST-directive. - 'linuxdoc.manKernelDoc', # Implementation of the 'kernel-doc-man' builder - 'linuxdoc.cdomain', # Replacement for the sphinx c-domain. 'linuxdoc.kfigure', # Sphinx extension which implements scalable image handling. ] diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index 92405dc6..449c837a 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -29,6 +29,7 @@ the ones in the engine file. It does not matter if an option is stored in the engine file or in the settings. However, the standard way is the following: +.. _engine file: engine file ----------- @@ -43,6 +44,7 @@ time_range_support boolean support search time range offline boolean engine runs offline ======================= =========== =========================================== +.. _engine settings: settings.yml ------------ diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 50caa0fe..9e90c8c6 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -26,6 +26,7 @@ The sources of Searx's documentation are located at :origin:`docs`. Run - `sphinx cross references`_ - linuxdoc_ - intersphinx_ + - sphinx-jinja_ - `Sphinx's autodoc`_ - `Sphinx's Python domain`_, `Sphinx's C domain`_ - SVG_, ImageMagick_ @@ -1079,6 +1080,36 @@ Content of file ``csv_table.txt``: :stub-columns: 1 :file: csv_table.txt +Templating +========== + +.. sidebar:: Build environment + + All *generic-doc* tasks are running in the :ref:`build environment `. + +Templating is suitable for documentation which is created generic at the build +time. The sphinx-jinja_ extension evaluates jinja_ templates in the :ref:`build +environment ` with installed searx modules. We use this e.g. to +build chapter: :ref:`engines generic`. + +Here is the content of the :origin:`docs/admin/engines.rst`: + +.. literalinclude:: ../admin/engines.rst + :language: reST + :start-after: .. _configured engines: + +The context for the template is selected in the line ``.. jinja:: webapp``. In +sphinx's build configuration (:origin:`docs/conf.py`) the ``webapp`` context +points to the name space of the python module: ``webapp``. + +.. code:: py + + from searx import webapp + jinja_contexts = { + 'webapp': dict(**webapp.__dict__) + } + .. _KISS: https://en.wikipedia.org/wiki/KISS_principle @@ -1109,7 +1140,8 @@ Content of file ``csv_table.txt``: .. _docutils: http://docutils.sourceforge.net/docs/index.html .. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html .. _linuxdoc: https://return42.github.io/linuxdoc - +.. _jinja: https://jinja.palletsprojects.com/ +.. _sphinx-jinja: https://github.com/tardyp/sphinx-jinja .. _SVG: https://www.w3.org/TR/SVG11/expanded-toc.html .. _DOT: https://graphviz.gitlab.io/_pages/doc/info/lang.html .. _`Graphviz's dot`: https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index 158cab7c..8ca804b8 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -14,6 +14,13 @@ Furthermore, two enpoints ``/`` and ``/search`` are available for querying. Parameters ========== +.. sidebar:: Further reading .. + + - :ref:`engines generic` + - :ref:`configured engines` + - :ref:`engine settings` + - :ref:`engine file` + ``q`` : required The search query. This string is passed to external search services. Thus, searx supports syntax of each search service. For example, ``site:github.com diff --git a/requirements-dev.txt b/requirements-dev.txt index 54643908..74754fa8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -12,3 +12,4 @@ unittest2==1.1.0 zope.testrunner==4.5.1 selenium==3.141.0 linuxdoc @ git+http://github.com/return42/linuxdoc.git +sphinx-jinja From 8850036ded3af2ba7455cef53a8134022e1b544d Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 21 Dec 2019 20:25:39 +0100 Subject: [PATCH 097/238] [fix] add explicit useragent header to requests - closes #1459 --- searx/engines/qwant.py | 1 + 1 file changed, 1 insertion(+) diff --git a/searx/engines/qwant.py b/searx/engines/qwant.py index de12955c..54e9dafa 100644 --- a/searx/engines/qwant.py +++ b/searx/engines/qwant.py @@ -50,6 +50,7 @@ def request(query, params): language = match_language(params['language'], supported_languages, language_aliases) params['url'] += '&locale=' + language.replace('-', '_').lower() + params['headers']['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0' return params From e5305f886c0d7d5fb3f34d1fbd7f9a545c14c284 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 21 Dec 2019 20:51:30 +0100 Subject: [PATCH 098/238] [fix] fetch extra search param of gigablast - fixes #1293 --- searx/engines/gigablast.py | 41 ++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py index a84f3f69..2a5067bc 100644 --- a/searx/engines/gigablast.py +++ b/searx/engines/gigablast.py @@ -14,6 +14,7 @@ import random from json import loads from time import time from lxml.html import fromstring +from searx.poolrequests import get from searx.url_utils import urlencode from searx.utils import eval_xpath @@ -31,13 +32,9 @@ search_string = 'search?{query}'\ '&c=main'\ '&s={offset}'\ '&format=json'\ - '&qh=0'\ - '&qlang={lang}'\ + '&langcountry={lang}'\ '&ff={safesearch}'\ - '&rxiec={rxieu}'\ - '&ulse={ulse}'\ - '&rand={rxikd}'\ - '&dbez={dbez}' + '&rand={rxikd}' # specific xpath variables results_xpath = '//response//result' url_xpath = './/url' @@ -46,9 +43,26 @@ content_xpath = './/sum' supported_languages_url = 'https://gigablast.com/search?&rxikd=1' +extra_param = '' # gigablast requires a random extra parameter +# which can be extracted from the source code of the search page + + +def parse_extra_param(text): + global extra_param + param_lines = [x for x in text.splitlines() if x.startswith('var url=') or x.startswith('url=url+')] + extra_param = '' + for l in param_lines: + extra_param += l.split("'")[1] + extra_param = extra_param.split('&')[-1] + + +def init(engine_settings=None): + parse_extra_param(get('http://gigablast.com/search?c=main&qlangcountry=en-us&q=south&s=10').text) + # do search-request def request(query, params): + print("EXTRAPARAM:", extra_param) offset = (params['pageno'] - 1) * number_of_results if params['language'] == 'all': @@ -67,14 +81,11 @@ def request(query, params): search_path = search_string.format(query=urlencode({'q': query}), offset=offset, number_of_results=number_of_results, - rxikd=int(time() * 1000), - rxieu=random.randint(1000000000, 9999999999), - ulse=random.randint(100000000, 999999999), lang=language, - safesearch=safesearch, - dbez=random.randint(100000000, 999999999)) + rxikd=int(time() * 1000), + safesearch=safesearch) - params['url'] = base_url + search_path + params['url'] = base_url + search_path + '&' + extra_param return params @@ -84,7 +95,11 @@ def response(resp): results = [] # parse results - response_json = loads(resp.text) + try: + response_json = loads(resp.text) + except: + parse_extra_param(resp.text) + return results for result in response_json['results']: # append result From f8713512bedf19d4495e0b9a0fd86679daaf7f79 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 21 Dec 2019 20:56:38 +0100 Subject: [PATCH 099/238] [fix] convert byte query to string in osm engine - fixes #1220 --- searx/engines/openstreetmap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/openstreetmap.py b/searx/engines/openstreetmap.py index 733ba620..cec10a3c 100644 --- a/searx/engines/openstreetmap.py +++ b/searx/engines/openstreetmap.py @@ -24,7 +24,7 @@ result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}' # do search-request def request(query, params): - params['url'] = base_url + search_string.format(query=query) + params['url'] = base_url + search_string.format(query=query.decode('utf-8')) return params From 00512e36c133312eb74a82f6a2dec6d06214c42b Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 21 Dec 2019 21:01:08 +0100 Subject: [PATCH 100/238] [fix] handle empty response from wikipedia engine - closes #1114 --- searx/engines/wikipedia.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py index 4dae735d..690da72f 100644 --- a/searx/engines/wikipedia.py +++ b/searx/engines/wikipedia.py @@ -79,6 +79,9 @@ def response(resp): # wikipedia article's unique id # first valid id is assumed to be the requested article + if 'pages' not in search_result['query']: + return results + for article_id in search_result['query']['pages']: page = search_result['query']['pages'][article_id] if int(article_id) > 0: From fc457569f757dd10ff55393f472ea9ed49a42374 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 21 Dec 2019 21:13:43 +0100 Subject: [PATCH 101/238] [fix] pep8 --- searx/engines/gigablast.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py index 2a5067bc..5af593e3 100644 --- a/searx/engines/gigablast.py +++ b/searx/engines/gigablast.py @@ -43,7 +43,7 @@ content_xpath = './/sum' supported_languages_url = 'https://gigablast.com/search?&rxikd=1' -extra_param = '' # gigablast requires a random extra parameter +extra_param = '' # gigablast requires a random extra parameter # which can be extracted from the source code of the search page From 52ccaa7acc0eeeb452938a2a8758906430ece077 Mon Sep 17 00:00:00 2001 From: Adam Tauber Date: Sat, 21 Dec 2019 21:15:09 +0100 Subject: [PATCH 102/238] [mod] remove useless engine unit tests These tests are not able to detect engine errors if the upstream site changes. --- tests/unit/engines/__init__.py | 0 tests/unit/engines/pubmed.py | 37 -- tests/unit/engines/seedpeer_fixture.html | 110 ---- tests/unit/engines/test_acgsou.py | 78 --- tests/unit/engines/test_archlinux.py | 111 ---- tests/unit/engines/test_arxiv.py | 58 -- tests/unit/engines/test_base.py | 91 ---- tests/unit/engines/test_bing.py | 178 ------ tests/unit/engines/test_bing_images.py | 132 ----- tests/unit/engines/test_bing_news.py | 147 ----- tests/unit/engines/test_bing_videos.py | 72 --- tests/unit/engines/test_btdigg.py | 112 ---- tests/unit/engines/test_currency_convert.py | 56 -- tests/unit/engines/test_dailymotion.py | 112 ---- tests/unit/engines/test_deezer.py | 57 -- tests/unit/engines/test_deviantart.py | 24 - tests/unit/engines/test_digbt.py | 61 --- tests/unit/engines/test_digg.py | 16 - tests/unit/engines/test_doku.py | 79 --- tests/unit/engines/test_duckduckgo.py | 106 ---- .../engines/test_duckduckgo_definitions.py | 255 --------- tests/unit/engines/test_duckduckgo_images.py | 75 --- tests/unit/engines/test_duden.py | 47 -- tests/unit/engines/test_dummy.py | 26 - tests/unit/engines/test_faroo.py | 113 ---- tests/unit/engines/test_fdroid.py | 60 -- tests/unit/engines/test_flickr.py | 142 ----- tests/unit/engines/test_flickr_noapi.py | 357 ------------ tests/unit/engines/test_framalibre.py | 103 ---- tests/unit/engines/test_frinkiac.py | 50 -- tests/unit/engines/test_genius.py | 231 -------- tests/unit/engines/test_gigablast.py | 119 ---- tests/unit/engines/test_github.py | 61 --- tests/unit/engines/test_google.py | 194 ------- tests/unit/engines/test_google_images.py | 27 - tests/unit/engines/test_google_news.py | 102 ---- tests/unit/engines/test_google_videos.py | 79 --- tests/unit/engines/test_ina.py | 64 --- tests/unit/engines/test_kickass.py | 397 -------------- tests/unit/engines/test_mediawiki.py | 130 ----- tests/unit/engines/test_mixcloud.py | 67 --- tests/unit/engines/test_nyaa.py | 124 ----- tests/unit/engines/test_openstreetmap.py | 199 ------- tests/unit/engines/test_pdbe.py | 109 ---- tests/unit/engines/test_photon.py | 166 ------ tests/unit/engines/test_piratebay.py | 166 ------ tests/unit/engines/test_qwant.py | 339 ------------ tests/unit/engines/test_reddit.py | 71 --- tests/unit/engines/test_scanr_structures.py | 175 ------ tests/unit/engines/test_searchcode_code.py | 75 --- tests/unit/engines/test_searchcode_doc.py | 70 --- tests/unit/engines/test_seedpeer.py | 66 --- tests/unit/engines/test_soundcloud.py | 192 ------- tests/unit/engines/test_spotify.py | 124 ----- tests/unit/engines/test_stackoverflow.py | 106 ---- tests/unit/engines/test_startpage.py | 67 --- tests/unit/engines/test_tokyotoshokan.py | 110 ---- tests/unit/engines/test_torrentz.py | 87 --- tests/unit/engines/test_twitter.py | 502 ----------------- tests/unit/engines/test_unsplash.py | 38 -- tests/unit/engines/test_vimeo.py | 36 -- tests/unit/engines/test_wikidata.py | 514 ------------------ tests/unit/engines/test_wikipedia.py | 263 --------- tests/unit/engines/test_wolframalpha_api.py | 166 ------ tests/unit/engines/test_wolframalpha_noapi.py | 224 -------- tests/unit/engines/test_www1x.py | 14 - tests/unit/engines/test_yacy.py | 96 ---- tests/unit/engines/test_yahoo.py | 190 ------- tests/unit/engines/test_yahoo_news.py | 150 ----- tests/unit/engines/test_youtube_api.py | 111 ---- tests/unit/engines/test_youtube_noapi.py | 124 ----- tests/unit/engines/unsplash_fixture.json | 241 -------- 72 files changed, 9251 deletions(-) delete mode 100644 tests/unit/engines/__init__.py delete mode 100644 tests/unit/engines/pubmed.py delete mode 100644 tests/unit/engines/seedpeer_fixture.html delete mode 100644 tests/unit/engines/test_acgsou.py delete mode 100644 tests/unit/engines/test_archlinux.py delete mode 100644 tests/unit/engines/test_arxiv.py delete mode 100644 tests/unit/engines/test_base.py delete mode 100644 tests/unit/engines/test_bing.py delete mode 100644 tests/unit/engines/test_bing_images.py delete mode 100644 tests/unit/engines/test_bing_news.py delete mode 100644 tests/unit/engines/test_bing_videos.py delete mode 100644 tests/unit/engines/test_btdigg.py delete mode 100644 tests/unit/engines/test_currency_convert.py delete mode 100644 tests/unit/engines/test_dailymotion.py delete mode 100644 tests/unit/engines/test_deezer.py delete mode 100644 tests/unit/engines/test_deviantart.py delete mode 100644 tests/unit/engines/test_digbt.py delete mode 100644 tests/unit/engines/test_digg.py delete mode 100644 tests/unit/engines/test_doku.py delete mode 100644 tests/unit/engines/test_duckduckgo.py delete mode 100644 tests/unit/engines/test_duckduckgo_definitions.py delete mode 100644 tests/unit/engines/test_duckduckgo_images.py delete mode 100644 tests/unit/engines/test_duden.py delete mode 100644 tests/unit/engines/test_dummy.py delete mode 100644 tests/unit/engines/test_faroo.py delete mode 100644 tests/unit/engines/test_fdroid.py delete mode 100644 tests/unit/engines/test_flickr.py delete mode 100644 tests/unit/engines/test_flickr_noapi.py delete mode 100644 tests/unit/engines/test_framalibre.py delete mode 100644 tests/unit/engines/test_frinkiac.py delete mode 100644 tests/unit/engines/test_genius.py delete mode 100644 tests/unit/engines/test_gigablast.py delete mode 100644 tests/unit/engines/test_github.py delete mode 100644 tests/unit/engines/test_google.py delete mode 100644 tests/unit/engines/test_google_images.py delete mode 100644 tests/unit/engines/test_google_news.py delete mode 100644 tests/unit/engines/test_google_videos.py delete mode 100644 tests/unit/engines/test_ina.py delete mode 100644 tests/unit/engines/test_kickass.py delete mode 100644 tests/unit/engines/test_mediawiki.py delete mode 100644 tests/unit/engines/test_mixcloud.py delete mode 100644 tests/unit/engines/test_nyaa.py delete mode 100644 tests/unit/engines/test_openstreetmap.py delete mode 100644 tests/unit/engines/test_pdbe.py delete mode 100644 tests/unit/engines/test_photon.py delete mode 100644 tests/unit/engines/test_piratebay.py delete mode 100644 tests/unit/engines/test_qwant.py delete mode 100644 tests/unit/engines/test_reddit.py delete mode 100644 tests/unit/engines/test_scanr_structures.py delete mode 100644 tests/unit/engines/test_searchcode_code.py delete mode 100644 tests/unit/engines/test_searchcode_doc.py delete mode 100644 tests/unit/engines/test_seedpeer.py delete mode 100644 tests/unit/engines/test_soundcloud.py delete mode 100644 tests/unit/engines/test_spotify.py delete mode 100644 tests/unit/engines/test_stackoverflow.py delete mode 100644 tests/unit/engines/test_startpage.py delete mode 100644 tests/unit/engines/test_tokyotoshokan.py delete mode 100644 tests/unit/engines/test_torrentz.py delete mode 100644 tests/unit/engines/test_twitter.py delete mode 100644 tests/unit/engines/test_unsplash.py delete mode 100644 tests/unit/engines/test_vimeo.py delete mode 100644 tests/unit/engines/test_wikidata.py delete mode 100644 tests/unit/engines/test_wikipedia.py delete mode 100644 tests/unit/engines/test_wolframalpha_api.py delete mode 100644 tests/unit/engines/test_wolframalpha_noapi.py delete mode 100644 tests/unit/engines/test_www1x.py delete mode 100644 tests/unit/engines/test_yacy.py delete mode 100644 tests/unit/engines/test_yahoo.py delete mode 100644 tests/unit/engines/test_yahoo_news.py delete mode 100644 tests/unit/engines/test_youtube_api.py delete mode 100644 tests/unit/engines/test_youtube_noapi.py delete mode 100644 tests/unit/engines/unsplash_fixture.json diff --git a/tests/unit/engines/__init__.py b/tests/unit/engines/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unit/engines/pubmed.py b/tests/unit/engines/pubmed.py deleted file mode 100644 index 370efe06..00000000 --- a/tests/unit/engines/pubmed.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import pubmed -from searx.testing import SearxTestCase - - -class TestPubmedEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = pubmed.request(query, dicto) - self.assertIn('url', params) - self.assertIn('eutils.ncbi.nlm.nih.gov/', params['url']) - self.assertIn('term', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, pubmed.response, None) - self.assertRaises(AttributeError, pubmed.response, []) - self.assertRaises(AttributeError, pubmed.response, '') - self.assertRaises(AttributeError, pubmed.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(pubmed.response(response), []) - - xml_mock = """110 -1 - -""" - - response = mock.Mock(text=xml_mock.encode('utf-8')) - results = pubmed.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['content'], 'No abstract is available for this publication.') diff --git a/tests/unit/engines/seedpeer_fixture.html b/tests/unit/engines/seedpeer_fixture.html deleted file mode 100644 index 28207bfa..00000000 --- a/tests/unit/engines/seedpeer_fixture.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -
-

Verified Narcos season 2 torrents

- - comments | - verified - - Torrent nameAgeSizeSeedsPeersHealth
Narcos season 2 Full Version20 hours681.3 MB28 654 Health
Narcos season 2 Trusted Source12 hours787.1 MB64 220 Health
Full Narcos season 2 Download Usenet24 hours775.5 MB60 236 Health
Narcos season 2 2014 - DIRECT STREAMING Movies17 hours654.1 MB2 391 Health
Narcos season 2 2014 Movies20 hours754.5 MB21 919 Health


Search Binaries

 2 Narcos season 2 Torrents were found

- - comments | - verified - - Torrent nameAgeSizeSeedsPeersHealth
Add to FacebookNarcos Season 2 Complete 720p WebRip EN-SUB x264-[MULVAcoded] S02 19 hours4.39 GB715 183 Health
Add to FacebookNarcos - Season 2 - 720p WEBRiP - x265 HEVC - ShAaNiG 1 day2.48 GB861 332 Health

Related searches for: Narcos season 2


Other suggested searches:

Search for "narcos-season-2" on Torrentz2.eu
Search for "narcos-season-2" on Torrent-Finder
  
- - - \ No newline at end of file diff --git a/tests/unit/engines/test_acgsou.py b/tests/unit/engines/test_acgsou.py deleted file mode 100644 index c01acf5d..00000000 --- a/tests/unit/engines/test_acgsou.py +++ /dev/null @@ -1,78 +0,0 @@ -# coding=utf-8 -from collections import defaultdict -import mock -from searx.engines import acgsou -from searx.testing import SearxTestCase - - -class TestAcgsouEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - dic['pageno'] = 1 - params = acgsou.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('acgsou.com' in params['url']) - - def test_response(self): - resp = mock.Mock(text='') - self.assertEqual(acgsou.response(resp), []) - - html = u""" - - - - - - - - - - - - - - - - - - - - - - - - - - -
testtesttesttesttesttesttesttest
datetestcategory テスト - torrentname テスト - 1MB - - 29 - - - - 211 - - - - 168 - - user
- - """ - - resp = mock.Mock(text=html) - results = acgsou.response(resp) - - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - - r = results[0] - self.assertEqual(r['url'], 'http://www.acgsou.com/show-torrentid.html') - self.assertEqual(r['content'], u'Category: "testcategory テスト".') - self.assertEqual(r['title'], u'torrentname テスト') - self.assertEqual(r['filesize'], 1048576) diff --git a/tests/unit/engines/test_archlinux.py b/tests/unit/engines/test_archlinux.py deleted file mode 100644 index 062f023b..00000000 --- a/tests/unit/engines/test_archlinux.py +++ /dev/null @@ -1,111 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import archlinux -from searx.testing import SearxTestCase - -domains = { - 'all': 'https://wiki.archlinux.org', - 'de': 'https://wiki.archlinux.de', - 'fr': 'https://wiki.archlinux.fr', - 'ja': 'https://wiki.archlinuxjp.org', - 'ro': 'http://wiki.archlinux.ro', - 'tr': 'http://archtr.org/wiki' -} - - -class TestArchLinuxEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - dic['pageno'] = 1 - dic['language'] = 'en-US' - params = archlinux.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('wiki.archlinux.org' in params['url']) - - for lang, name in archlinux.main_langs: - dic['language'] = lang - params = archlinux.request(query, dic) - self.assertTrue(name in params['url']) - - for lang, domain in domains.items(): - dic['language'] = lang - params = archlinux.request(query, dic) - self.assertTrue(domain in params['url']) - - def test_response(self): - response = mock.Mock(text='', - search_params={'language': 'en_US'}) - self.assertEqual(archlinux.response(response), []) - - html = """ -
    -
  • -
    - ATI -
    -
    - Lorem ipsum dolor sit amet -
    -
    - 30 KB (4,630 words) - 19:04, 17 March 2016
    -
  • -
  • - -
    - CPUs with AMDs instruction set "AMD64" -
    -
    - 17 KB (2,722 words) - 20:13, 21 March 2016 -
    -
  • -
  • - -
    - ondemand for AMD and older Intel CPU -
    -
    - 15 KB (2,319 words) - 23:46, 16 March 2016 -
    -
  • -
- """ - - expected = [ - { - 'title': 'ATI', - 'url': 'https://wiki.archlinux.org/index.php/ATI' - }, - { - 'title': 'Frequently asked questions', - 'url': 'https://wiki.archlinux.org/index.php/Frequently_asked_questions' - }, - { - 'title': 'CPU frequency scaling', - 'url': 'https://wiki.archlinux.org/index.php/CPU_frequency_scaling' - } - ] - - response = mock.Mock(text=html) - response.search_params = { - 'language': 'en_US' - } - results = archlinux.response(response) - - self.assertEqual(type(results), list) - self.assertEqual(len(results), len(expected)) - - i = 0 - for exp in expected: - res = results[i] - i += 1 - for key, value in exp.items(): - self.assertEqual(res[key], value) diff --git a/tests/unit/engines/test_arxiv.py b/tests/unit/engines/test_arxiv.py deleted file mode 100644 index 83c4f859..00000000 --- a/tests/unit/engines/test_arxiv.py +++ /dev/null @@ -1,58 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import arxiv -from searx.testing import SearxTestCase - - -class TestBaseEngine(SearxTestCase): - - def test_request(self): - query = 'test_query'.encode('utf-8') - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = arxiv.request(query, dicto) - self.assertIn('url', params) - self.assertIn('export.arxiv.org/api/', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, arxiv.response, None) - self.assertRaises(AttributeError, arxiv.response, []) - self.assertRaises(AttributeError, arxiv.response, '') - self.assertRaises(AttributeError, arxiv.response, '[]') - - response = mock.Mock(content=b''' -''') - self.assertEqual(arxiv.response(response), []) - - xml_mock = b''' - - ArXiv Query: search_query=all:test_query&id_list=&start=0&max_results=1 - http://arxiv.org/api/1 - 2000-01-21T00:00:00-01:00 - 1 - 0 - 1 - - http://arxiv.org/1 - 2000-01-01T00:00:01Z - 2000-01-01T00:00:01Z - Mathematical proof. - Mathematical formula. - - A. B. - - - - - - - -''' - - response = mock.Mock(content=xml_mock) - results = arxiv.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Mathematical proof.') - self.assertEqual(results[0]['content'], 'Mathematical formula.') diff --git a/tests/unit/engines/test_base.py b/tests/unit/engines/test_base.py deleted file mode 100644 index b5da5bde..00000000 --- a/tests/unit/engines/test_base.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import base -from searx.testing import SearxTestCase - - -class TestBaseEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = base.request(query, dicto) - self.assertIn('url', params) - self.assertIn('base-search.net', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, base.response, None) - self.assertRaises(AttributeError, base.response, []) - self.assertRaises(AttributeError, base.response, '') - self.assertRaises(AttributeError, base.response, '[]') - - response = mock.Mock(content=b'') - self.assertEqual(base.response(response), []) - - xml_mock = b""" - - - 0 - 1 - - - - 2000-01-01T01:01:01Z - 1 - cna - us - ftciteseerx - CiteSeerX - Science and more - - Someone - - - Someone - - - Science and more - - Science, and even more. - - The neighbour - - 2001 - 2001 - - text - - - 1 - - - application/pdf - - - application/pdf - - - http://example.org/ - - http://example.org - http://example.org - - en - - Under the example.org licence - 1 - - eng - - - -""" - - response = mock.Mock(content=xml_mock) - results = base.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Science and more') - self.assertEqual(results[0]['content'], 'Science, and even more.') diff --git a/tests/unit/engines/test_bing.py b/tests/unit/engines/test_bing.py deleted file mode 100644 index 38703473..00000000 --- a/tests/unit/engines/test_bing.py +++ /dev/null @@ -1,178 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import bing -from searx.testing import SearxTestCase - - -class TestBingEngine(SearxTestCase): - - def test_request(self): - bing.supported_languages = ['en', 'fr', 'zh-CHS', 'zh-CHT', 'pt-PT', 'pt-BR'] - query = u'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - params = bing.request(query.encode('utf-8'), dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('language%3AFR' in params['url']) - self.assertTrue('bing.com' in params['url']) - - dicto['language'] = 'all' - params = bing.request(query.encode('utf-8'), dicto) - self.assertTrue('language' in params['url']) - - def test_response(self): - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - self.assertRaises(AttributeError, bing.response, None) - self.assertRaises(AttributeError, bing.response, []) - self.assertRaises(AttributeError, bing.response, '') - self.assertRaises(AttributeError, bing.response, '[]') - - response = mock.Mock(text='') - response.search_params = dicto - self.assertEqual(bing.response(response), []) - - response = mock.Mock(text='') - response.search_params = dicto - self.assertEqual(bing.response(response), []) - - html = """ -
-
- 23 900 000 résultats -
-
    -
    -
    - -
    this.meta.com - - - - -
    -

    This should be the content.

    -
    -
    -
-
- """ - response = mock.Mock(text=html) - response.search_params = dicto - results = bing.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'This should be the title') - self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') - self.assertEqual(results[0]['content'], 'This should be the content.') - self.assertEqual(results[-1]['number_of_results'], 23900000) - - html = """ -
-
- 9-18 résultats sur 23 900 000 -
-
    -
  1. -
    - -
    this.meta.com - - - - -
    -

    This should be the content.

    -
    -
  2. -
-
- """ - dicto['pageno'] = 2 - response = mock.Mock(text=html) - response.search_params = dicto - results = bing.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'This should be the title') - self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') - self.assertEqual(results[0]['content'], 'This should be the content.') - self.assertEqual(results[-1]['number_of_results'], 23900000) - - html = """ -
-
- 23 900 000 résultats -
-
    -
  1. -
    - -
    this.meta.com - - - - -
    -

    This should be the content.

    -
    -
  2. -
-
- """ - dicto['pageno'] = 33900000 - response = mock.Mock(text=html) - response.search_params = dicto - results = bing.response(response) - self.assertEqual(bing.response(response), []) - - def test_fetch_supported_languages(self): - html = """""" - response = mock.Mock(text=html) - results = bing._fetch_supported_languages(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - html = """ - - -
-
-
-
-
-
-
-
-
-
-
- - - """ - response = mock.Mock(text=html) - languages = bing._fetch_supported_languages(response) - self.assertEqual(type(languages), list) - self.assertEqual(len(languages), 3) - self.assertIn('es', languages) - self.assertIn('pt-BR', languages) - self.assertIn('pt-PT', languages) diff --git a/tests/unit/engines/test_bing_images.py b/tests/unit/engines/test_bing_images.py deleted file mode 100644 index a4efcab5..00000000 --- a/tests/unit/engines/test_bing_images.py +++ /dev/null @@ -1,132 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import bing_images -from searx.testing import SearxTestCase - - -class TestBingImagesEngine(SearxTestCase): - - def test_request(self): - bing_images.supported_languages = ['fr-FR', 'en-US'] - bing_images.language_aliases = {} - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - dicto['safesearch'] = 1 - dicto['time_range'] = '' - params = bing_images.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('bing.com' in params['url']) - self.assertTrue('SRCHHPGUSR' in params['cookies']) - self.assertTrue('DEMOTE' in params['cookies']['SRCHHPGUSR']) - self.assertTrue('_EDGE_S' in params['cookies']) - self.assertTrue('fr-fr' in params['cookies']['_EDGE_S']) - - dicto['language'] = 'fr' - params = bing_images.request(query, dicto) - self.assertTrue('_EDGE_S' in params['cookies']) - self.assertTrue('fr-fr' in params['cookies']['_EDGE_S']) - - dicto['language'] = 'all' - params = bing_images.request(query, dicto) - self.assertTrue('_EDGE_S' in params['cookies']) - self.assertTrue('en-us' in params['cookies']['_EDGE_S']) - - def test_response(self): - self.assertRaises(AttributeError, bing_images.response, None) - self.assertRaises(AttributeError, bing_images.response, []) - self.assertRaises(AttributeError, bing_images.response, '') - self.assertRaises(AttributeError, bing_images.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(bing_images.response(response), []) - - response = mock.Mock(text='') - self.assertEqual(bing_images.response(response), []) - - html = """ -
- - -
- """ - html = html.replace('\r\n', '').replace('\n', '').replace('\r', '') - response = mock.Mock(text=html) - results = bing_images.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 3) - self.assertEqual(results[0]['title'], 'Page 1 title') - self.assertEqual(results[0]['url'], 'page_url') - self.assertEqual(results[0]['content'], '') - self.assertEqual(results[0]['thumbnail_src'], 'thumb_url') - self.assertEqual(results[0]['img_src'], 'img_url') - self.assertEqual(results[0]['img_format'], '1 x 1 - jpeg') - self.assertEqual(results[0]['source'], '1.example.org') - - def test_fetch_supported_languages(self): - html = """ -
-
- - -
-
- """ - response = mock.Mock(text=html) - languages = list(bing_images._fetch_supported_languages(response)) - self.assertEqual(len(languages), 3) - self.assertIn('de-DE', languages) - self.assertIn('no-NO', languages) - self.assertIn('es-AR', languages) diff --git a/tests/unit/engines/test_bing_news.py b/tests/unit/engines/test_bing_news.py deleted file mode 100644 index 1155e79c..00000000 --- a/tests/unit/engines/test_bing_news.py +++ /dev/null @@ -1,147 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import bing_news -from searx.testing import SearxTestCase -import lxml - - -class TestBingNewsEngine(SearxTestCase): - - def test_request(self): - bing_news.supported_languages = ['en', 'fr'] - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - dicto['time_range'] = '' - params = bing_news.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('bing.com', params['url']) - self.assertIn('fr', params['url']) - - dicto['language'] = 'all' - params = bing_news.request(query, dicto) - self.assertIn('en', params['url']) - - def test_no_url_in_request_year_time_range(self): - dicto = defaultdict(dict) - query = 'test_query' - dicto['time_range'] = 'year' - params = bing_news.request(query, dicto) - self.assertEqual({}, params['url']) - - def test_response(self): - self.assertRaises(AttributeError, bing_news.response, None) - self.assertRaises(AttributeError, bing_news.response, []) - self.assertRaises(AttributeError, bing_news.response, '') - self.assertRaises(AttributeError, bing_news.response, '[]') - - response = mock.Mock(content='') - self.assertEqual(bing_news.response(response), []) - - response = mock.Mock(content='') - self.assertEqual(bing_news.response(response), []) - - html = """ - - - python - Bing News - https://www.bing.com:443/news/search?q=python&setmkt=en-US&first=1&format=RSS - Search results - - http://10.53.64.9/rsslogo.gif - test - https://www.bing.com:443/news/search?q=test&setmkt=en-US&first=1&format=RSS - - Copyright - - Title - https://www.bing.com/news/apiclick.aspx?ref=FexRss&aid=&tid=c237eccc50bd4758b106a5e3c94fce09&url=http%3a%2f%2furl.of.article%2f&c=xxxxxxxxx&mkt=en-us - Article Content - Tue, 02 Jun 2015 13:37:00 GMT - Infoworld - http://a1.bing4.com/th?id=ON.13371337133713371337133713371337&pid=News - w={0}&h={1}&c=7 - - 620 - 413 - - - Another Title - https://www.bing.com/news/apiclick.aspx?ref=FexRss&aid=&tid=c237eccc50bd4758b106a5e3c94fce09&url=http%3a%2f%2fanother.url.of.article%2f&c=xxxxxxxxx&mkt=en-us - Another Article Content - Tue, 02 Jun 2015 13:37:00 GMT - - -""" # noqa - response = mock.Mock(content=html.encode('utf-8')) - results = bing_news.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://url.of.article/') - self.assertEqual(results[0]['content'], 'Article Content') - self.assertEqual(results[0]['img_src'], 'https://www.bing.com/th?id=ON.13371337133713371337133713371337') - self.assertEqual(results[1]['title'], 'Another Title') - self.assertEqual(results[1]['url'], 'http://another.url.of.article/') - self.assertEqual(results[1]['content'], 'Another Article Content') - self.assertNotIn('img_src', results[1]) - - html = """ - - - python - Bing News - https://www.bing.com:443/news/search?q=python&setmkt=en-US&first=1&format=RSS - Search results - - http://10.53.64.9/rsslogo.gif - test - https://www.bing.com:443/news/search?q=test&setmkt=en-US&first=1&format=RSS - - Copyright - - Title - http://another.url.of.article/ - Article Content - garbage - Infoworld - http://another.bing.com/image - w={0}&h={1}&c=7 - - 620 - 413 - - -""" # noqa - response = mock.Mock(content=html.encode('utf-8')) - results = bing_news.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://another.url.of.article/') - self.assertEqual(results[0]['content'], 'Article Content') - self.assertEqual(results[0]['img_src'], 'http://another.bing.com/image') - - html = """ - - - python - Bing News - https://www.bing.com:443/news/search?q=python&setmkt=en-US&first=1&format=RSS - Search results - - http://10.53.64.9/rsslogo.gif - test - https://www.bing.com:443/news/search?q=test&setmkt=en-US&first=1&format=RSS - - -""" # noqa - - response = mock.Mock(content=html.encode('utf-8')) - results = bing_news.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - html = """gabarge""" - response = mock.Mock(content=html.encode('utf-8')) - self.assertRaises(lxml.etree.XMLSyntaxError, bing_news.response, response) diff --git a/tests/unit/engines/test_bing_videos.py b/tests/unit/engines/test_bing_videos.py deleted file mode 100644 index 5e171eb5..00000000 --- a/tests/unit/engines/test_bing_videos.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import bing_videos -from searx.testing import SearxTestCase - - -class TestBingVideosEngine(SearxTestCase): - - def test_request(self): - bing_videos.supported_languages = ['fr-FR', 'en-US'] - bing_videos.language_aliases = {} - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - dicto['safesearch'] = 0 - dicto['time_range'] = '' - params = bing_videos.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('bing.com' in params['url']) - self.assertTrue('SRCHHPGUSR' in params['cookies']) - self.assertTrue('OFF' in params['cookies']['SRCHHPGUSR']) - self.assertTrue('_EDGE_S' in params['cookies']) - self.assertTrue('fr-fr' in params['cookies']['_EDGE_S']) - - dicto['pageno'] = 2 - dicto['time_range'] = 'day' - dicto['safesearch'] = 2 - params = bing_videos.request(query, dicto) - self.assertTrue('first=29' in params['url']) - self.assertTrue('1440' in params['url']) - self.assertIn('SRCHHPGUSR', params['cookies']) - self.assertTrue('STRICT' in params['cookies']['SRCHHPGUSR']) - - def test_response(self): - self.assertRaises(AttributeError, bing_videos.response, None) - self.assertRaises(AttributeError, bing_videos.response, []) - self.assertRaises(AttributeError, bing_videos.response, '') - self.assertRaises(AttributeError, bing_videos.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(bing_videos.response(response), []) - - response = mock.Mock(text='') - self.assertEqual(bing_videos.response(response), []) - - html = """ - - """ - response = mock.Mock(text=html) - results = bing_videos.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title 1') - self.assertEqual(results[0]['url'], 'https://www.example.com/watch?v=DEADBEEF') - self.assertEqual(results[0]['content'], '01:11 - 100 views - 1 year ago - ExampleTube - Channel 1') - self.assertEqual(results[0]['thumbnail'], 'https://www.bing.com/th?id=OVP.BINGTHUMB1') diff --git a/tests/unit/engines/test_btdigg.py b/tests/unit/engines/test_btdigg.py deleted file mode 100644 index 45ddaa6e..00000000 --- a/tests/unit/engines/test_btdigg.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import btdigg -from searx.testing import SearxTestCase - - -class TestBtdiggEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = btdigg.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('btdig.com', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, btdigg.response, None) - self.assertRaises(AttributeError, btdigg.response, []) - self.assertRaises(AttributeError, btdigg.response, '') - self.assertRaises(AttributeError, btdigg.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(btdigg.response(response), []) - - html = u""" -
-
- -
-
-
- 4217 files 1 GBfound 3 years ago -
-
-
-
-
- -
- found 3 years ago -
-
-
-
-
3.9GBdeLibrosByHuasoFromHell(3de4)

-
Libros H-Z

-
H

H.H. Hollis - El truco de la espada-pdf.zip
17 KB
-
Hagakure - El Libro del Samurai-pdf.zip
95 KB
-
Hamsun, Knut (1859-1952)

-
Hamsun, Knut - Hambre-pdf.zip
786 KB
- -
-
-
- """ - response = mock.Mock(text=html.encode('utf-8')) - results = btdigg.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], '3.9GBdeLibrosByHuasoFromHell(3de4)') - self.assertEqual(results[0]['url'], - 'http://btdig.com/a72f35b7ee3a10928f02bb799e40ae5db701ed1c/pdf?q=pdf&p=1&order=0') - self.assertEqual(results[0]['content'], - '3.9GBdeLibrosByHuasoFromHell(3de4) | ' + - 'Libros H-Z | ' + - 'H H.H. Hollis - El truco de la espada-pdf.zip17 KB | ' + - 'Hagakure - El Libro del Samurai-pdf.zip95 KB | ' + - 'Hamsun, Knut (1859-1952) | Hamsun, Knut - Hambre-pdf.zip786 KB | ' + - '4214 hidden files1 GB') - self.assertEqual(results[0]['filesize'], 1 * 1024 * 1024 * 1024) - self.assertEqual(results[0]['files'], 4217) - self.assertEqual(results[0]['magnetlink'], - 'magnet:?xt=urn:btih:a72f35b7ee3a10928f02bb799e40ae5db701ed1c&dn=3.9GBdeLibrosBy...') - - html = """ -
- -
- """ - response = mock.Mock(text=html.encode('utf-8')) - results = btdigg.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_currency_convert.py b/tests/unit/engines/test_currency_convert.py deleted file mode 100644 index fec19410..00000000 --- a/tests/unit/engines/test_currency_convert.py +++ /dev/null @@ -1,56 +0,0 @@ -from collections import defaultdict -from datetime import datetime -import mock -from searx.engines import currency_convert -from searx.testing import SearxTestCase - - -class TestCurrencyConvertEngine(SearxTestCase): - - def test_request(self): - query = b'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = currency_convert.request(query, dicto) - self.assertNotIn('url', params) - - query = b'convert 10 Pound Sterlings to United States Dollars' - params = currency_convert.request(query, dicto) - self.assertIn('url', params) - self.assertIn('duckduckgo.com', params['url']) - self.assertIn('GBP', params['url']) - self.assertIn('USD', params['url']) - - def test_response(self): - dicto = defaultdict(dict) - dicto['amount'] = float(10) - dicto['from'] = "GBP" - dicto['to'] = "USD" - dicto['from_name'] = "pound sterling" - dicto['to_name'] = "United States dollar" - response = mock.Mock(text='a,b,c,d', search_params=dicto) - self.assertEqual(currency_convert.response(response), []) - body = """ddg_spice_currency( - { - "conversion":{ - "converted-amount": "0.5" - }, - "topConversions":[ - { - }, - { - } - ] - } - ); - """ - response = mock.Mock(text=body, search_params=dicto) - results = currency_convert.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['answer'], '10.0 GBP = 5.0 USD, 1 GBP (pound sterling)' + - ' = 0.5 USD (United States dollar)') - - target_url = 'https://duckduckgo.com/js/spice/currency/1/{}/{}'.format( - dicto['from'], dicto['to']) - self.assertEqual(results[0]['url'], target_url) diff --git a/tests/unit/engines/test_dailymotion.py b/tests/unit/engines/test_dailymotion.py deleted file mode 100644 index ad7f3d28..00000000 --- a/tests/unit/engines/test_dailymotion.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import dailymotion -from searx.testing import SearxTestCase - - -class TestDailymotionEngine(SearxTestCase): - - def test_request(self): - dailymotion.supported_languages = ['en', 'fr'] - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - dicto['language'] = 'fr-FR' - params = dailymotion.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('dailymotion.com' in params['url']) - self.assertTrue('fr' in params['url']) - - dicto['language'] = 'all' - params = dailymotion.request(query, dicto) - self.assertTrue('en' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, dailymotion.response, None) - self.assertRaises(AttributeError, dailymotion.response, []) - self.assertRaises(AttributeError, dailymotion.response, '') - self.assertRaises(AttributeError, dailymotion.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(dailymotion.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(dailymotion.response(response), []) - - json = """ - { - "page": 1, - "limit": 5, - "explicit": false, - "total": 289487, - "has_more": true, - "list": [ - { - "created_time": 1422173451, - "title": "Title", - "description": "Description", - "duration": 81, - "url": "http://www.url", - "thumbnail_360_url": "http://thumbnail", - "id": "x2fit7q" - } - ] - } - """ - response = mock.Mock(text=json) - results = dailymotion.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://www.url') - self.assertEqual(results[0]['content'], 'Description') - self.assertIn('x2fit7q', results[0]['embedded']) - - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.dailymotion.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json) - results = dailymotion.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - def test_fetch_supported_languages(self): - json = r""" - {"list":[{"code":"af","name":"Afrikaans","native_name":"Afrikaans", - "localized_name":"Afrikaans","display_name":"Afrikaans"}, - {"code":"ar","name":"Arabic","native_name":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629", - "localized_name":"Arabic","display_name":"Arabic"}, - {"code":"la","name":"Latin","native_name":null, - "localized_name":"Latin","display_name":"Latin"} - ]} - """ - response = mock.Mock(text=json) - languages = dailymotion._fetch_supported_languages(response) - self.assertEqual(type(languages), dict) - self.assertEqual(len(languages), 3) - self.assertIn('af', languages) - self.assertIn('ar', languages) - self.assertIn('la', languages) - - self.assertEqual(type(languages['af']), dict) - self.assertEqual(type(languages['ar']), dict) - self.assertEqual(type(languages['la']), dict) - - self.assertIn('name', languages['af']) - self.assertIn('name', languages['ar']) - self.assertNotIn('name', languages['la']) - - self.assertIn('english_name', languages['af']) - self.assertIn('english_name', languages['ar']) - self.assertIn('english_name', languages['la']) - - self.assertEqual(languages['af']['name'], 'Afrikaans') - self.assertEqual(languages['af']['english_name'], 'Afrikaans') - self.assertEqual(languages['ar']['name'], u'العربية') - self.assertEqual(languages['ar']['english_name'], 'Arabic') - self.assertEqual(languages['la']['english_name'], 'Latin') diff --git a/tests/unit/engines/test_deezer.py b/tests/unit/engines/test_deezer.py deleted file mode 100644 index 5b9f55c3..00000000 --- a/tests/unit/engines/test_deezer.py +++ /dev/null @@ -1,57 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import deezer -from searx.testing import SearxTestCase - - -class TestDeezerEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = deezer.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('deezer.com' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, deezer.response, None) - self.assertRaises(AttributeError, deezer.response, []) - self.assertRaises(AttributeError, deezer.response, '') - self.assertRaises(AttributeError, deezer.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(deezer.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(deezer.response(response), []) - - json = r""" - {"data":[ - {"id":100, "title":"Title of track", - "link":"https:\/\/www.deezer.com\/track\/1094042","duration":232, - "artist":{"id":200,"name":"Artist Name", - "link":"https:\/\/www.deezer.com\/artist\/1217","type":"artist"}, - "album":{"id":118106,"title":"Album Title","type":"album"},"type":"track"} - ]} - """ - response = mock.Mock(text=json) - results = deezer.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title of track') - self.assertEqual(results[0]['url'], 'https://www.deezer.com/track/1094042') - self.assertEqual(results[0]['content'], 'Artist Name - Album Title - Title of track') - self.assertTrue('100' in results[0]['embedded']) - - json = r""" - {"data":[ - {"id":200,"name":"Artist Name", - "link":"https:\/\/www.deezer.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json) - results = deezer.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_deviantart.py b/tests/unit/engines/test_deviantart.py deleted file mode 100644 index a3115103..00000000 --- a/tests/unit/engines/test_deviantart.py +++ /dev/null @@ -1,24 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import deviantart -from searx.testing import SearxTestCase - - -class TestDeviantartEngine(SearxTestCase): - - def test_request(self): - dicto = defaultdict(dict) - query = 'test_query' - dicto['pageno'] = 0 - dicto['time_range'] = '' - params = deviantart.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('deviantart.com' in params['url']) - - def test_no_url_in_request_year_time_range(self): - dicto = defaultdict(dict) - query = 'test_query' - dicto['time_range'] = 'year' - params = deviantart.request(query, dicto) - self.assertEqual({}, params['url']) diff --git a/tests/unit/engines/test_digbt.py b/tests/unit/engines/test_digbt.py deleted file mode 100644 index 31c2ecab..00000000 --- a/tests/unit/engines/test_digbt.py +++ /dev/null @@ -1,61 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import digbt -from searx.testing import SearxTestCase - - -class TestDigBTEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = digbt.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('digbt.org', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, digbt.response, None) - self.assertRaises(AttributeError, digbt.response, []) - self.assertRaises(AttributeError, digbt.response, '') - self.assertRaises(AttributeError, digbt.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(digbt.response(response), []) - - html = """ - - -
-
- - The Big Bang Theory - - 4 hours ago -
-
-
    -
  • The Big Bang Theory 2.9 GB
  • -
  • ....
  • -
-
-
- Files: 1 Size: 2.9 GB Downloads: 1 Updated: 4 hours ago -     - - magnet-link - -     -
-
- """ - response = mock.Mock(text=html.encode('utf-8')) - results = digbt.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'The Big Bang Theory') - self.assertEqual(results[0]['url'], 'https://digbt.org/The-Big-Bang-Theory-d2.html') - self.assertEqual(results[0]['content'], 'The Big Bang Theory 2.9 GB ....') - self.assertEqual(results[0]['filesize'], 3113851289) - self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:a&dn=The+Big+Bang+Theory') diff --git a/tests/unit/engines/test_digg.py b/tests/unit/engines/test_digg.py deleted file mode 100644 index 8bc4c67c..00000000 --- a/tests/unit/engines/test_digg.py +++ /dev/null @@ -1,16 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import digg -from searx.testing import SearxTestCase - - -class TestDiggEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = digg.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('digg.com', params['url']) diff --git a/tests/unit/engines/test_doku.py b/tests/unit/engines/test_doku.py deleted file mode 100644 index 22ddb7a7..00000000 --- a/tests/unit/engines/test_doku.py +++ /dev/null @@ -1,79 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import doku -from searx.testing import SearxTestCase - - -class TestDokuEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - params = doku.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - - def test_response(self): - self.assertRaises(AttributeError, doku.response, None) - self.assertRaises(AttributeError, doku.response, []) - self.assertRaises(AttributeError, doku.response, '') - self.assertRaises(AttributeError, doku.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(doku.response(response), []) - - html = u""" -
-

Pages trouvées :

- -
-
- """ - response = mock.Mock(text=html) - results = doku.response(response) - expected = [{'content': '', 'title': 'xfconf-query', 'url': 'http://localhost:8090/xfconf-query'}] - self.assertEqual(doku.response(response), expected) - - html = u""" -
-
xvnc: 40 Occurrences trouvées
-
er = /usr/bin/Xvnc - server_args = -inetd -query localhost -geometry 640x480 ... er = /usr/bin/Xvnc - server_args = -inetd -query localhost -geometry 800x600 ... er = /usr/bin/Xvnc - server_args = -inetd -query localhost -geometry 1024x768 ... er = /usr/bin/Xvnc - server_args = -inetd -query localhost -geometry 1280x1024 -depth 8 -Sec
-
postfix_mysql_tls_sasl_1404: 14 Occurrences trouvées
-
tdepasse - hosts = 127.0.0.1 - dbname = postfix - query = SELECT goto FROM alias WHERE address='%s' AND a... tdepasse - hosts = 127.0.0.1 - dbname = postfix - query = SELECT domain FROM domain WHERE domain='%s' - #optional query to use when relaying for backup MX - #query = SELECT domain FROM domain WHERE domain='%s' and backupmx =
-
bind9: 12 Occurrences trouvées
-
printcmd -;; Got answer: -;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13427 -;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 - -[...] - -;; Query time: 1 msec -;; SERVER: 127.0.0.1#53(127.0.0.1) -;... par la requête (Query time) , entre la première et la deuxième requête.
-
- """ - response = mock.Mock(text=html) - results = doku.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 3) - self.assertEqual(results[0]['title'], 'xvnc') -# FIXME self.assertEqual(results[0]['url'], u'http://this.should.be.the.link/ű') -# FIXME self.assertEqual(results[0]['content'], 'This should be the content.') diff --git a/tests/unit/engines/test_duckduckgo.py b/tests/unit/engines/test_duckduckgo.py deleted file mode 100644 index eb316a40..00000000 --- a/tests/unit/engines/test_duckduckgo.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import load_engine, duckduckgo -from searx.testing import SearxTestCase - - -class TestDuckduckgoEngine(SearxTestCase): - - def test_request(self): - duckduckgo = load_engine({'engine': 'duckduckgo', 'name': 'duckduckgo'}) - - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['time_range'] = '' - - dicto['language'] = 'de-CH' - params = duckduckgo.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('duckduckgo.com', params['url']) - self.assertIn('ch-de', params['url']) - self.assertIn('s=0', params['url']) - - # when ddg uses non standard codes - dicto['language'] = 'zh-HK' - params = duckduckgo.request(query, dicto) - self.assertIn('hk-tzh', params['url']) - - dicto['language'] = 'en-GB' - params = duckduckgo.request(query, dicto) - self.assertIn('uk-en', params['url']) - - # no country given - dicto['language'] = 'en' - params = duckduckgo.request(query, dicto) - self.assertIn('us-en', params['url']) - - def test_no_url_in_request_year_time_range(self): - dicto = defaultdict(dict) - query = 'test_query' - dicto['time_range'] = 'year' - params = duckduckgo.request(query, dicto) - self.assertEqual({}, params['url']) - - def test_response(self): - self.assertRaises(AttributeError, duckduckgo.response, None) - self.assertRaises(AttributeError, duckduckgo.response, []) - self.assertRaises(AttributeError, duckduckgo.response, '') - self.assertRaises(AttributeError, duckduckgo.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(duckduckgo.response(response), []) - - html = u""" - - """ - response = mock.Mock(text=html) - results = duckduckgo.response(response) - self.assertEqual(duckduckgo.response(response), []) - - html = u""" - - """ - response = mock.Mock(text=html) - results = duckduckgo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], u'http://this.should.be.the.link/ű') - self.assertEqual(results[0]['content'], 'This should be the content.') - - def test_fetch_supported_languages(self): - js = """some code...regions:{ - "wt-wt":"All Results","ar-es":"Argentina","au-en":"Australia","at-de":"Austria","be-fr":"Belgium (fr)" - }some more code...""" - response = mock.Mock(text=js) - languages = list(duckduckgo._fetch_supported_languages(response)) - self.assertEqual(len(languages), 5) - self.assertIn('wt-WT', languages) - self.assertIn('es-AR', languages) - self.assertIn('en-AU', languages) - self.assertIn('de-AT', languages) - self.assertIn('fr-BE', languages) diff --git a/tests/unit/engines/test_duckduckgo_definitions.py b/tests/unit/engines/test_duckduckgo_definitions.py deleted file mode 100644 index 37587ed8..00000000 --- a/tests/unit/engines/test_duckduckgo_definitions.py +++ /dev/null @@ -1,255 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import duckduckgo_definitions -from searx.testing import SearxTestCase - - -class TestDDGDefinitionsEngine(SearxTestCase): - - def test_result_to_text(self): - url = '' - text = 'Text' - html_result = 'Html' - result = duckduckgo_definitions.result_to_text(url, text, html_result) - self.assertEqual(result, text) - - html_result = 'Text in link' - result = duckduckgo_definitions.result_to_text(url, text, html_result) - self.assertEqual(result, 'Text in link') - - def test_request(self): - duckduckgo_definitions.supported_languages = ['en-US', 'es-ES'] - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'es' - params = duckduckgo_definitions.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('duckduckgo.com', params['url']) - self.assertIn('headers', params) - self.assertIn('Accept-Language', params['headers']) - self.assertIn('es', params['headers']['Accept-Language']) - - def test_response(self): - self.assertRaises(AttributeError, duckduckgo_definitions.response, None) - self.assertRaises(AttributeError, duckduckgo_definitions.response, []) - self.assertRaises(AttributeError, duckduckgo_definitions.response, '') - self.assertRaises(AttributeError, duckduckgo_definitions.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(duckduckgo_definitions.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(duckduckgo_definitions.response(response), []) - - json = """ - { - "DefinitionSource": "definition source", - "Heading": "heading", - "ImageWidth": 0, - "RelatedTopics": [ - { - "Result": "Top-level domains", - "Icon": { - "URL": "", - "Height": "", - "Width": "" - }, - "FirstURL": "https://first.url", - "Text": "text" - }, - { - "Topics": [ - { - "Result": "result topic", - "Icon": { - "URL": "", - "Height": "", - "Width": "" - }, - "FirstURL": "https://duckduckgo.com/?q=2%2F2", - "Text": "result topic text" - } - ], - "Name": "name" - } - ], - "Entity": "Entity", - "Type": "A", - "Redirect": "", - "DefinitionURL": "http://definition.url", - "AbstractURL": "https://abstract.url", - "Definition": "this is the definition", - "AbstractSource": "abstract source", - "Infobox": { - "content": [ - { - "data_type": "string", - "value": "1999", - "label": "Introduced", - "wiki_order": 0 - } - ], - "meta": [ - { - "data_type": "string", - "value": ".test", - "label": "article_title" - } - ] - }, - "Image": "image.png", - "ImageIsLogo": 0, - "Abstract": "abstract", - "AbstractText": "abstract text", - "AnswerType": "", - "ImageHeight": 0, - "Results": [{ - "Result" : "result title", - "Icon" : { - "URL" : "result url", - "Height" : 16, - "Width" : 16 - }, - "FirstURL" : "result first url", - "Text" : "result text" - } - ], - "Answer": "answer" - } - """ - response = mock.Mock(text=json) - results = duckduckgo_definitions.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 4) - self.assertEqual(results[0]['answer'], 'answer') - self.assertEqual(results[1]['title'], 'heading') - self.assertEqual(results[1]['url'], 'result first url') - self.assertEqual(results[2]['suggestion'], 'text') - self.assertEqual(results[3]['infobox'], 'heading') - self.assertEqual(results[3]['id'], 'https://definition.url') - self.assertEqual(results[3]['entity'], 'Entity') - self.assertIn('abstract', results[3]['content']) - self.assertIn('this is the definition', results[3]['content']) - self.assertEqual(results[3]['img_src'], 'image.png') - self.assertIn('Introduced', results[3]['attributes'][0]['label']) - self.assertIn('1999', results[3]['attributes'][0]['value']) - self.assertIn({'url': 'https://abstract.url', 'title': 'abstract source'}, results[3]['urls']) - self.assertIn({'url': 'http://definition.url', 'title': 'definition source'}, results[3]['urls']) - self.assertIn({'name': 'name', 'suggestions': ['result topic text']}, results[3]['relatedTopics']) - - json = """ - { - "DefinitionSource": "definition source", - "Heading": "heading", - "ImageWidth": 0, - "RelatedTopics": [], - "Entity": "Entity", - "Type": "A", - "Redirect": "", - "DefinitionURL": "", - "AbstractURL": "https://abstract.url", - "Definition": "", - "AbstractSource": "abstract source", - "Image": "", - "ImageIsLogo": 0, - "Abstract": "", - "AbstractText": "abstract text", - "AnswerType": "", - "ImageHeight": 0, - "Results": [], - "Answer": "" - } - """ - response = mock.Mock(text=json) - results = duckduckgo_definitions.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['url'], 'https://abstract.url') - self.assertEqual(results[0]['title'], 'heading') - self.assertEqual(results[0]['content'], '') - - json = """ - { - "DefinitionSource": "definition source", - "Heading": "heading", - "ImageWidth": 0, - "RelatedTopics": [ - { - "Result": "Top-level domains", - "Icon": { - "URL": "", - "Height": "", - "Width": "" - }, - "FirstURL": "https://first.url", - "Text": "heading" - }, - { - "Name": "name" - }, - { - "Topics": [ - { - "Result": "result topic", - "Icon": { - "URL": "", - "Height": "", - "Width": "" - }, - "FirstURL": "https://duckduckgo.com/?q=2%2F2", - "Text": "heading" - } - ], - "Name": "name" - } - ], - "Entity": "Entity", - "Type": "A", - "Redirect": "", - "DefinitionURL": "http://definition.url", - "AbstractURL": "https://abstract.url", - "Definition": "this is the definition", - "AbstractSource": "abstract source", - "Infobox": { - "meta": [ - { - "data_type": "string", - "value": ".test", - "label": "article_title" - } - ] - }, - "Image": "image.png", - "ImageIsLogo": 0, - "Abstract": "abstract", - "AbstractText": "abstract text", - "AnswerType": "", - "ImageHeight": 0, - "Results": [{ - "Result" : "result title", - "Icon" : { - "URL" : "result url", - "Height" : 16, - "Width" : 16 - }, - "Text" : "result text" - } - ], - "Answer": "" - } - """ - response = mock.Mock(text=json) - results = duckduckgo_definitions.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['infobox'], 'heading') - self.assertEqual(results[0]['id'], 'https://definition.url') - self.assertEqual(results[0]['entity'], 'Entity') - self.assertIn('abstract', results[0]['content']) - self.assertIn('this is the definition', results[0]['content']) - self.assertEqual(results[0]['img_src'], 'image.png') - self.assertIn({'url': 'https://abstract.url', 'title': 'abstract source'}, results[0]['urls']) - self.assertIn({'url': 'http://definition.url', 'title': 'definition source'}, results[0]['urls']) - self.assertIn({'name': 'name', 'suggestions': []}, results[0]['relatedTopics']) diff --git a/tests/unit/engines/test_duckduckgo_images.py b/tests/unit/engines/test_duckduckgo_images.py deleted file mode 100644 index 0d152bec..00000000 --- a/tests/unit/engines/test_duckduckgo_images.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import duckduckgo_images -from searx.testing import SearxTestCase - - -class TestDuckduckgoImagesEngine(SearxTestCase): - - def test_request(self): - duckduckgo_images.supported_languages = ['de-CH', 'en-US'] - query = 'test_query' - dicto = defaultdict(dict) - dicto['is_test'] = True - dicto['pageno'] = 1 - dicto['safesearch'] = 0 - dicto['language'] = 'all' - params = duckduckgo_images.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('duckduckgo.com', params['url']) - self.assertIn('s=0', params['url']) - self.assertIn('p=-1', params['url']) - self.assertIn('vqd=12345', params['url']) - - # test paging, safe search and language - dicto['pageno'] = 2 - dicto['safesearch'] = 2 - dicto['language'] = 'de' - params = duckduckgo_images.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('s=50', params['url']) - self.assertIn('p=1', params['url']) - self.assertIn('ch-de', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, duckduckgo_images.response, None) - self.assertRaises(AttributeError, duckduckgo_images.response, []) - self.assertRaises(AttributeError, duckduckgo_images.response, '') - self.assertRaises(AttributeError, duckduckgo_images.response, '[]') - - response = mock.Mock(text='If this error persists, please let us know: ops@duckduckgo.com') - self.assertRaises(Exception, duckduckgo_images.response, response) - - json = u""" - { - "query": "test_query", - "results": [ - { - "title": "Result 1", - "url": "https://site1.url", - "thumbnail": "https://thumb1.nail", - "image": "https://image1" - }, - { - "title": "Result 2", - "url": "https://site2.url", - "thumbnail": "https://thumb2.nail", - "image": "https://image2" - } - ] - } - """ - response = mock.Mock(text=json) - results = duckduckgo_images.response(response) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'Result 1') - self.assertEqual(results[0]['url'], 'https://site1.url') - self.assertEqual(results[0]['thumbnail_src'], 'https://thumb1.nail') - self.assertEqual(results[0]['img_src'], 'https://image1') - self.assertEqual(results[1]['title'], 'Result 2') - self.assertEqual(results[1]['url'], 'https://site2.url') - self.assertEqual(results[1]['thumbnail_src'], 'https://thumb2.nail') - self.assertEqual(results[1]['img_src'], 'https://image2') diff --git a/tests/unit/engines/test_duden.py b/tests/unit/engines/test_duden.py deleted file mode 100644 index 52fc513d..00000000 --- a/tests/unit/engines/test_duden.py +++ /dev/null @@ -1,47 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import duden -from searx.testing import SearxTestCase -from datetime import datetime - - -class TestDudenEngine(SearxTestCase): - - def test_request(self): - query = 'Haus' - dic = defaultdict(dict) - data = [ - [1, 'https://www.duden.de/suchen/dudenonline/Haus'], - [2, 'https://www.duden.de/suchen/dudenonline/Haus?search_api_fulltext=&page=1'] - ] - for page_no, exp_res in data: - dic['pageno'] = page_no - params = duden.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('duden.de' in params['url']) - self.assertEqual(params['url'], exp_res) - - def test_response(self): - resp = mock.Mock(text='') - self.assertEqual(duden.response(resp), []) - - html = """ -
- - This is the title also here - -

This is the content

-
- """ - resp = mock.Mock(text=html) - results = duden.response(resp) - - self.assertEqual(len(results), 1) - self.assertEqual(type(results), list) - - # testing result (dictionary entry) - r = results[0] - self.assertEqual(r['url'], 'https://www.duden.de/rechtschreibung/Haus') - self.assertEqual(r['title'], 'This is the title also here') - self.assertEqual(r['content'], 'This is the content') diff --git a/tests/unit/engines/test_dummy.py b/tests/unit/engines/test_dummy.py deleted file mode 100644 index 9399beaa..00000000 --- a/tests/unit/engines/test_dummy.py +++ /dev/null @@ -1,26 +0,0 @@ -from searx.engines import dummy -from searx.testing import SearxTestCase - - -class TestDummyEngine(SearxTestCase): - - def test_request(self): - test_params = [ - [1, 2, 3], - ['a'], - [], - 1 - ] - for params in test_params: - self.assertEqual(dummy.request(None, params), params) - - def test_response(self): - responses = [ - None, - [], - True, - dict(), - tuple() - ] - for response in responses: - self.assertEqual(dummy.response(response), []) diff --git a/tests/unit/engines/test_faroo.py b/tests/unit/engines/test_faroo.py deleted file mode 100644 index 1bd9f51c..00000000 --- a/tests/unit/engines/test_faroo.py +++ /dev/null @@ -1,113 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import faroo -from searx.testing import SearxTestCase - - -class TestFarooEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - dicto['category'] = 'general' - params = faroo.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('faroo.com', params['url']) - self.assertIn('en', params['url']) - self.assertIn('web', params['url']) - - dicto['language'] = 'all' - params = faroo.request(query, dicto) - self.assertIn('en', params['url']) - - dicto['language'] = 'de-DE' - params = faroo.request(query, dicto) - self.assertIn('de', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, faroo.response, None) - self.assertRaises(AttributeError, faroo.response, []) - self.assertRaises(AttributeError, faroo.response, '') - self.assertRaises(AttributeError, faroo.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(faroo.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(faroo.response(response), []) - - response = mock.Mock(text='{"data": []}', status_code=429) - self.assertRaises(Exception, faroo.response, response) - - json = """ - { - "results": [ - { - "title": "This is the title", - "kwic": "This is the content", - "content": "", - "url": "http://this.is.the.url/", - "iurl": "", - "domain": "css3test.com", - "author": "Jim Dalrymple", - "news": true, - "votes": "10", - "date": 1360622563000, - "related": [] - }, - { - "title": "This is the title2", - "kwic": "This is the content2", - "content": "", - "url": "http://this.is.the.url2/", - "iurl": "", - "domain": "css3test.com", - "author": "Jim Dalrymple", - "news": false, - "votes": "10", - "related": [] - }, - { - "title": "This is the title3", - "kwic": "This is the content3", - "content": "", - "url": "http://this.is.the.url3/", - "iurl": "http://upload.wikimedia.org/optimized.jpg", - "domain": "css3test.com", - "author": "Jim Dalrymple", - "news": false, - "votes": "10", - "related": [] - } - ], - "query": "test", - "suggestions": [], - "count": 100, - "start": 1, - "length": 10, - "time": "15" - } - """ - response = mock.Mock(text=json) - results = faroo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 3) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'http://this.is.the.url/') - self.assertEqual(results[0]['content'], 'This is the content') - self.assertEqual(results[1]['title'], 'This is the title2') - self.assertEqual(results[1]['url'], 'http://this.is.the.url2/') - self.assertEqual(results[1]['content'], 'This is the content2') - self.assertEqual(results[2]['thumbnail'], 'http://upload.wikimedia.org/optimized.jpg') - - json = """ - {} - """ - response = mock.Mock(text=json) - results = faroo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_fdroid.py b/tests/unit/engines/test_fdroid.py deleted file mode 100644 index 42a0a714..00000000 --- a/tests/unit/engines/test_fdroid.py +++ /dev/null @@ -1,60 +0,0 @@ -import mock -from collections import defaultdict -from searx.engines import fdroid -from searx.testing import SearxTestCase - - -class TestFdroidEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - dic['pageno'] = 1 - params = fdroid.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('search.f-droid.org' in params['url']) - - def test_response_empty(self): - resp = mock.Mock(text='') - self.assertEqual(fdroid.response(resp), []) - - def test_response_oneresult(self): - html = """ - - - - test - - - - - - """ - - resp = mock.Mock(text=html) - results = fdroid.response(resp) - - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['url'], 'https://example.com/app.url') - self.assertEqual(results[0]['title'], 'App Example 1') - self.assertEqual(results[0]['content'], 'Description App Example 1 - GPL-3.0-only') - self.assertEqual(results[0]['img_src'], 'https://example.com/appexample.logo.png') diff --git a/tests/unit/engines/test_flickr.py b/tests/unit/engines/test_flickr.py deleted file mode 100644 index be97647c..00000000 --- a/tests/unit/engines/test_flickr.py +++ /dev/null @@ -1,142 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import flickr -from searx.testing import SearxTestCase - - -class TestFlickrEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = flickr.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('flickr.com' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, flickr.response, None) - self.assertRaises(AttributeError, flickr.response, []) - self.assertRaises(AttributeError, flickr.response, '') - self.assertRaises(AttributeError, flickr.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(flickr.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(flickr.response(response), []) - - json = r""" - { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", - "photo": [ - { "id": "15751017054", "owner": "66847915@N08", - "secret": "69c22afc40", "server": "7285", "farm": 8, - "title": "Photo title", "ispublic": 1, - "isfriend": 0, "isfamily": 0, - "description": { "_content": "Description" }, - "ownername": "Owner", - "url_o": "https:\/\/farm8.staticflickr.com\/7285\/15751017054_9178e0f963_o.jpg", - "height_o": "2100", "width_o": "2653", - "url_n": "https:\/\/farm8.staticflickr.com\/7285\/15751017054_69c22afc40_n.jpg", - "height_n": "253", "width_n": "320", - "url_z": "https:\/\/farm8.staticflickr.com\/7285\/15751017054_69c22afc40_z.jpg", - "height_z": "507", "width_z": "640" } - ] }, "stat": "ok" } - """ - response = mock.Mock(text=json) - results = flickr.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Photo title') - self.assertEqual(results[0]['url'], 'https://www.flickr.com/photos/66847915@N08/15751017054') - self.assertTrue('o.jpg' in results[0]['img_src']) - self.assertTrue('n.jpg' in results[0]['thumbnail_src']) - self.assertTrue('Owner' in results[0]['author']) - self.assertTrue('Description' in results[0]['content']) - - json = r""" - { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", - "photo": [ - { "id": "15751017054", "owner": "66847915@N08", - "secret": "69c22afc40", "server": "7285", "farm": 8, - "title": "Photo title", "ispublic": 1, - "isfriend": 0, "isfamily": 0, - "description": { "_content": "Description" }, - "ownername": "Owner", - "url_z": "https:\/\/farm8.staticflickr.com\/7285\/15751017054_69c22afc40_z.jpg", - "height_z": "507", "width_z": "640" } - ] }, "stat": "ok" } - """ - response = mock.Mock(text=json) - results = flickr.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Photo title') - self.assertEqual(results[0]['url'], 'https://www.flickr.com/photos/66847915@N08/15751017054') - self.assertTrue('z.jpg' in results[0]['img_src']) - self.assertTrue('z.jpg' in results[0]['thumbnail_src']) - self.assertTrue('Owner' in results[0]['author']) - self.assertTrue('Description' in results[0]['content']) - - json = r""" - { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", - "photo": [ - { "id": "15751017054", "owner": "66847915@N08", - "secret": "69c22afc40", "server": "7285", "farm": 8, - "title": "Photo title", "ispublic": 1, - "isfriend": 0, "isfamily": 0, - "description": { "_content": "Description" }, - "ownername": "Owner", - "url_o": "https:\/\/farm8.staticflickr.com\/7285\/15751017054_9178e0f963_o.jpg", - "height_o": "2100", "width_o": "2653" } - ] }, "stat": "ok" } - """ - response = mock.Mock(text=json) - results = flickr.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Photo title') - self.assertEqual(results[0]['url'], 'https://www.flickr.com/photos/66847915@N08/15751017054') - self.assertTrue('o.jpg' in results[0]['img_src']) - self.assertTrue('o.jpg' in results[0]['thumbnail_src']) - self.assertTrue('Owner' in results[0]['author']) - self.assertTrue('Description' in results[0]['content']) - - json = r""" - { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", - "photo": [ - { "id": "15751017054", "owner": "66847915@N08", - "secret": "69c22afc40", "server": "7285", "farm": 8, - "title": "Photo title", "ispublic": 1, - "isfriend": 0, "isfamily": 0, - "description": { "_content": "Description" }, - "ownername": "Owner", - "url_n": "https:\/\/farm8.staticflickr.com\/7285\/15751017054_69c22afc40_n.jpg", - "height_n": "253", "width_n": "320" } - ] }, "stat": "ok" } - """ - response = mock.Mock(text=json) - results = flickr.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", - "toto": [] }, "stat": "ok" } - """ - response = mock.Mock(text=json) - results = flickr.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.flickr.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json) - results = flickr.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_flickr_noapi.py b/tests/unit/engines/test_flickr_noapi.py deleted file mode 100644 index 67699f2f..00000000 --- a/tests/unit/engines/test_flickr_noapi.py +++ /dev/null @@ -1,357 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import flickr_noapi -from searx.testing import SearxTestCase - - -class TestFlickrNoapiEngine(SearxTestCase): - - def test_build_flickr_url(self): - url = flickr_noapi.build_flickr_url("uid", "pid") - self.assertIn("uid", url) - self.assertIn("pid", url) - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['time_range'] = '' - params = flickr_noapi.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('flickr.com', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, flickr_noapi.response, None) - self.assertRaises(AttributeError, flickr_noapi.response, []) - self.assertRaises(AttributeError, flickr_noapi.response, '') - self.assertRaises(AttributeError, flickr_noapi.response, '[]') - - response = mock.Mock(text='"modelExport:{"legend":[],"main":{"search-photos-lite-models":[{"photos":{}}]}}') - self.assertEqual(flickr_noapi.response(response), []) - - response = \ - mock.Mock(text='"modelExport:{"legend":[],"main":{"search-photos-lite-models":[{"photos":{"_data":[]}}]}}') - self.assertEqual(flickr_noapi.response(response), []) - - # everthing is ok test - json = """ - modelExport: { - "legend": [ - [ - "search-photos-lite-models", - "0", - "photos", - "_data", - "0" - ] - ], - "main": { - "search-photos-lite-models": [ - { - "photos": { - "_data": [ - { - "_flickrModelRegistry": "photo-lite-models", - "title": "This%20is%20the%20title", - "username": "Owner", - "pathAlias": "klink692", - "realname": "Owner", - "license": 0, - "ownerNsid": "59729010@N00", - "canComment": false, - "commentCount": 14, - "faveCount": 21, - "id": "14001294434", - "sizes": { - "c": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_c.jpg", - "width": 541, - "height": 800, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_c.jpg", - "key": "c" - }, - "h": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_761d32237a_h.jpg", - "width": 1081, - "height": 1600, - "url": "//c4.staticflickr.com/8/7246/14001294434_761d32237a_h.jpg", - "key": "h" - }, - "k": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_f145a2c11a_k.jpg", - "width": 1383, - "height": 2048, - "url": "//c4.staticflickr.com/8/7246/14001294434_f145a2c11a_k.jpg", - "key": "k" - }, - "l": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_b.jpg", - "width": 692, - "height": 1024, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_b.jpg", - "key": "l" - }, - "m": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777.jpg", - "width": 338, - "height": 500, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777.jpg", - "key": "m" - }, - "n": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_n.jpg", - "width": 216, - "height": 320, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_n.jpg", - "key": "n" - }, - "q": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_q.jpg", - "width": 150, - "height": 150, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_q.jpg", - "key": "q" - }, - "s": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_m.jpg", - "width": 162, - "height": 240, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_m.jpg", - "key": "s" - }, - "sq": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_s.jpg", - "width": 75, - "height": 75, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_s.jpg", - "key": "sq" - }, - "t": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_t.jpg", - "width": 68, - "height": 100, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_t.jpg", - "key": "t" - }, - "z": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_z.jpg", - "width": 433, - "height": 640, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_z.jpg", - "key": "z" - } - } - } - ] - } - } - ] - } - } - """ - # Flickr serves search results in a json block named 'modelExport' buried inside a script tag, - # this json is served as a single line terminating with a comma. - json = ''.join(json.split()) + ',\n' - response = mock.Mock(text=json) - results = flickr_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://www.flickr.com/photos/59729010@N00/14001294434') - self.assertIn('k.jpg', results[0]['img_src']) - self.assertIn('n.jpg', results[0]['thumbnail_src']) - self.assertIn('Owner', results[0]['author']) - - # no n size, only the z size - json = """ - modelExport: { - "legend": [ - [ - "search-photos-lite-models", - "0", - "photos", - "_data", - "0" - ] - ], - "main": { - "search-photos-lite-models": [ - { - "photos": { - "_data": [ - { - "_flickrModelRegistry": "photo-lite-models", - "title": "This%20is%20the%20title", - "username": "Owner", - "pathAlias": "klink692", - "realname": "Owner", - "license": 0, - "ownerNsid": "59729010@N00", - "canComment": false, - "commentCount": 14, - "faveCount": 21, - "id": "14001294434", - "sizes": { - "z": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_z.jpg", - "width": 433, - "height": 640, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_z.jpg", - "key": "z" - } - } - } - ] - } - } - ] - } - } - """ - json = ''.join(json.split()) + ',\n' - response = mock.Mock(text=json) - results = flickr_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://www.flickr.com/photos/59729010@N00/14001294434') - self.assertIn('z.jpg', results[0]['img_src']) - self.assertIn('z.jpg', results[0]['thumbnail_src']) - self.assertIn('Owner', results[0]['author']) - - # no z or n size - json = """ - modelExport: { - "legend": [ - [ - "search-photos-lite-models", - "0", - "photos", - "_data", - "0" - ] - ], - "main": { - "search-photos-lite-models": [ - { - "photos": { - "_data": [ - { - "_flickrModelRegistry": "photo-lite-models", - "title": "This%20is%20the%20title", - "username": "Owner", - "pathAlias": "klink692", - "realname": "Owner", - "license": 0, - "ownerNsid": "59729010@N00", - "canComment": false, - "commentCount": 14, - "faveCount": 21, - "id": "14001294434", - "sizes": { - "o": { - "displayUrl": "//farm8.staticflickr.com/7246/14001294434_410f653777_o.jpg", - "width": 433, - "height": 640, - "url": "//c4.staticflickr.com/8/7246/14001294434_410f653777_o.jpg", - "key": "o" - } - } - } - ] - } - } - ] - } - } - """ - json = ''.join(json.split()) + ',\n' - response = mock.Mock(text=json) - results = flickr_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://www.flickr.com/photos/59729010@N00/14001294434') - self.assertIn('o.jpg', results[0]['img_src']) - self.assertIn('o.jpg', results[0]['thumbnail_src']) - self.assertIn('Owner', results[0]['author']) - - # no image test - json = """ - modelExport: { - "legend": [ - [ - "search-photos-lite-models", - "0", - "photos", - "_data", - "0" - ] - ], - "main": { - "search-photos-lite-models": [ - { - "photos": { - "_data": [ - { - "_flickrModelRegistry": "photo-lite-models", - "title": "This is the title", - "username": "Owner", - "pathAlias": "klink692", - "realname": "Owner", - "license": 0, - "ownerNsid": "59729010@N00", - "canComment": false, - "commentCount": 14, - "faveCount": 21, - "id": "14001294434", - "sizes": { - } - } - ] - } - } - ] - } - } - """ - json = ''.join(json.split()) + ',\n' - response = mock.Mock(text=json) - results = flickr_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - # null test - json = """ - modelExport: { - "legend": [null], - "main": { - "search-photos-lite-models": [ - { - "photos": { - "_data": [null] - } - } - ] - } - } - """ - json = ''.join(json.split()) + ',\n' - response = mock.Mock(text=json) - results = flickr_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - # garbage test - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.flickr.com\/artist\/1217","type":"artist"} - ]} - """ - json = ''.join(json.split()) + ',\n' - response = mock.Mock(text=json) - results = flickr_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_framalibre.py b/tests/unit/engines/test_framalibre.py deleted file mode 100644 index 85099637..00000000 --- a/tests/unit/engines/test_framalibre.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import framalibre -from searx.testing import SearxTestCase - - -class TestFramalibreEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = framalibre.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('framalibre.org' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, framalibre.response, None) - self.assertRaises(AttributeError, framalibre.response, []) - self.assertRaises(AttributeError, framalibre.response, '') - self.assertRaises(AttributeError, framalibre.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(framalibre.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(framalibre.response(response), []) - - html = u""" -
-
-
-
- -
-
-

Gogs

- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Gogs est une interface web basée sur git et une bonne alternative à GitHub.

-
-
-
-
- -
-
- """ - response = mock.Mock(text=html) - results = framalibre.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Gogs') - self.assertEqual(results[0]['url'], - 'https://framalibre.org/content/gogs') - self.assertEqual(results[0]['content'], - u"Gogs est une interface web basée sur git et une bonne alternative à GitHub.") diff --git a/tests/unit/engines/test_frinkiac.py b/tests/unit/engines/test_frinkiac.py deleted file mode 100644 index 5ea220cd..00000000 --- a/tests/unit/engines/test_frinkiac.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import frinkiac -from searx.testing import SearxTestCase - - -class TestFrinkiacEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - request_dict = defaultdict(dict) - params = frinkiac.request(query, request_dict) - self.assertTrue('url' in params) - - def test_response(self): - self.assertRaises(AttributeError, frinkiac.response, None) - self.assertRaises(AttributeError, frinkiac.response, []) - self.assertRaises(AttributeError, frinkiac.response, '') - self.assertRaises(AttributeError, frinkiac.response, '[]') - - text = """ -[{"Id":770931, - "Episode":"S06E18", - "Timestamp":534616, - "Filename":""}, - {"Id":1657080, - "Episode":"S12E14", - "Timestamp":910868, - "Filename":""}, - {"Id":1943753, - "Episode":"S14E21", - "Timestamp":773439, - "Filename":""}, - {"Id":107835, - "Episode":"S02E03", - "Timestamp":531709, - "Filename":""}] - """ - - response = mock.Mock(text=text) - results = frinkiac.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 4) - self.assertEqual(results[0]['title'], u'S06E18') - self.assertIn('p=caption', results[0]['url']) - self.assertIn('e=S06E18', results[0]['url']) - self.assertIn('t=534616', results[0]['url']) - self.assertEqual(results[0]['thumbnail_src'], 'https://frinkiac.com/img/S06E18/534616/medium.jpg') - self.assertEqual(results[0]['img_src'], 'https://frinkiac.com/img/S06E18/534616.jpg') diff --git a/tests/unit/engines/test_genius.py b/tests/unit/engines/test_genius.py deleted file mode 100644 index ea721943..00000000 --- a/tests/unit/engines/test_genius.py +++ /dev/null @@ -1,231 +0,0 @@ -from collections import defaultdict -import mock -from datetime import datetime -from searx.engines import genius -from searx.testing import SearxTestCase - - -class TestGeniusEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = genius.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('genius.com' in params['url']) - - def test_response(self): - - json_empty = """ - { - "meta": { - "status": 200 - }, - "response": { - "sections": [ - { - "type": "top_hit", - "hits": [] - }, - { - "type": "song", - "hits": [] - }, - { - "type": "lyric", - "hits": [] - }, - { - "type": "artist", - "hits": [] - }, - { - "type": "album", - "hits": [] - }, - { - "type": "tag", - "hits": [] - }, - { - "type": "video", - "hits": [] - }, - { - "type": "article", - "hits": [] - }, - { - "type": "user", - "hits": [] - } - ] - } - } - """ - - resp = mock.Mock(text=json_empty) - self.assertEqual(genius.response(resp), []) - - json = """ - { - "meta": { - "status": 200 - }, - "response": { - "sections": [ - { - "type": "lyric", - "hits": [ - { - "highlights": [ - { - "property": "lyrics", - "value": "Sample lyrics", - "snippet": true, - "ranges": [] - } - ], - "index": "lyric", - "type": "song", - "result": { - "_type": "song", - "annotation_count": 45, - "api_path": "/songs/52916", - "full_title": "J't'emmerde by MC Jean Gab'1", - "header_image_thumbnail_url": "https://images.genius.com/xxx.300x300x1.jpg", - "header_image_url": "https://images.genius.com/ef9f736a86df3c3b1772f3fb7fbdb21c.1000x1000x1.jpg", - "id": 52916, - "instrumental": false, - "lyrics_owner_id": 15586, - "lyrics_state": "complete", - "lyrics_updated_at": 1498744545, - "path": "/Mc-jean-gab1-jtemmerde-lyrics", - "pyongs_count": 4, - "song_art_image_thumbnail_url": "https://images.genius.com/xxx.300x300x1.jpg", - "stats": { - "hot": false, - "unreviewed_annotations": 0, - "pageviews": 62490 - }, - "title": "J't'emmerde", - "title_with_featured": "J't'emmerde", - "updated_by_human_at": 1498744546, - "url": "https://genius.com/Mc-jean-gab1-jtemmerde-lyrics", - "primary_artist": { - "_type": "artist", - "api_path": "/artists/12691", - "header_image_url": "https://images.genius.com/c7847662a58f8c2b0f02a6e217d60907.960x657x1.jpg", - "id": 12691, - "image_url": "https://s3.amazonaws.com/rapgenius/Mc-jean-gab1.jpg", - "index_character": "m", - "is_meme_verified": false, - "is_verified": false, - "name": "MC Jean Gab'1", - "slug": "Mc-jean-gab1", - "url": "https://genius.com/artists/Mc-jean-gab1" - } - } - } - ] - }, - { - "type": "artist", - "hits": [ - { - "highlights": [], - "index": "artist", - "type": "artist", - "result": { - "_type": "artist", - "api_path": "/artists/191580", - "header_image_url": "https://assets.genius.com/images/default_avatar_300.png?1503090542", - "id": 191580, - "image_url": "https://assets.genius.com/images/default_avatar_300.png?1503090542", - "index_character": "a", - "is_meme_verified": false, - "is_verified": false, - "name": "ASDF Guy", - "slug": "Asdf-guy", - "url": "https://genius.com/artists/Asdf-guy" - } - } - ] - }, - { - "type": "album", - "hits": [ - { - "highlights": [], - "index": "album", - "type": "album", - "result": { - "_type": "album", - "api_path": "/albums/132332", - "cover_art_thumbnail_url": "https://images.genius.com/xxx.300x300x1.jpg", - "cover_art_url": "https://images.genius.com/xxx.600x600x1.jpg", - "full_title": "ASD by A Skylit Drive", - "id": 132332, - "name": "ASD", - "name_with_artist": "ASD (artist: A Skylit Drive)", - "release_date_components": { - "year": 2015, - "month": null, - "day": null - }, - "url": "https://genius.com/albums/A-skylit-drive/Asd", - "artist": { - "_type": "artist", - "api_path": "/artists/48712", - "header_image_url": "https://images.genius.com/814c1551293172c56306d0e310c6aa89.620x400x1.jpg", - "id": 48712, - "image_url": "https://images.genius.com/814c1551293172c56306d0e310c6aa89.620x400x1.jpg", - "index_character": "s", - "is_meme_verified": false, - "is_verified": false, - "name": "A Skylit Drive", - "slug": "A-skylit-drive", - "url": "https://genius.com/artists/A-skylit-drive" - } - } - } - ] - } - ] - } - } - """ - - resp = mock.Mock(text=json) - results = genius.response(resp) - - self.assertEqual(len(results), 3) - self.assertEqual(type(results), list) - - # check lyric parsing - r = results[0] - self.assertEqual(r['url'], 'https://genius.com/Mc-jean-gab1-jtemmerde-lyrics') - self.assertEqual(r['title'], "J't'emmerde by MC Jean Gab'1") - self.assertEqual(r['content'], "Sample lyrics") - self.assertEqual(r['template'], 'videos.html') - self.assertEqual(r['thumbnail'], 'https://images.genius.com/xxx.300x300x1.jpg') - created = datetime.fromtimestamp(1498744545) - self.assertEqual(r['publishedDate'], created) - - # check artist parsing - r = results[1] - self.assertEqual(r['url'], 'https://genius.com/artists/Asdf-guy') - self.assertEqual(r['title'], "ASDF Guy") - self.assertEqual(r['content'], None) - self.assertEqual(r['template'], 'videos.html') - self.assertEqual(r['thumbnail'], 'https://assets.genius.com/images/default_avatar_300.png?1503090542') - - # check album parsing - r = results[2] - self.assertEqual(r['url'], 'https://genius.com/albums/A-skylit-drive/Asd') - self.assertEqual(r['title'], "ASD by A Skylit Drive") - self.assertEqual(r['content'], "Released: 2015") - self.assertEqual(r['template'], 'videos.html') - self.assertEqual(r['thumbnail'], 'https://images.genius.com/xxx.600x600x1.jpg') diff --git a/tests/unit/engines/test_gigablast.py b/tests/unit/engines/test_gigablast.py deleted file mode 100644 index 6b2d2645..00000000 --- a/tests/unit/engines/test_gigablast.py +++ /dev/null @@ -1,119 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import gigablast -from searx.testing import SearxTestCase - - -class TestGigablastEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - dicto['safesearch'] = 0 - dicto['language'] = 'all' - params = gigablast.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('gigablast.com' in params['url']) - self.assertTrue('xx' in params['url']) - - dicto['language'] = 'en-US' - params = gigablast.request(query, dicto) - self.assertTrue('en' in params['url']) - self.assertFalse('en-US' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, gigablast.response, None) - self.assertRaises(AttributeError, gigablast.response, []) - self.assertRaises(AttributeError, gigablast.response, '') - self.assertRaises(AttributeError, gigablast.response, '[]') - - response = mock.Mock(text='{"results": []}') - self.assertEqual(gigablast.response(response), []) - - json = """{"results": [ - { - "title":"South by Southwest 2016", - "dmozEntry":{ - "dmozCatId":1041152, - "directCatId":1, - "dmozCatStr":"Top: Regional: North America: United States", - "dmozTitle":"South by Southwest (SXSW)", - "dmozSum":"Annual music, film, and interactive conference.", - "dmozAnchor":"" - }, - "dmozEntry":{ - "dmozCatId":763945, - "directCatId":1, - "dmozCatStr":"Top: Regional: North America: United States", - "dmozTitle":"South by Southwest (SXSW)", - "dmozSum":"", - "dmozAnchor":"www.sxsw.com" - }, - "dmozEntry":{ - "dmozCatId":761446, - "directCatId":1, - "dmozCatStr":"Top: Regional: North America: United States", - "dmozTitle":"South by Southwest (SXSW)", - "dmozSum":"Music, film, and interactive conference and festival.", - "dmozAnchor":"" - }, - "indirectDmozCatId":1041152, - "indirectDmozCatId":763945, - "indirectDmozCatId":761446, - "contentType":"html", - "sum":"This should be the content.", - "url":"www.sxsw.com", - "hopCount":0, - "size":" 102k", - "sizeInBytes":104306, - "bytesUsedToComputeSummary":70000, - "docId":269411794364, - "docScore":586571136.000000, - "summaryGenTimeMS":12, - "summaryTagdbLookupTimeMS":0, - "summaryTitleRecLoadTimeMS":1, - "site":"www.sxsw.com", - "spidered":1452203608, - "firstIndexedDateUTC":1444167123, - "contentHash32":2170650347, - "language":"English", - "langAbbr":"en" - } -]} - """ - response = mock.Mock(text=json) - results = gigablast.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'South by Southwest 2016') - self.assertEqual(results[0]['url'], 'www.sxsw.com') - self.assertEqual(results[0]['content'], 'This should be the content.') - - def test_fetch_supported_languages(self): - html = """""" - response = mock.Mock(text=html) - results = gigablast._fetch_supported_languages(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - html = """ - - - - - - - - - - - - """ - response = mock.Mock(text=html) - languages = gigablast._fetch_supported_languages(response) - self.assertEqual(type(languages), list) - self.assertEqual(len(languages), 2) - self.assertIn('en', languages) - self.assertIn('zh-TW', languages) diff --git a/tests/unit/engines/test_github.py b/tests/unit/engines/test_github.py deleted file mode 100644 index 460be8c3..00000000 --- a/tests/unit/engines/test_github.py +++ /dev/null @@ -1,61 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import github -from searx.testing import SearxTestCase - - -class TestGitHubEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - params = github.request(query, defaultdict(dict)) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('github.com' in params['url']) - self.assertEqual(params['headers']['Accept'], github.accept_header) - - def test_response(self): - self.assertRaises(AttributeError, github.response, None) - self.assertRaises(AttributeError, github.response, []) - self.assertRaises(AttributeError, github.response, '') - self.assertRaises(AttributeError, github.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(github.response(response), []) - - response = mock.Mock(text='{"items": []}') - self.assertEqual(github.response(response), []) - - json = """ - { - "items": [ - { - "name": "title", - "html_url": "url", - "description": "" - } - ] - } - """ - response = mock.Mock(text=json) - results = github.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'title') - self.assertEqual(results[0]['url'], 'url') - self.assertEqual(results[0]['content'], '') - - json = """ - { - "items": [ - { - "name": "title", - "html_url": "url", - "description": "desc" - } - ] - } - """ - response = mock.Mock(text=json) - results = github.response(response) - self.assertEqual(results[0]['content'], "desc") diff --git a/tests/unit/engines/test_google.py b/tests/unit/engines/test_google.py deleted file mode 100644 index 9d0edd43..00000000 --- a/tests/unit/engines/test_google.py +++ /dev/null @@ -1,194 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -import lxml -from searx.engines import google -from searx.testing import SearxTestCase - - -class TestGoogleEngine(SearxTestCase): - - def mock_response(self, text): - response = mock.Mock(text=text, url='https://www.google.com/search?q=test&start=0&gbv=1&gws_rd=cr') - response.search_params = mock.Mock() - response.search_params.get = mock.Mock(return_value='www.google.com') - return response - - def test_request(self): - google.supported_languages = ['en', 'fr', 'zh-CN', 'iw'] - google.language_aliases = {'he': 'iw'} - - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - dicto['time_range'] = '' - params = google.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('google.fr', params['url']) - self.assertIn('fr', params['url']) - self.assertIn('fr', params['headers']['Accept-Language']) - - dicto['language'] = 'en-US' - params = google.request(query, dicto) - self.assertIn('google.com', params['url']) - self.assertIn('en', params['url']) - self.assertIn('en', params['headers']['Accept-Language']) - - dicto['language'] = 'zh' - params = google.request(query, dicto) - self.assertIn('google.com', params['url']) - self.assertIn('zh-CN', params['url']) - self.assertIn('zh-CN', params['headers']['Accept-Language']) - - dicto['language'] = 'he' - params = google.request(query, dicto) - self.assertIn('google.com', params['url']) - self.assertIn('iw', params['url']) - self.assertIn('iw', params['headers']['Accept-Language']) - - def test_response(self): - self.assertRaises(AttributeError, google.response, None) - self.assertRaises(AttributeError, google.response, []) - self.assertRaises(AttributeError, google.response, '') - self.assertRaises(AttributeError, google.response, '[]') - - response = self.mock_response('') - self.assertEqual(google.response(response), []) - - html = """ -
-
- -
-
-
-
-
- This should be the content. -
-
-
-
-
-
-

-
-
-
- -
- Related searches -
-
-
- -
-

- """ - response = self.mock_response(html) - results = google.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') - self.assertEqual(results[0]['content'], 'This should be the content.') - self.assertEqual(results[1]['suggestion'], 'suggestion title') - - html = """ -
  • -
  • - """ - response = self.mock_response(html) - results = google.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - response = mock.Mock(text='', url='https://sorry.google.com') - response.search_params = mock.Mock() - response.search_params.get = mock.Mock(return_value='www.google.com') - self.assertRaises(RuntimeWarning, google.response, response) - - response = mock.Mock(text='', url='https://www.google.com/sorry/IndexRedirect') - response.search_params = mock.Mock() - response.search_params.get = mock.Mock(return_value='www.google.com') - self.assertRaises(RuntimeWarning, google.response, response) - - def test_parse_images(self): - html = """ -
  • -
    - - - -
    -
  • - """ - dom = lxml.html.fromstring(html) - results = google.parse_images(dom, 'www.google.com') - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['url'], 'http://this.is.the.url/') - self.assertEqual(results[0]['title'], '') - self.assertEqual(results[0]['content'], '') - self.assertEqual(results[0]['img_src'], 'https://this.is.the.image/image.jpg') - - def test_fetch_supported_languages(self): - html = """""" - response = mock.Mock(text=html) - languages = google._fetch_supported_languages(response) - self.assertEqual(type(languages), dict) - self.assertEqual(len(languages), 0) - - html = u""" - - -
    -
    - - - -
    -
    - - - """ - response = mock.Mock(text=html) - languages = google._fetch_supported_languages(response) - self.assertEqual(type(languages), dict) - self.assertEqual(len(languages), 3) - - self.assertIn('en', languages) - self.assertIn('zh-CN', languages) - self.assertIn('zh-TW', languages) - - self.assertEquals(type(languages['en']), dict) - self.assertEquals(type(languages['zh-CN']), dict) - self.assertEquals(type(languages['zh-TW']), dict) - - self.assertIn('name', languages['en']) - self.assertIn('name', languages['zh-CN']) - self.assertIn('name', languages['zh-TW']) - - self.assertEquals(languages['en']['name'], 'English') - self.assertEquals(languages['zh-CN']['name'], u'中文 (简体)') - self.assertEquals(languages['zh-TW']['name'], u'中文 (繁體)') diff --git a/tests/unit/engines/test_google_images.py b/tests/unit/engines/test_google_images.py deleted file mode 100644 index 8366e1b0..00000000 --- a/tests/unit/engines/test_google_images.py +++ /dev/null @@ -1,27 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import google_images -from searx.testing import SearxTestCase - - -class TestGoogleImagesEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['safesearch'] = 1 - dicto['time_range'] = '' - params = google_images.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - - dicto['safesearch'] = 0 - params = google_images.request(query, dicto) - self.assertNotIn('safe', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, google_images.response, None) - self.assertRaises(AttributeError, google_images.response, []) - self.assertRaises(AttributeError, google_images.response, '') - self.assertRaises(AttributeError, google_images.response, '[]') diff --git a/tests/unit/engines/test_google_news.py b/tests/unit/engines/test_google_news.py deleted file mode 100644 index 0a122ca6..00000000 --- a/tests/unit/engines/test_google_news.py +++ /dev/null @@ -1,102 +0,0 @@ -# -*- coding: utf-8 -*- - -from collections import defaultdict -import mock -from searx.engines import google_news -from searx.testing import SearxTestCase - - -class TestGoogleNewsEngine(SearxTestCase): - - def test_request(self): - google_news.supported_languages = ['en-US', 'fr-FR'] - google_news.language_aliases = {} - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - dicto['time_range'] = 'w' - params = google_news.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('fr', params['url']) - - dicto['language'] = 'all' - params = google_news.request(query, dicto) - self.assertIn('url', params) - self.assertNotIn('fr', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, google_news.response, None) - self.assertRaises(AttributeError, google_news.response, []) - self.assertRaises(AttributeError, google_news.response, '') - self.assertRaises(AttributeError, google_news.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(google_news.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(google_news.response(response), []) - - html = u""" -

    Search Results

    -
    -
    -
    - -
    -
    -
    -

    - Example title -

    -
    - - Mac & i - - - - - Mar 21, 2016 -
    -
    Example description
    -
    -
    -
    -
    -
    - - Story image for searx from Golem.de - -
    -

    - Example title 2 -

    -
    - - Golem.de - - - - - Oct 4, 2016 -
    -
    Example description 2
    -
    -
    -
    -
    -
    -
    - - - """ # noqa - response = mock.Mock(text=html) - results = google_news.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], u'Example title') - self.assertEqual(results[0]['url'], 'https://example.com/') - self.assertEqual(results[0]['content'], 'Example description') - self.assertEqual(results[1]['title'], u'Example title 2') - self.assertEqual(results[1]['url'], 'https://example2.com/') - self.assertEqual(results[1]['content'], 'Example description 2') - self.assertEqual(results[1]['img_src'], 'https://example2.com/image.jpg') diff --git a/tests/unit/engines/test_google_videos.py b/tests/unit/engines/test_google_videos.py deleted file mode 100644 index 3b7edf37..00000000 --- a/tests/unit/engines/test_google_videos.py +++ /dev/null @@ -1,79 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import google_videos -from searx.testing import SearxTestCase - - -class TestGoogleVideosEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['safesearch'] = 1 - dicto['time_range'] = '' - params = google_videos.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - - dicto['safesearch'] = 0 - params = google_videos.request(query, dicto) - self.assertNotIn('safe', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, google_videos.response, None) - self.assertRaises(AttributeError, google_videos.response, []) - self.assertRaises(AttributeError, google_videos.response, '') - self.assertRaises(AttributeError, google_videos.response, '[]') - - html = r""" -
    -
    -
    -
    -

    Title 1

    -
    -
    - -
    -
    - Content 1 -
    -
    -
    -
    -

    Title 2

    -
    -
    - -
    -
    - Content 2 -
    -
    -
    -
    - - """ - response = mock.Mock(text=html) - results = google_videos.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['url'], u'url_1') - self.assertEqual(results[0]['title'], u'Title 1') - self.assertEqual(results[0]['content'], u'Content 1') - self.assertEqual(results[1]['url'], u'url_2') - self.assertEqual(results[1]['title'], u'Title 2') - self.assertEqual(results[1]['content'], u'Content 2') diff --git a/tests/unit/engines/test_ina.py b/tests/unit/engines/test_ina.py deleted file mode 100644 index 109a9592..00000000 --- a/tests/unit/engines/test_ina.py +++ /dev/null @@ -1,64 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import ina -from searx.testing import SearxTestCase - - -class TestInaEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = ina.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('ina.fr' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, ina.response, None) - self.assertRaises(AttributeError, ina.response, []) - self.assertRaises(AttributeError, ina.response, '') - self.assertRaises(AttributeError, ina.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(ina.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(ina.response(response), []) - - json = """ - {"content":"\\t
    \\n\\t\\n\ - \\n
    \\n\ -
    \\n\ - \\t\\t\\t\\t\\n\ - \\"Conf\\u00e9rence\\n\ - \\t\\t\\t\\t\\t<\\/a>\\n\ - \\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t

    \\n\ - \\t\\t\\t\\t\\t\\t\\t\ - Conf\\u00e9rence de presse du G\\u00e9n\\u00e9ral de Gaulle <\\/a>\\n\ - <\\/h3>\\n\ -
    \\n27\\/11\\/1967<\\/span>\\n\ - 29321 vues<\\/span>\\n\ - 01h 33m 07s<\\/span>\\n\ - <\\/div>\\n\ -

    VERSION INTEGRALE DE LA CONFERENCE DE PRESSE DU GENERAL DE GAULLE . \ - - PA le Pr\\u00e9sident DE GAULLE : il ouvre les bras et s'assied. DP journalis...<\\/p>\\n\ - <\\/div>\\n<\\/div>\\n" - } - """ - response = mock.Mock(text=json) - results = ina.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], u'Conf\xe9rence de presse du G\xe9n\xe9ral de Gaulle') - self.assertEqual(results[0]['url'], - 'https://www.ina.fr/video/CAF89035682/conference-de-presse-du-general-de-gaulle-video.html') - self.assertEqual(results[0]['content'], - u"VERSION INTEGRALE DE LA CONFERENCE DE PRESSE DU GENERAL DE GAULLE ." - u" - PA le Pr\u00e9sident DE GAULLE : il ouvre les bras et s'assied. DP journalis...") diff --git a/tests/unit/engines/test_kickass.py b/tests/unit/engines/test_kickass.py deleted file mode 100644 index 3a75c669..00000000 --- a/tests/unit/engines/test_kickass.py +++ /dev/null @@ -1,397 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import kickass -from searx.testing import SearxTestCase - - -class TestKickassEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = kickass.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('kickass.cd', params['url']) - self.assertFalse(params['verify']) - - def test_response(self): - self.assertRaises(AttributeError, kickass.response, None) - self.assertRaises(AttributeError, kickass.response, []) - self.assertRaises(AttributeError, kickass.response, '') - self.assertRaises(AttributeError, kickass.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(kickass.response(response), []) - - html = """ - - - - - - - - - - - - - - - - - -
    torrent name - size - - files - - age - - seed - - leech -
    - -
    - - -
    - - This should be the title - - - Posted by - riri in - - Other > Unsorted - - -
    -
    449 bytes42 years101
    - """ - response = mock.Mock(text=html) - results = kickass.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This should be the title') - self.assertEqual(results[0]['url'], 'https://kickass.cd/url.html') - self.assertEqual(results[0]['content'], 'Posted by riri in Other > Unsorted') - self.assertEqual(results[0]['seed'], 10) - self.assertEqual(results[0]['leech'], 1) - self.assertEqual(results[0]['filesize'], 449) - self.assertEqual(results[0]['files'], 4) - self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:MAGNETURL&dn=test') - self.assertEqual(results[0]['torrentfile'], 'http://torcache.net/torrent/53917.torrent?title=test') - - html = """ - - - - - - - - - -
    torrent name - size - - files - - age - - seed - - leech -
    - """ - response = mock.Mock(text=html) - results = kickass.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - html = """ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    torrent name - size - - files - - age - - seed - - leech -
    - -
    - - -
    - - This should be the title - - - Posted by - riri in - - Other > Unsorted - - -
    -
    1 KiB42 years101
    - -
    - - -
    - - This should be the title - - - Posted by - riri in - - Other > Unsorted - - -
    -
    1 MiB42 years91
    - -
    - - -
    - - This should be the title - - - Posted by - riri in - - Other > Unsorted - - -
    -
    1 GiB42 years81
    - -
    - - -
    - - This should be the title - - - Posted by - riri in - - Other > Unsorted - - -
    -
    1 TiB42 years71
    - -
    - - -
    - - This should be the title - - - Posted by - riri in - - Other > Unsorted - - -
    -
    z bytesr2 yearsat
    - """ - response = mock.Mock(text=html) - results = kickass.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 5) - self.assertEqual(results[0]['title'], 'This should be the title') - self.assertEqual(results[0]['url'], 'https://kickass.cd/url.html') - self.assertEqual(results[0]['content'], 'Posted by riri in Other > Unsorted') - self.assertEqual(results[0]['seed'], 10) - self.assertEqual(results[0]['leech'], 1) - self.assertEqual(results[0]['files'], 4) - self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:MAGNETURL&dn=test') - self.assertEqual(results[0]['torrentfile'], 'http://torcache.net/torrent/53917.torrent?title=test') - self.assertEqual(results[0]['filesize'], 1000) - self.assertEqual(results[1]['filesize'], 1000000) - self.assertEqual(results[2]['filesize'], 1000000000) - self.assertEqual(results[3]['filesize'], 1000000000000) - self.assertEqual(results[4]['seed'], 0) - self.assertEqual(results[4]['leech'], 0) - self.assertEqual(results[4]['files'], None) - self.assertEqual(results[4]['filesize'], None) diff --git a/tests/unit/engines/test_mediawiki.py b/tests/unit/engines/test_mediawiki.py deleted file mode 100644 index b8637270..00000000 --- a/tests/unit/engines/test_mediawiki.py +++ /dev/null @@ -1,130 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import mediawiki -from searx.testing import SearxTestCase - - -class TestMediawikiEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr_FR' - params = mediawiki.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('wikipedia.org', params['url']) - self.assertIn('fr', params['url']) - - dicto['language'] = 'all' - params = mediawiki.request(query, dicto) - self.assertIn('en', params['url']) - - mediawiki.base_url = "http://test.url/" - mediawiki.search_url = mediawiki.base_url +\ - 'w/api.php?action=query'\ - '&list=search'\ - '&{query}'\ - '&srprop=timestamp'\ - '&format=json'\ - '&sroffset={offset}'\ - '&srlimit={limit}' # noqa - params = mediawiki.request(query, dicto) - self.assertIn('test.url', params['url']) - - def test_response(self): - dicto = defaultdict(dict) - dicto['language'] = 'fr' - mediawiki.base_url = "https://{language}.wikipedia.org/" - - self.assertRaises(AttributeError, mediawiki.response, None) - self.assertRaises(AttributeError, mediawiki.response, []) - self.assertRaises(AttributeError, mediawiki.response, '') - self.assertRaises(AttributeError, mediawiki.response, '[]') - - response = mock.Mock(text='{}', search_params=dicto) - self.assertEqual(mediawiki.response(response), []) - - response = mock.Mock(text='{"data": []}', search_params=dicto) - self.assertEqual(mediawiki.response(response), []) - - json = """ - { - "query-continue": { - "search": { - "sroffset": 1 - } - }, - "query": { - "searchinfo": { - "totalhits": 29721 - }, - "search": [ - { - "ns": 0, - "title": "This is the title étude", - "timestamp": "2014-12-19T17:42:52Z" - } - ] - } - } - """ - response = mock.Mock(text=json, search_params=dicto) - results = mediawiki.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], u'This is the title étude') - self.assertIn('fr.wikipedia.org', results[0]['url']) - self.assertIn('This_is_the_title', results[0]['url']) - self.assertIn('%C3%A9tude', results[0]['url']) - self.assertEqual(results[0]['content'], '') - - json = """ - { - "query-continue": { - "search": { - "sroffset": 1 - } - }, - "query": { - "searchinfo": { - "totalhits": 29721 - }, - "search": [ - ] - } - } - """ - response = mock.Mock(text=json, search_params=dicto) - results = mediawiki.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - { - "query-continue": { - "search": { - "sroffset": 1 - } - }, - "query": { - } - } - """ - response = mock.Mock(text=json, search_params=dicto) - results = mediawiki.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.mediawiki.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json, search_params=dicto) - results = mediawiki.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_mixcloud.py b/tests/unit/engines/test_mixcloud.py deleted file mode 100644 index 9c79a478..00000000 --- a/tests/unit/engines/test_mixcloud.py +++ /dev/null @@ -1,67 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import mixcloud -from searx.testing import SearxTestCase - - -class TestMixcloudEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = mixcloud.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('mixcloud.com' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, mixcloud.response, None) - self.assertRaises(AttributeError, mixcloud.response, []) - self.assertRaises(AttributeError, mixcloud.response, '') - self.assertRaises(AttributeError, mixcloud.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(mixcloud.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(mixcloud.response(response), []) - - json = """ - {"data":[ - { - "user": { - "url": "http://www.mixcloud.com/user/", - "username": "user", - "name": "User", - "key": "/user/" - }, - "key": "/user/this-is-the-url/", - "created_time": "2014-11-14T13:30:02Z", - "audio_length": 3728, - "slug": "this-is-the-url", - "name": "Title of track", - "url": "http://www.mixcloud.com/user/this-is-the-url/", - "updated_time": "2014-11-14T13:14:10Z" - } - ]} - """ - response = mock.Mock(text=json) - results = mixcloud.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title of track') - self.assertEqual(results[0]['url'], 'http://www.mixcloud.com/user/this-is-the-url/') - self.assertEqual(results[0]['content'], 'User') - self.assertTrue('http://www.mixcloud.com/user/this-is-the-url/' in results[0]['embedded']) - - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.mixcloud.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json) - results = mixcloud.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_nyaa.py b/tests/unit/engines/test_nyaa.py deleted file mode 100644 index 6dcafc6b..00000000 --- a/tests/unit/engines/test_nyaa.py +++ /dev/null @@ -1,124 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import nyaa -from searx.testing import SearxTestCase - - -class TestNyaaEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - dic['pageno'] = 1 - params = nyaa.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('nyaa.si' in params['url']) - - def test_response(self): - resp = mock.Mock(text='') - self.assertEqual(nyaa.response(resp), []) - - html = """ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    Category
    -
    -
    Name
    -
    - - - -
    Link
    -
    - -
    Size
    -
    - -
    Date
    -
    - - - - - - - - -
    - - Anime - English-translated - - - Sample title 1 - - - - 723.7 MiB2017-08-21 11:241312
    - - Anime - English-translated - - - Sample title 2 - - - 8.2 GiB2017-04-08 01:40101206
    - """ - - resp = mock.Mock(text=html) - results = nyaa.response(resp) - - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - - r = results[0] - self.assertTrue(r['url'].find('1') >= 0) - self.assertTrue(r['torrentfile'].find('1.torrent') >= 0) - self.assertTrue(r['content'].find('Anime - English-translated') >= 0) - self.assertTrue(r['content'].find('Downloaded 12 times.') >= 0) - - self.assertEqual(r['title'], 'Sample title 1') - self.assertEqual(r['seed'], 1) - self.assertEqual(r['leech'], 3) - self.assertEqual(r['filesize'], 723700000) - - r = results[1] - self.assertTrue(r['url'].find('2') >= 0) - self.assertTrue(r['magnetlink'].find('magnet:') >= 0) diff --git a/tests/unit/engines/test_openstreetmap.py b/tests/unit/engines/test_openstreetmap.py deleted file mode 100644 index 7b7783f0..00000000 --- a/tests/unit/engines/test_openstreetmap.py +++ /dev/null @@ -1,199 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import openstreetmap -from searx.testing import SearxTestCase - - -class TestOpenstreetmapEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = openstreetmap.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('openstreetmap.org', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, openstreetmap.response, None) - self.assertRaises(AttributeError, openstreetmap.response, []) - self.assertRaises(AttributeError, openstreetmap.response, '') - self.assertRaises(AttributeError, openstreetmap.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(openstreetmap.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(openstreetmap.response(response), []) - - json = """ - [ - { - "place_id": "127732055", - "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright", - "osm_type": "relation", - "osm_id": "7444", - "boundingbox": [ - "48.8155755", - "48.902156", - "2.224122", - "2.4697602" - ], - "lat": "48.8565056", - "lon": "2.3521334", - "display_name": "This is the title", - "class": "place", - "type": "city", - "importance": 0.96893459932191, - "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png", - "address": { - "city": "Paris", - "county": "Paris", - "state": "Île-de-France", - "country": "France", - "country_code": "fr" - }, - "geojson": { - "type": "Polygon", - "coordinates": [ - [ - [ - 2.224122, - 48.854199 - ] - ] - ] - } - } - ] - """ - response = mock.Mock(text=json) - results = openstreetmap.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://openstreetmap.org/relation/7444') - self.assertIn('coordinates', results[0]['geojson']) - self.assertEqual(results[0]['geojson']['coordinates'][0][0][0], 2.224122) - self.assertEqual(results[0]['geojson']['coordinates'][0][0][1], 48.854199) - self.assertEqual(results[0]['address'], None) - self.assertIn('48.8155755', results[0]['boundingbox']) - self.assertIn('48.902156', results[0]['boundingbox']) - self.assertIn('2.224122', results[0]['boundingbox']) - self.assertIn('2.4697602', results[0]['boundingbox']) - - json = """ - [ - { - "place_id": "127732055", - "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright", - "osm_type": "relation", - "osm_id": "7444", - "boundingbox": [ - "48.8155755", - "48.902156", - "2.224122", - "2.4697602" - ], - "lat": "48.8565056", - "lon": "2.3521334", - "display_name": "This is the title", - "class": "tourism", - "type": "city", - "importance": 0.96893459932191, - "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png", - "address": { - "city": "Paris", - "county": "Paris", - "state": "Île-de-France", - "country": "France", - "country_code": "fr", - "address29": "Address" - }, - "geojson": { - "type": "Polygon", - "coordinates": [ - [ - [ - 2.224122, - 48.854199 - ] - ] - ] - } - }, - { - "place_id": "127732055", - "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright", - "osm_type": "relation", - "osm_id": "7444", - "boundingbox": [ - "48.8155755", - "48.902156", - "2.224122", - "2.4697602" - ], - "lat": "48.8565056", - "lon": "2.3521334", - "display_name": "This is the title", - "class": "tourism", - "type": "city", - "importance": 0.96893459932191, - "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png", - "address": { - "city": "Paris", - "county": "Paris", - "state": "Île-de-France", - "country": "France", - "postcode": 75000, - "country_code": "fr" - }, - "geojson": { - "type": "Polygon", - "coordinates": [ - [ - [ - 2.224122, - 48.854199 - ] - ] - ] - } - }, - { - "place_id": "127732055", - "licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright", - "osm_type": "node", - "osm_id": "7444", - "boundingbox": [ - "48.8155755", - "48.902156", - "2.224122", - "2.4697602" - ], - "lat": "48.8565056", - "lon": "2.3521334", - "display_name": "This is the title", - "class": "tourism", - "type": "city", - "importance": 0.96893459932191, - "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png", - "address": { - "city": "Paris", - "county": "Paris", - "state": "Île-de-France", - "country": "France", - "country_code": "fr", - "address29": "Address" - } - } - ] - """ - response = mock.Mock(text=json) - results = openstreetmap.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 3) - self.assertIn('48.8565056', results[2]['geojson']['coordinates']) - self.assertIn('2.3521334', results[2]['geojson']['coordinates']) diff --git a/tests/unit/engines/test_pdbe.py b/tests/unit/engines/test_pdbe.py deleted file mode 100644 index ea5adf9d..00000000 --- a/tests/unit/engines/test_pdbe.py +++ /dev/null @@ -1,109 +0,0 @@ -import mock -from collections import defaultdict -from searx.engines import pdbe -from searx.testing import SearxTestCase - - -class TestPdbeEngine(SearxTestCase): - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - params = pdbe.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue('ebi.ac.uk' in params['url']) - self.assertTrue('data' in params) - self.assertTrue('q' in params['data']) - self.assertTrue(query in params['data']['q']) - self.assertTrue('wt' in params['data']) - self.assertTrue('json' in params['data']['wt']) - self.assertTrue('method' in params) - self.assertTrue(params['method'] == 'POST') - - def test_response(self): - self.assertRaises(AttributeError, pdbe.response, None) - self.assertRaises(AttributeError, pdbe.response, []) - self.assertRaises(AttributeError, pdbe.response, '') - self.assertRaises(AttributeError, pdbe.response, '[]') - - json = """ -{ - "response": { - "docs": [ - { - "citation_title": "X-ray crystal structure of ferric Aplysia limacina myoglobin in different liganded states.", - "citation_year": 1993, - "entry_author_list": [ - "Conti E, Moser C, Rizzi M, Mattevi A, Lionetti C, Coda A, Ascenzi P, Brunori M, Bolognesi M" - ], - "journal": "J. Mol. Biol.", - "journal_page": "498-508", - "journal_volume": "233", - "pdb_id": "2fal", - "status": "REL", - "title": "X-RAY CRYSTAL STRUCTURE OF FERRIC APLYSIA LIMACINA MYOGLOBIN IN DIFFERENT LIGANDED STATES" - } - ], - "numFound": 1, - "start": 0 - }, - "responseHeader": { - "QTime": 0, - "params": { - "q": "2fal", - "wt": "json" - }, - "status": 0 - } -} -""" - - response = mock.Mock(text=json) - results = pdbe.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], - 'X-RAY CRYSTAL STRUCTURE OF FERRIC APLYSIA LIMACINA MYOGLOBIN IN DIFFERENT LIGANDED STATES') - self.assertEqual(results[0]['url'], pdbe.pdbe_entry_url.format(pdb_id='2fal')) - self.assertEqual(results[0]['img_src'], pdbe.pdbe_preview_url.format(pdb_id='2fal')) - self.assertTrue('Conti E' in results[0]['content']) - self.assertTrue('X-ray crystal structure of ferric Aplysia limacina myoglobin in different liganded states.' in - results[0]['content']) - self.assertTrue('1993' in results[0]['content']) - - # Testing proper handling of PDB entries marked as obsolete - json = """ -{ - "response": { - "docs": [ - { - "citation_title": "Obsolete entry test", - "citation_year": 2016, - "entry_author_list": ["Doe J"], - "journal": "J. Obs.", - "journal_page": "1-2", - "journal_volume": "1", - "pdb_id": "xxxx", - "status": "OBS", - "title": "OBSOLETE ENTRY TEST", - "superseded_by": "yyyy" - } - ], - "numFound": 1, - "start": 0 - }, - "responseHeader": { - "QTime": 0, - "params": { - "q": "xxxx", - "wt": "json" - }, - "status": 0 - } -} -""" - response = mock.Mock(text=json) - results = pdbe.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'OBSOLETE ENTRY TEST (OBSOLETE)') - self.assertTrue(results[0]['content'].startswith('This entry has been superseded by')) diff --git a/tests/unit/engines/test_photon.py b/tests/unit/engines/test_photon.py deleted file mode 100644 index 73449788..00000000 --- a/tests/unit/engines/test_photon.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import photon -from searx.testing import SearxTestCase - - -class TestPhotonEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'all' - params = photon.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('photon.komoot.de', params['url']) - - dicto['language'] = 'all' - params = photon.request(query, dicto) - self.assertNotIn('lang', params['url']) - - dicto['language'] = 'al' - params = photon.request(query, dicto) - self.assertNotIn('lang', params['url']) - - dicto['language'] = 'fr' - params = photon.request(query, dicto) - self.assertIn('fr', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, photon.response, None) - self.assertRaises(AttributeError, photon.response, []) - self.assertRaises(AttributeError, photon.response, '') - self.assertRaises(AttributeError, photon.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(photon.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(photon.response(response), []) - - json = """ - { - "features": [ - { - "properties": { - "osm_key": "waterway", - "extent": [ - -1.4508446, - 51.1614997, - -1.4408036, - 51.1525635 - ], - "name": "This is the title", - "state": "England", - "osm_id": 114823817, - "osm_type": "W", - "osm_value": "river", - "city": "Test Valley", - "country": "United Kingdom" - }, - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -1.4458571, - 51.1576661 - ] - } - }, - { - "properties": { - "osm_key": "place", - "street": "Rue", - "state": "Ile-de-France", - "osm_id": 129211377, - "osm_type": "R", - "housenumber": "10", - "postcode": "75011", - "osm_value": "house", - "city": "Paris", - "country": "France" - }, - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 2.3725025, - 48.8654481 - ] - } - }, - { - "properties": { - "osm_key": "amenity", - "street": "Allée", - "name": "Bibliothèque", - "state": "Ile-de-France", - "osm_id": 1028573132, - "osm_type": "N", - "postcode": "75001", - "osm_value": "library", - "city": "Paris", - "country": "France" - }, - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 2.3445634, - 48.862494 - ] - } - }, - { - "properties": { - "osm_key": "amenity", - "osm_id": 1028573132, - "osm_type": "Y", - "postcode": "75001", - "osm_value": "library", - "city": "Paris", - "country": "France" - }, - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 2.3445634, - 48.862494 - ] - } - }, - { - } - ], - "type": "FeatureCollection" - } - """ - response = mock.Mock(text=json) - results = photon.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 3) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['content'], '') - self.assertEqual(results[0]['longitude'], -1.4458571) - self.assertEqual(results[0]['latitude'], 51.1576661) - self.assertIn(-1.4508446, results[0]['boundingbox']) - self.assertIn(51.1614997, results[0]['boundingbox']) - self.assertIn(-1.4408036, results[0]['boundingbox']) - self.assertIn(51.1525635, results[0]['boundingbox']) - self.assertIn('type', results[0]['geojson']) - self.assertEqual(results[0]['geojson']['type'], 'Point') - self.assertEqual(results[0]['address'], None) - self.assertEqual(results[0]['osm']['type'], 'way') - self.assertEqual(results[0]['osm']['id'], 114823817) - self.assertEqual(results[0]['url'], 'https://openstreetmap.org/way/114823817') - self.assertEqual(results[1]['osm']['type'], 'relation') - self.assertEqual(results[2]['address']['name'], u'Bibliothèque') - self.assertEqual(results[2]['address']['house_number'], None) - self.assertEqual(results[2]['address']['locality'], 'Paris') - self.assertEqual(results[2]['address']['postcode'], '75001') - self.assertEqual(results[2]['address']['country'], 'France') - self.assertEqual(results[2]['osm']['type'], 'node') diff --git a/tests/unit/engines/test_piratebay.py b/tests/unit/engines/test_piratebay.py deleted file mode 100644 index 89a78e79..00000000 --- a/tests/unit/engines/test_piratebay.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import piratebay -from searx.testing import SearxTestCase - - -class TestPiratebayEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['category'] = 'Toto' - params = piratebay.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('piratebay.org', params['url']) - self.assertIn('0', params['url']) - - dicto['category'] = 'music' - params = piratebay.request(query, dicto) - self.assertIn('100', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, piratebay.response, None) - self.assertRaises(AttributeError, piratebay.response, []) - self.assertRaises(AttributeError, piratebay.response, '') - self.assertRaises(AttributeError, piratebay.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(piratebay.response(response), []) - - html = """ - - - - - - - - - - - - - - - -
    -
    - Anime
    - (Anime) -
    -
    - - - Magnet link - - - Download - - - VIP - - - - This is the content and should be OK - - 13334
    -
    - Anime
    - (Anime) -
    -
    - - - Magnet link - - - VIP - - - - This is the content and should be OK - - 13334
    - """ - response = mock.Mock(text=html) - results = piratebay.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://thepiratebay.org/this.is.the.link') - self.assertEqual(results[0]['content'], 'This is the content and should be OK') - self.assertEqual(results[0]['seed'], 13) - self.assertEqual(results[0]['leech'], 334) - self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:MAGNETLINK') - self.assertEqual(results[0]['torrentfile'], 'http://torcache.net/torrent/TORRENTFILE.torrent') - - self.assertEqual(results[1]['torrentfile'], None) - - html = """ - - - - - - - - - -
    -
    - Anime
    - (Anime) -
    -
    - - - Magnet link - - - Download - - - VIP - - - - This is the content and should be OK - - sd
    - """ - response = mock.Mock(text=html) - results = piratebay.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://thepiratebay.org/this.is.the.link') - self.assertEqual(results[0]['content'], 'This is the content and should be OK') - self.assertEqual(results[0]['seed'], 0) - self.assertEqual(results[0]['leech'], 0) - self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:MAGNETLINK') - self.assertEqual(results[0]['torrentfile'], 'http://torcache.net/torrent/TORRENTFILE.torrent') - - html = """ - -
    - """ - response = mock.Mock(text=html) - results = piratebay.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_qwant.py b/tests/unit/engines/test_qwant.py deleted file mode 100644 index 6611264f..00000000 --- a/tests/unit/engines/test_qwant.py +++ /dev/null @@ -1,339 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import qwant -from searx.testing import SearxTestCase - - -class TestQwantEngine(SearxTestCase): - - def test_request(self): - qwant.supported_languages = ['en-US', 'fr-CA', 'fr-FR'] - qwant.language_aliases = {} - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - dicto['language'] = 'fr-FR' - qwant.categories = [''] - params = qwant.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('web', params['url']) - self.assertIn('qwant.com', params['url']) - self.assertIn('fr_fr', params['url']) - - dicto['language'] = 'all' - qwant.categories = ['news'] - params = qwant.request(query, dicto) - self.assertFalse('fr' in params['url']) - self.assertIn('news', params['url']) - - dicto['language'] = 'fr' - params = qwant.request(query, dicto) - self.assertIn('fr_fr', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, qwant.response, None) - self.assertRaises(AttributeError, qwant.response, []) - self.assertRaises(AttributeError, qwant.response, '') - self.assertRaises(AttributeError, qwant.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(qwant.response(response), []) - - response = mock.Mock(text='{"data": {}}') - self.assertEqual(qwant.response(response), []) - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "result": { - "items": [ - { - "title": "Title", - "score": 9999, - "url": "http://www.url.xyz", - "source": "...", - "desc": "Description", - "date": "", - "_id": "db0aadd62c2a8565567ffc382f5c61fa", - "favicon": "https://s.qwant.com/fav.ico" - } - ], - "filters": [] - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - qwant.categories = ['general'] - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://www.url.xyz') - self.assertEqual(results[0]['content'], 'Description') - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "result": { - "items": [ - { - "title": "Title", - "score": 9999, - "url": "http://www.url.xyz", - "source": "...", - "media": "http://image.jpg", - "desc": "", - "thumbnail": "http://thumbnail.jpg", - "date": "", - "_id": "db0aadd62c2a8565567ffc382f5c61fa", - "favicon": "https://s.qwant.com/fav.ico" - } - ], - "filters": [] - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - qwant.categories = ['images'] - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://www.url.xyz') - self.assertEqual(results[0]['content'], '') - self.assertEqual(results[0]['thumbnail_src'], 'http://thumbnail.jpg') - self.assertEqual(results[0]['img_src'], 'http://image.jpg') - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "result": { - "items": [ - { - "title": "Title", - "score": 9999, - "url": "http://www.url.xyz", - "source": "...", - "desc": "Description", - "date": 1433260920, - "_id": "db0aadd62c2a8565567ffc382f5c61fa", - "favicon": "https://s.qwant.com/fav.ico" - } - ], - "filters": [] - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - qwant.categories = ['news'] - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://www.url.xyz') - self.assertEqual(results[0]['content'], 'Description') - self.assertIn('publishedDate', results[0]) - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "result": { - "items": [ - { - "title": "Title", - "score": 9999, - "url": "http://www.url.xyz", - "source": "...", - "desc": "Description", - "date": 1433260920, - "_id": "db0aadd62c2a8565567ffc382f5c61fa", - "favicon": "https://s.qwant.com/fav.ico" - } - ], - "filters": [] - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - qwant.categories = ['social media'] - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'http://www.url.xyz') - self.assertEqual(results[0]['content'], 'Description') - self.assertIn('publishedDate', results[0]) - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "result": { - "items": [ - { - "title": "Title", - "score": 9999, - "url": "http://www.url.xyz", - "source": "...", - "desc": "Description", - "date": 1433260920, - "_id": "db0aadd62c2a8565567ffc382f5c61fa", - "favicon": "https://s.qwant.com/fav.ico" - } - ], - "filters": [] - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - qwant.categories = [''] - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "result": { - "filters": [] - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - { - "status": "success", - "data": { - "query": { - "locale": "en_us", - "query": "Test", - "offset": 10 - }, - "cache": { - "key": "e66aa864c00147a0e3a16ff7a5efafde", - "created": 1433092754, - "expiration": 259200, - "status": "miss", - "age": 0 - } - } - } - """ - response = mock.Mock(text=json) - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - { - "status": "success" - } - """ - response = mock.Mock(text=json) - results = qwant.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - def test_fetch_supported_languages(self): - page = """some code... - config_set('project.regionalisation', {"continents":{},"languages": - {"de":{"code":"de","name":"Deutsch","countries":["DE","CH","AT"]}, - "it":{"code":"it","name":"Italiano","countries":["IT","CH"]}}}); - some more code...""" - response = mock.Mock(text=page) - languages = qwant._fetch_supported_languages(response) - self.assertEqual(type(languages), list) - self.assertEqual(len(languages), 5) - self.assertIn('de-DE', languages) - self.assertIn('de-CH', languages) - self.assertIn('de-AT', languages) - self.assertIn('it-IT', languages) - self.assertIn('it-CH', languages) diff --git a/tests/unit/engines/test_reddit.py b/tests/unit/engines/test_reddit.py deleted file mode 100644 index 9c94f4e2..00000000 --- a/tests/unit/engines/test_reddit.py +++ /dev/null @@ -1,71 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import reddit -from searx.testing import SearxTestCase -from datetime import datetime - - -class TestRedditEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - params = reddit.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('reddit.com' in params['url']) - - def test_response(self): - resp = mock.Mock(text='{}') - self.assertEqual(reddit.response(resp), []) - - json = """ - { - "kind": "Listing", - "data": { - "children": [{ - "data": { - "url": "http://google2.com/", - "permalink": "http://google.com/", - "title": "Title number one", - "selftext": "Sample", - "created_utc": 1401219957.0, - "thumbnail": "http://image.com/picture.jpg" - } - }, { - "data": { - "url": "https://reddit2.com/", - "permalink": "https://reddit.com/", - "title": "Title number two", - "selftext": "Dominus vobiscum", - "created_utc": 1438792533.0, - "thumbnail": "self" - } - }] - } - } - """ - - resp = mock.Mock(text=json) - results = reddit.response(resp) - - self.assertEqual(len(results), 2) - self.assertEqual(type(results), list) - - # testing first result (picture) - r = results[0] - self.assertEqual(r['url'], 'http://google.com/') - self.assertEqual(r['title'], 'Title number one') - self.assertEqual(r['template'], 'images.html') - self.assertEqual(r['img_src'], 'http://google2.com/') - self.assertEqual(r['thumbnail_src'], 'http://image.com/picture.jpg') - - # testing second result (self-post) - r = results[1] - self.assertEqual(r['url'], 'https://reddit.com/') - self.assertEqual(r['title'], 'Title number two') - self.assertEqual(r['content'], 'Dominus vobiscum') - created = datetime.fromtimestamp(1438792533.0) - self.assertEqual(r['publishedDate'], created) - self.assertTrue('thumbnail_src' not in r) - self.assertTrue('img_src' not in r) diff --git a/tests/unit/engines/test_scanr_structures.py b/tests/unit/engines/test_scanr_structures.py deleted file mode 100644 index a7b9e918..00000000 --- a/tests/unit/engines/test_scanr_structures.py +++ /dev/null @@ -1,175 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import scanr_structures -from searx.testing import SearxTestCase - - -class TestScanrStructuresEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = scanr_structures.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['data']) - self.assertIn('scanr.enseignementsup-recherche.gouv.fr', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, scanr_structures.response, None) - self.assertRaises(AttributeError, scanr_structures.response, []) - self.assertRaises(AttributeError, scanr_structures.response, '') - self.assertRaises(AttributeError, scanr_structures.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(scanr_structures.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(scanr_structures.response(response), []) - - json = u""" - { - "request": - { - "query":"test_query", - "page":1, - "pageSize":20, - "sortOrder":"RELEVANCY", - "sortDirection":"ASC", - "searchField":"ALL", - "from":0 - }, - "total":2471, - "results":[ - { - "id":"200711886U", - "label":"Laboratoire d'Informatique de Grenoble", - "kind":"RNSR", - "publicEntity":true, - "address":{"city":"Grenoble","departement":"38"}, - "logo":"/static/logos/200711886U.png", - "acronym":"LIG", - "type":{"code":"UR","label":"Unit\xe9 de recherche"}, - "level":2, - "institutions":[ - { - "id":"193819125", - "label":"Grenoble INP", - "acronym":"IPG", - "code":"UMR 5217" - }, - { - "id":"130021397", - "label":"Universit\xe9 de Grenoble Alpes", - "acronym":"UGA", - "code":"UMR 5217" - }, - { - "id":"180089013", - "label":"Centre national de la recherche scientifique", - "acronym":"CNRS", - "code":"UMR 5217" - }, - { - "id":"180089047", - "label":"Institut national de recherche en informatique et en automatique", - "acronym":"Inria", - "code":"UMR 5217" - } - ], - "highlights":[ - { - "type":"projects", - "value":"linguicielles d\xe9velopp\xe9s jusqu'ici par le GETALP\ - du LIG en tant que prototypes op\xe9rationnels.\ -\\r\\nDans le contexte" - }, - { - "type":"acronym", - "value":"LIG" - }, - { - "type":"websiteContents", - "value":"S\xe9lection\\nListe structures\\nD\xe9tail\\n\ - Accueil\\n200711886U : LIG\ - Laboratoire d'Informatique de Grenoble Unit\xe9 de recherche"}, - { - "type":"publications", - "value":"de noms. Nous avons d'abord d\xe9velopp\xe9 LOOV \ - (pour Lig Overlaid OCR in Vid\xe9o), \ - un outil d'extraction des" - } - ] - }, - { - "id":"199511665F", - "label":"Laboratoire Bordelais de Recherche en Informatique", - "kind":"RNSR", - "publicEntity":true, - "address":{"city":"Talence","departement":"33"}, - "logo":"/static/logos/199511665F.png", - "acronym":"LaBRI", - "type":{"code":"UR","label":"Unit\xe9 de recherche"}, - "level":2, - "institutions":[ - { - "id":"130006356", - "label":"Institut polytechnique de Bordeaux", - "acronym":"IPB", - "code":"UMR 5800" - }, - { - "id":"130018351", - "label":"Universit\xe9 de Bordeaux", - "acronym":null, - "code":"UMR 5800" - }, - { - "id":"180089013", - "label":"Centre national de la recherche scientifique", - "acronym":"CNRS", - "code":"UMR 5800" - }, - { - "id":"180089047", - "label":"Institut national de recherche en informatique et en automatique", - "acronym":"Inria", - "code":"UMR 5800" - } - ], - "highlights":[ - { - "type":"websiteContents", - "value":"Samia Kerdjoudj\\n2016-07-05\\nDouble-exponential\ - and triple-exponential bounds for\ - choosability problems parameterized" - }, - { - "type":"publications", - "value":"de cam\xe9ras install\xe9es dans les lieux publiques \ - a tripl\xe9 en 2009, passant de 20 000 \ - \xe0 60 000. Malgr\xe9 le" - } - ] - } - ] - } - """ - response = mock.Mock(text=json) - results = scanr_structures.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], u"Laboratoire d'Informatique de Grenoble") - self.assertEqual(results[0]['url'], 'https://scanr.enseignementsup-recherche.gouv.fr/structure/200711886U') - self.assertEqual(results[0]['content'], - u"linguicielles d\xe9velopp\xe9s jusqu'ici par le GETALP " - u"du LIG en tant que prototypes " - u"op\xe9rationnels. Dans le contexte") - self.assertEqual(results[1]['img_src'], - 'https://scanr.enseignementsup-recherche.gouv.fr//static/logos/199511665F.png') - self.assertEqual(results[1]['content'], - "Samia Kerdjoudj 2016-07-05 Double-exponential and" - " triple-exponential bounds for " - "choosability problems parameterized") - self.assertEqual(results[1]['url'], 'https://scanr.enseignementsup-recherche.gouv.fr/structure/199511665F') - self.assertEqual(results[1]['title'], u"Laboratoire Bordelais de Recherche en Informatique") diff --git a/tests/unit/engines/test_searchcode_code.py b/tests/unit/engines/test_searchcode_code.py deleted file mode 100644 index 955aea11..00000000 --- a/tests/unit/engines/test_searchcode_code.py +++ /dev/null @@ -1,75 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import searchcode_code -from searx.testing import SearxTestCase - - -class TestSearchcodeCodeEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = searchcode_code.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('searchcode.com', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, searchcode_code.response, None) - self.assertRaises(AttributeError, searchcode_code.response, []) - self.assertRaises(AttributeError, searchcode_code.response, '') - self.assertRaises(AttributeError, searchcode_code.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(searchcode_code.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(searchcode_code.response(response), []) - - json = """ - { - "matchterm": "test", - "previouspage": null, - "searchterm": "test", - "query": "test", - "total": 1000, - "page": 0, - "nextpage": 1, - "results": [ - { - "repo": "https://repo", - "linescount": 1044, - "location": "/tests", - "name": "Name", - "url": "https://url", - "md5hash": "ecac6e479edd2b9406c9e08603cec655", - "lines": { - "1": "// Test 011", - "2": "// Source: " - }, - "id": 51223527, - "filename": "File.CPP" - } - ] - } - """ - response = mock.Mock(text=json) - results = searchcode_code.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Name - File.CPP') - self.assertEqual(results[0]['url'], 'https://url') - self.assertEqual(results[0]['repository'], 'https://repo') - self.assertEqual(results[0]['code_language'], 'cpp') - - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.searchcode_code.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json) - results = searchcode_code.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_searchcode_doc.py b/tests/unit/engines/test_searchcode_doc.py deleted file mode 100644 index d02bb7a4..00000000 --- a/tests/unit/engines/test_searchcode_doc.py +++ /dev/null @@ -1,70 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import searchcode_doc -from searx.testing import SearxTestCase - - -class TestSearchcodeDocEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = searchcode_doc.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('searchcode.com', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, searchcode_doc.response, None) - self.assertRaises(AttributeError, searchcode_doc.response, []) - self.assertRaises(AttributeError, searchcode_doc.response, '') - self.assertRaises(AttributeError, searchcode_doc.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(searchcode_doc.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(searchcode_doc.response(response), []) - - json = """ - { - "matchterm": "test", - "previouspage": null, - "searchterm": "test", - "query": "test", - "total": 60, - "page": 0, - "nextpage": 1, - "results": [ - { - "synopsis": "Synopsis", - "displayname": null, - "name": "test", - "url": "http://url", - "type": "Type", - "icon": null, - "namespace": "Namespace", - "description": "Description" - } - ] - } - """ - response = mock.Mock(text=json) - results = searchcode_doc.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], '[Type] Namespace test') - self.assertEqual(results[0]['url'], 'http://url') - self.assertIn('Description', results[0]['content']) - - json = r""" - {"toto":[ - {"id":200,"name":"Artist Name", - "link":"http:\/\/www.searchcode_doc.com\/artist\/1217","type":"artist"} - ]} - """ - response = mock.Mock(text=json) - results = searchcode_doc.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_seedpeer.py b/tests/unit/engines/test_seedpeer.py deleted file mode 100644 index 2057c1cb..00000000 --- a/tests/unit/engines/test_seedpeer.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import seedpeer -from searx.testing import SearxTestCase - - -class TestBtdiggEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = seedpeer.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('seedpeer', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, seedpeer.response, None) - self.assertRaises(AttributeError, seedpeer.response, []) - self.assertRaises(AttributeError, seedpeer.response, '') - self.assertRaises(AttributeError, seedpeer.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(seedpeer.response(response), []) - - html = u""" - - - - - - - -
    - - - - - - - - - - - - -
    Title1 year1 KB1020
    - - - """ - response = mock.Mock(text=html) - results = seedpeer.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'https://seedpeer.me/link') - self.assertEqual(results[0]['seed'], 10) - self.assertEqual(results[0]['leech'], 20) - self.assertEqual(results[0]['filesize'], 1024) - self.assertEqual(results[0]['torrentfile'], 'https://seedpeer.me/torrent/abc123') - self.assertEqual(results[0]['magnetlink'], 'magnet:?xt=urn:btih:abc123') diff --git a/tests/unit/engines/test_soundcloud.py b/tests/unit/engines/test_soundcloud.py deleted file mode 100644 index 3077d3b4..00000000 --- a/tests/unit/engines/test_soundcloud.py +++ /dev/null @@ -1,192 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import soundcloud -from searx.testing import SearxTestCase -from searx.url_utils import quote_plus - - -class TestSoundcloudEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - params = soundcloud.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('soundcloud.com', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, soundcloud.response, None) - self.assertRaises(AttributeError, soundcloud.response, []) - self.assertRaises(AttributeError, soundcloud.response, '') - self.assertRaises(AttributeError, soundcloud.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(soundcloud.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(soundcloud.response(response), []) - - json = """ - { - "collection": [ - { - "kind": "track", - "id": 159723640, - "created_at": "2014/07/22 00:51:21 +0000", - "user_id": 2976616, - "duration": 303780, - "commentable": true, - "state": "finished", - "original_content_size": 13236349, - "last_modified": "2015/01/31 15:14:50 +0000", - "sharing": "public", - "tag_list": "seekae flume", - "permalink": "seekae-test-recognise-flume-re-work", - "streamable": true, - "embeddable_by": "all", - "downloadable": true, - "purchase_url": "http://www.facebook.com/seekaemusic", - "label_id": null, - "purchase_title": "Seekae", - "genre": "freedownload", - "title": "This is the title", - "description": "This is the content", - "label_name": "Future Classic", - "release": "", - "track_type": "remix", - "key_signature": "", - "isrc": "", - "video_url": null, - "bpm": null, - "release_year": 2014, - "release_month": 7, - "release_day": 22, - "original_format": "mp3", - "license": "all-rights-reserved", - "uri": "https://api.soundcloud.com/tracks/159723640", - "user": { - "id": 2976616, - "kind": "user", - "permalink": "flume", - "username": "Flume", - "last_modified": "2014/11/24 19:21:29 +0000", - "uri": "https://api.soundcloud.com/users/2976616", - "permalink_url": "http://soundcloud.com/flume", - "avatar_url": "https://i1.sndcdn.com/avatars-000044475439-4zi7ii-large.jpg" - }, - "permalink_url": "http://soundcloud.com/this.is.the.url", - "artwork_url": "https://i1.sndcdn.com/artworks-000085857162-xdxy5c-large.jpg", - "waveform_url": "https://w1.sndcdn.com/DWrL1lAN8BkP_m.png", - "stream_url": "https://api.soundcloud.com/tracks/159723640/stream", - "download_url": "https://api.soundcloud.com/tracks/159723640/download", - "playback_count": 2190687, - "download_count": 54856, - "favoritings_count": 49061, - "comment_count": 826, - "likes_count": 49061, - "reposts_count": 15910, - "attachments_uri": "https://api.soundcloud.com/tracks/159723640/attachments", - "policy": "ALLOW" - } - ], - "total_results": 375750, - "next_href": "https://api.soundcloud.com/search?&q=test", - "tx_id": "" - } - """ - response = mock.Mock(text=json) - results = soundcloud.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'http://soundcloud.com/this.is.the.url') - self.assertEqual(results[0]['content'], 'This is the content') - self.assertIn(quote_plus('https://api.soundcloud.com/tracks/159723640'), results[0]['embedded']) - - json = """ - { - "collection": [ - { - "kind": "user", - "id": 159723640, - "created_at": "2014/07/22 00:51:21 +0000", - "user_id": 2976616, - "duration": 303780, - "commentable": true, - "state": "finished", - "original_content_size": 13236349, - "last_modified": "2015/01/31 15:14:50 +0000", - "sharing": "public", - "tag_list": "seekae flume", - "permalink": "seekae-test-recognise-flume-re-work", - "streamable": true, - "embeddable_by": "all", - "downloadable": true, - "purchase_url": "http://www.facebook.com/seekaemusic", - "label_id": null, - "purchase_title": "Seekae", - "genre": "freedownload", - "title": "This is the title", - "description": "This is the content", - "label_name": "Future Classic", - "release": "", - "track_type": "remix", - "key_signature": "", - "isrc": "", - "video_url": null, - "bpm": null, - "release_year": 2014, - "release_month": 7, - "release_day": 22, - "original_format": "mp3", - "license": "all-rights-reserved", - "uri": "https://api.soundcloud.com/tracks/159723640", - "user": { - "id": 2976616, - "kind": "user", - "permalink": "flume", - "username": "Flume", - "last_modified": "2014/11/24 19:21:29 +0000", - "uri": "https://api.soundcloud.com/users/2976616", - "permalink_url": "http://soundcloud.com/flume", - "avatar_url": "https://i1.sndcdn.com/avatars-000044475439-4zi7ii-large.jpg" - }, - "permalink_url": "http://soundcloud.com/this.is.the.url", - "artwork_url": "https://i1.sndcdn.com/artworks-000085857162-xdxy5c-large.jpg", - "waveform_url": "https://w1.sndcdn.com/DWrL1lAN8BkP_m.png", - "stream_url": "https://api.soundcloud.com/tracks/159723640/stream", - "download_url": "https://api.soundcloud.com/tracks/159723640/download", - "playback_count": 2190687, - "download_count": 54856, - "favoritings_count": 49061, - "comment_count": 826, - "likes_count": 49061, - "reposts_count": 15910, - "attachments_uri": "https://api.soundcloud.com/tracks/159723640/attachments", - "policy": "ALLOW" - } - ], - "total_results": 375750, - "next_href": "https://api.soundcloud.com/search?&q=test", - "tx_id": "" - } - """ - response = mock.Mock(text=json) - results = soundcloud.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - { - "collection": [], - "total_results": 375750, - "next_href": "https://api.soundcloud.com/search?&q=test", - "tx_id": "" - } - """ - response = mock.Mock(text=json) - results = soundcloud.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_spotify.py b/tests/unit/engines/test_spotify.py deleted file mode 100644 index e37c344d..00000000 --- a/tests/unit/engines/test_spotify.py +++ /dev/null @@ -1,124 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import spotify -from searx.testing import SearxTestCase - - -class TestSpotifyEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = spotify.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('spotify.com', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, spotify.response, None) - self.assertRaises(AttributeError, spotify.response, []) - self.assertRaises(AttributeError, spotify.response, '') - self.assertRaises(AttributeError, spotify.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(spotify.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(spotify.response(response), []) - - json = """ - { - "tracks": { - "href": "https://api.spotify.com/v1/search?query=nosfell&offset=0&limit=20&type=track", - "items": [ - { - "album": { - "album_type": "album", - "external_urls": { - "spotify": "https://open.spotify.com/album/5c9ap1PBkSGLxT3J73toxA" - }, - "href": "https://api.spotify.com/v1/albums/5c9ap1PBkSGLxT3J73toxA", - "id": "5c9ap1PBkSGLxT3J73toxA", - "name": "Album Title", - "type": "album", - "uri": "spotify:album:5c9ap1PBkSGLxT3J73toxA" - }, - "artists": [ - { - "external_urls": { - "spotify": "https://open.spotify.com/artist/0bMc6b75FfZEpQHG1jifKu" - }, - "href": "https://api.spotify.com/v1/artists/0bMc6b75FfZEpQHG1jifKu", - "id": "0bMc6b75FfZEpQHG1jifKu", - "name": "Artist Name", - "type": "artist", - "uri": "spotify:artist:0bMc6b75FfZEpQHG1jifKu" - } - ], - "disc_number": 1, - "duration_ms": 202386, - "explicit": false, - "external_ids": { - "isrc": "FRV640600067" - }, - "external_urls": { - "spotify": "https://open.spotify.com/track/2GzvFiedqW8hgqUpWcASZa" - }, - "href": "https://api.spotify.com/v1/tracks/2GzvFiedqW8hgqUpWcASZa", - "id": "1000", - "is_playable": true, - "name": "Title of track", - "popularity": 6, - "preview_url": "https://p.scdn.co/mp3-preview/7b8ecda580965a066b768c2647f877e43f7b1a0a", - "track_number": 3, - "type": "track", - "uri": "spotify:track:2GzvFiedqW8hgqUpWcASZa" - } - ], - "limit": 20, - "next": "https://api.spotify.com/v1/search?query=nosfell&offset=20&limit=20&type=track", - "offset": 0, - "previous": null, - "total": 107 - } - } - """ - response = mock.Mock(text=json) - results = spotify.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title of track') - self.assertEqual(results[0]['url'], 'https://open.spotify.com/track/2GzvFiedqW8hgqUpWcASZa') - self.assertEqual(results[0]['content'], 'Artist Name - Album Title - Title of track') - self.assertIn('1000', results[0]['embedded']) - - json = """ - { - "tracks": { - "href": "https://api.spotify.com/v1/search?query=nosfell&offset=0&limit=20&type=track", - "items": [ - { - "href": "https://api.spotify.com/v1/tracks/2GzvFiedqW8hgqUpWcASZa", - "id": "1000", - "is_playable": true, - "name": "Title of track", - "popularity": 6, - "preview_url": "https://p.scdn.co/mp3-preview/7b8ecda580965a066b768c2647f877e43f7b1a0a", - "track_number": 3, - "type": "album", - "uri": "spotify:track:2GzvFiedqW8hgqUpWcASZa" - } - ], - "limit": 20, - "next": "https://api.spotify.com/v1/search?query=nosfell&offset=20&limit=20&type=track", - "offset": 0, - "previous": null, - "total": 107 - } - } - """ - response = mock.Mock(text=json) - results = spotify.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_stackoverflow.py b/tests/unit/engines/test_stackoverflow.py deleted file mode 100644 index 18a1ff4b..00000000 --- a/tests/unit/engines/test_stackoverflow.py +++ /dev/null @@ -1,106 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import stackoverflow -from searx.testing import SearxTestCase - - -class TestStackoverflowEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = stackoverflow.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('stackoverflow.com' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, stackoverflow.response, None) - self.assertRaises(AttributeError, stackoverflow.response, []) - self.assertRaises(AttributeError, stackoverflow.response, '') - self.assertRaises(AttributeError, stackoverflow.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(stackoverflow.response(response), []) - - html = """ -

    -
    -
    -
    -
    -
    - 2583 -
    votes
    -
    -
    -
    -
    -
    - -
    - This is the content -
    -
    -
    -
    - answered nov 23 '09 by - hallski -
    -
    -
    - """ - response = mock.Mock(text=html) - results = stackoverflow.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://stackoverflow.com/questions/this.is.the.url') - self.assertEqual(results[0]['content'], 'This is the content') - - html = """ -
    -
    -
    -
    -
    - 2583 -
    votes
    -
    -
    -
    -
    -
    - -
    - This is the content -
    -
    -
    -
    - answered nov 23 '09 by - hallski -
    -
    - """ - response = mock.Mock(text=html) - results = stackoverflow.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_startpage.py b/tests/unit/engines/test_startpage.py deleted file mode 100644 index ac445473..00000000 --- a/tests/unit/engines/test_startpage.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import startpage -from searx.testing import SearxTestCase - - -class TestStartpageEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr_FR' - params = startpage.request(query, dicto) - self.assertIn('url', params) - self.assertIn('startpage.com', params['url']) - self.assertIn('data', params) - self.assertIn('query', params['data']) - self.assertIn(query, params['data']['query']) - - dicto['language'] = 'all' - params = startpage.request(query, dicto) - - def test_response(self): - self.assertRaises(AttributeError, startpage.response, None) - self.assertRaises(AttributeError, startpage.response, []) - self.assertRaises(AttributeError, startpage.response, '') - self.assertRaises(AttributeError, startpage.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(startpage.response(response), []) - - html = """ - - """ # noqa - response = mock.Mock(text=html.encode('utf-8')) - results = startpage.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This should be the title') - self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') - self.assertEqual(results[0]['content'], 'This should be the content.') diff --git a/tests/unit/engines/test_tokyotoshokan.py b/tests/unit/engines/test_tokyotoshokan.py deleted file mode 100644 index b5c6fad1..00000000 --- a/tests/unit/engines/test_tokyotoshokan.py +++ /dev/null @@ -1,110 +0,0 @@ -import mock -from collections import defaultdict -from searx.engines import tokyotoshokan -from searx.testing import SearxTestCase -from datetime import datetime - - -class TestTokyotoshokanEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - dic['pageno'] = 1 - params = tokyotoshokan.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('tokyotosho.info' in params['url']) - - def test_response(self): - resp = mock.Mock(text='') - self.assertEqual(tokyotoshokan.response(resp), []) - - html = """ - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - Koyomimonogatari - - Details
    - Authorized: Yes - Submitter: Ohys | - Size: 10.5MB | - Date: 2016-03-26 16:41 UTC | - Comment: sample comment - - S: 53 - L: 18 - C: 0 - ID: 975700 -
    - - - - Owarimonogatari - - Details
    - Submitter: Ohys | - Size: 932.84EB | - Date: QWERTY-03-26 16:41 UTC - - S: 0 -
    - """ - - resp = mock.Mock(text=html) - results = tokyotoshokan.response(resp) - - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - - # testing the first result, which has correct format - # and should have all information fields filled - r = results[0] - self.assertEqual(r['url'], 'http://www.nyaa.se/f') - self.assertEqual(r['title'], 'Koyomimonogatari') - self.assertEqual(r['magnetlink'], 'magnet:?xt=urn:btih:4c19eb46b5113685fbd2288ed2531b0b') - self.assertEqual(r['filesize'], int(1024 * 1024 * 10.5)) - self.assertEqual(r['publishedDate'], datetime(2016, 3, 26, 16, 41)) - self.assertEqual(r['content'], 'Comment: sample comment') - self.assertEqual(r['seed'], 53) - self.assertEqual(r['leech'], 18) - - # testing the second result, which does not include magnet link, - # seed & leech info, and has incorrect size & creation date - r = results[1] - self.assertEqual(r['url'], 'http://google.com/q') - self.assertEqual(r['title'], 'Owarimonogatari') - - self.assertFalse('magnetlink' in r) - self.assertFalse('filesize' in r) - self.assertFalse('content' in r) - self.assertFalse('publishedDate' in r) - self.assertFalse('seed' in r) - self.assertFalse('leech' in r) diff --git a/tests/unit/engines/test_torrentz.py b/tests/unit/engines/test_torrentz.py deleted file mode 100644 index f483bf68..00000000 --- a/tests/unit/engines/test_torrentz.py +++ /dev/null @@ -1,87 +0,0 @@ -import mock -from collections import defaultdict -from searx.engines import torrentz -from searx.testing import SearxTestCase -from datetime import datetime - - -class TestTorrentzEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dic = defaultdict(dict) - dic['pageno'] = 1 - params = torrentz.request(query, dic) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('torrentz2.eu' in params['url']) - - def test_response(self): - resp = mock.Mock(text='') - self.assertEqual(torrentz.response(resp), []) - - html = """ -
    -
    -
    - - Completely valid info - - books ebooks -
    -
    - 1 - 5 hours - 30 MB - 14 - 1 -
    -
    - -
    -
    - - Invalid hash and date and filesize - - books ebooks -
    -
    - 1 - 5 hours - 30MB - 5,555 - 1,234,567 -
    -
    -
    - """ - - resp = mock.Mock(text=html) - results = torrentz.response(resp) - - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - - # testing against the first result - r = results[0] - self.assertEqual(r['url'], 'https://torrentz2.eu/4362e08b1d80e1820fb2550b752f9f3126fe76d6') - self.assertEqual(r['title'], 'Completely valid info books ebooks') - # 22 Nov 2015 03:01:42 - self.assertEqual(r['publishedDate'], datetime.fromtimestamp(1503595924)) - self.assertEqual(r['seed'], 14) - self.assertEqual(r['leech'], 1) - self.assertEqual(r['filesize'], 30 * 1024 * 1024) - self.assertEqual(r['magnetlink'], 'magnet:?xt=urn:btih:4362e08b1d80e1820fb2550b752f9f3126fe76d6') - - # testing against the second result - r = results[1] - self.assertEqual(r['url'], 'https://torrentz2.eu/poaskdpokaspod') - self.assertEqual(r['title'], 'Invalid hash and date and filesize books ebooks') - self.assertEqual(r['seed'], 5555) - self.assertEqual(r['leech'], 1234567) - - # in the second result we have invalid hash, creation date & torrent size, - # so these tests should fail - self.assertFalse('magnetlink' in r) - self.assertFalse('filesize' in r) - self.assertFalse('publishedDate' in r) diff --git a/tests/unit/engines/test_twitter.py b/tests/unit/engines/test_twitter.py deleted file mode 100644 index b444b48e..00000000 --- a/tests/unit/engines/test_twitter.py +++ /dev/null @@ -1,502 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import twitter -from searx.testing import SearxTestCase - - -class TestTwitterEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - dicto['language'] = 'fr_FR' - params = twitter.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('twitter.com', params['url']) - self.assertIn('cookies', params) - self.assertIn('lang', params['cookies']) - self.assertIn('fr', params['cookies']['lang']) - - dicto['language'] = 'all' - params = twitter.request(query, dicto) - self.assertIn('cookies', params) - self.assertIn('lang', params['cookies']) - self.assertIn('en', params['cookies']['lang']) - - def test_response(self): - self.assertRaises(AttributeError, twitter.response, None) - self.assertRaises(AttributeError, twitter.response, []) - self.assertRaises(AttributeError, twitter.response, '') - self.assertRaises(AttributeError, twitter.response, '[]') - - response = mock.Mock(text='') - self.assertEqual(twitter.response(response), []) - - html = """ -
  • -
    -
    -
    -
    - -

    - This is the content étude à€ - - -

    -
    -
    - -
    -
    -
  • - """ - response = mock.Mock(text=html) - results = twitter.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], '@TitleName') - self.assertEqual(results[0]['url'], 'https://twitter.com/this.is.the.url') - self.assertIn(u'This is the content', results[0]['content']) - # self.assertIn(u'This is the content étude à€', results[0]['content']) - - html = """ -
  • -
    -
    -
    -
    - -

    - This is the content étude à€ - - -

    -
    -
    - -
    -
    -
  • - """ - response = mock.Mock(text=html) - results = twitter.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], '@TitleName') - self.assertEqual(results[0]['url'], 'https://twitter.com/this.is.the.url') - self.assertIn(u'This is the content', results[0]['content']) - - html = """ -
  • -
    - -
    - - this.meta.com - - - - -
    -

    - This should be the content.

    -
    -
  • - """ - response = mock.Mock(text=html) - results = twitter.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_unsplash.py b/tests/unit/engines/test_unsplash.py deleted file mode 100644 index 4501de90..00000000 --- a/tests/unit/engines/test_unsplash.py +++ /dev/null @@ -1,38 +0,0 @@ -from collections import defaultdict -import mock -from searx.testing import SearxTestCase -from searx.engines import unsplash - - -class TestUnsplashEngine(SearxTestCase): - def test_request(self): - query = 'penguin' - _dict = defaultdict(dict) - _dict['pageno'] = 1 - params = unsplash.request(query, _dict) - - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - - def test_response(self): - resp = mock.Mock(text='{}') - result = unsplash.response(resp) - self.assertEqual([], result) - - resp.text = '{"results": []}' - result = unsplash.response(resp) - self.assertEqual([], result) - - # Sourced from https://unsplash.com/napi/search/photos?query=penguin&xp=&per_page=20&page=2 - with open('./tests/unit/engines/unsplash_fixture.json') as fixture: - resp.text = fixture.read() - - result = unsplash.response(resp) - self.assertEqual(len(result), 2) - self.assertEqual(result[0]['title'], 'low angle photography of swimming penguin') - self.assertEqual(result[0]['url'], 'https://unsplash.com/photos/FY8d721UO_4') - self.assertEqual(result[0]['thumbnail_src'], 'https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=80\ -&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max') - self.assertEqual(result[0]['img_src'], 'https://images.unsplash.com/photo-1523557148507-1b77641c7e7c\ -?ixlib=rb-0.3.5') - self.assertEqual(result[0]['content'], '') diff --git a/tests/unit/engines/test_vimeo.py b/tests/unit/engines/test_vimeo.py deleted file mode 100644 index c86b50a1..00000000 --- a/tests/unit/engines/test_vimeo.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import vimeo -from searx.testing import SearxTestCase - - -class TestVimeoEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - params = vimeo.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('vimeo.com' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, vimeo.response, None) - self.assertRaises(AttributeError, vimeo.response, []) - self.assertRaises(AttributeError, vimeo.response, '') - self.assertRaises(AttributeError, vimeo.response, '[]') - - json = u""" -{"filtered":{"total":274641,"page":1,"per_page":18,"paging":{"next":"?sizes=590x332&page=2","previous":null,"first":"?sizes=590x332&page=1","last":"?sizes=590x332&page=15258"},"data":[{"is_staffpick":false,"is_featured":true,"type":"clip","clip":{"uri":"\\/videos\\/106557563","name":"Hot Rod Revue: The South","link":"https:\\/\\/vimeo.com\\/106557563","duration":4069,"created_time":"2014-09-19T03:38:04+00:00","privacy":{"view":"ptv"},"pictures":{"sizes":[{"width":"590","height":"332","link":"https:\\/\\/i.vimeocdn.com\\/video\\/489717884_590x332.jpg?r=pad","link_with_play_button":"https:\\/\\/i.vimeocdn.com\\/filter\\/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F489717884_590x332.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"}]},"stats":{"plays":null},"metadata":{"connections":{"comments":{"total":0},"likes":{"total":5}},"interactions":[]},"user":{"name":"Cal Thorley","link":"https:\\/\\/vimeo.com\\/calthorley","pictures":{"sizes":[{"width":30,"height":30,"link":"https:\\/\\/i.vimeocdn.com\\/portrait\\/2545308_30x30?r=pad"},{"width":75,"height":75,"link":"https:\\/\\/i.vimeocdn.com\\/portrait\\/2545308_75x75?r=pad"},{"width":100,"height":100,"link":"https:\\/\\/i.vimeocdn.com\\/portrait\\/2545308_100x100?r=pad"},{"width":300,"height":300,"link":"https:\\/\\/i.vimeocdn.com\\/portrait\\/2545308_300x300?r=pad"}]}}}}]}}; - -""" # noqa - response = mock.Mock(text=json) - results = vimeo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], u'Hot Rod Revue: The South') - self.assertEqual(results[0]['url'], 'https://vimeo.com/106557563') - self.assertEqual(results[0]['content'], '') - self.assertEqual(results[0]['thumbnail'], 'https://i.vimeocdn.com/video/489717884_590x332.jpg?r=pad') diff --git a/tests/unit/engines/test_wikidata.py b/tests/unit/engines/test_wikidata.py deleted file mode 100644 index 48be17bb..00000000 --- a/tests/unit/engines/test_wikidata.py +++ /dev/null @@ -1,514 +0,0 @@ -# -*- coding: utf-8 -*- -from lxml.html import fromstring -from lxml import etree -from collections import defaultdict -import mock -from searx.engines import wikidata -from searx.testing import SearxTestCase - - -class TestWikidataEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['language'] = 'all' - params = wikidata.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('wikidata.org', params['url']) - - dicto['language'] = 'es_ES' - params = wikidata.request(query, dicto) - self.assertIn(query, params['url']) - - # successful cases are not tested here to avoid sending additional requests - def test_response(self): - self.assertRaises(AttributeError, wikidata.response, None) - self.assertRaises(AttributeError, wikidata.response, []) - self.assertRaises(AttributeError, wikidata.response, '') - self.assertRaises(AttributeError, wikidata.response, '[]') - - wikidata.supported_languages = ['en', 'es'] - wikidata.language_aliases = {} - response = mock.Mock(content=''.encode("utf-8"), search_params={"language": "en"}) - self.assertEqual(wikidata.response(response), []) - - def test_getDetail(self): - response = {} - results = wikidata.getDetail(response, "Q123", "en", "en-US", etree.HTMLParser()) - self.assertEqual(results, []) - - title_html = '
    Test
    ' - html = """ -
    -
    -
    -
    - -
    -
    - """ - response = {"parse": {"displaytitle": title_html, "text": html}} - - results = wikidata.getDetail(response, "Q123", "en", "en-US", etree.HTMLParser()) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['url'], 'https://en.wikipedia.org/wiki/Test') - - title_html = """ -
    -
    - Test - English -
    -
    - """ - html = """ -
    -
    - Description - English -
    - -
    - -
    -
    - """ - response = {"parse": {"displaytitle": title_html, "text": html}} - - results = wikidata.getDetail(response, "Q123", "yua", "yua_MX", etree.HTMLParser()) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'Official website') - self.assertEqual(results[0]['url'], 'https://officialsite.com') - - self.assertEqual(results[1]['infobox'], 'Test') - self.assertEqual(results[1]['id'], None) - self.assertEqual(results[1]['content'], 'Description') - self.assertEqual(results[1]['attributes'], []) - self.assertEqual(results[1]['urls'][0]['title'], 'Official website') - self.assertEqual(results[1]['urls'][0]['url'], 'https://officialsite.com') - self.assertEqual(results[1]['urls'][1]['title'], 'Wikipedia (en)') - self.assertEqual(results[1]['urls'][1]['url'], 'https://en.wikipedia.org/wiki/Test') - - def test_add_image(self): - image_src = wikidata.add_image(fromstring("
    ")) - self.assertEqual(image_src, None) - - html = u""" -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - image.png -
    2,687 × 3,356; 1.22 MB -
    -
    -
    -
    -
    -
    -
    -
    - """ - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - image_src = wikidata.add_image(id_cache) - self.assertEqual(image_src, - "https://commons.wikimedia.org/wiki/Special:FilePath/image.png?width=500&height=400") - - html = u""" -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - icon.png -
    671 × 671; 18 KB
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - logo.png -
    170 × 170; 1 KB -
    -
    -
    -
    -
    -
    -
    -
    - """ - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - - image_src = wikidata.add_image(id_cache) - self.assertEqual(image_src, - "https://commons.wikimedia.org/wiki/Special:FilePath/logo.png?width=500&height=400") - - def test_add_attribute(self): - html = u""" -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - """ - attributes = [] - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - - wikidata.add_attribute(attributes, id_cache, "Fail") - self.assertEqual(attributes, []) - - wikidata.add_attribute(attributes, id_cache, "P27") - self.assertEqual(len(attributes), 1) - self.assertEqual(attributes[0]["label"], "Country of citizenship") - self.assertEqual(attributes[0]["value"], "United Kingdom") - - html = u""" -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - 27 January 1832 - - Gregorian - -
    -
    -
    -
    -
    -
    -
    - """ - attributes = [] - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - wikidata.add_attribute(attributes, id_cache, "P569", date=True) - self.assertEqual(len(attributes), 1) - self.assertEqual(attributes[0]["label"], "Date of birth") - self.assertEqual(attributes[0]["value"], "27 January 1832") - - html = u""" -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - """ - attributes = [] - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - wikidata.add_attribute(attributes, id_cache, "P6") - self.assertEqual(len(attributes), 1) - self.assertEqual(attributes[0]["label"], "Head of government") - self.assertEqual(attributes[0]["value"], "Old Prime Minister, Actual Prime Minister") - - attributes = [] - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - wikidata.add_attribute(attributes, id_cache, "P6", trim=True) - self.assertEqual(len(attributes), 1) - self.assertEqual(attributes[0]["value"], "Actual Prime Minister") - - def test_add_url(self): - html = u""" -
    - -
    - """ - urls = [] - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - wikidata.add_url(urls, html_etree, id_cache, 'P856') - self.assertEquals(len(urls), 1) - self.assertIn({'title': 'Official website', 'url': 'https://searx.me/'}, urls) - urls = [] - results = [] - wikidata.add_url(urls, html_etree, id_cache, 'P856', 'custom label', results=results) - self.assertEquals(len(urls), 1) - self.assertEquals(len(results), 1) - self.assertIn({'title': 'custom label', 'url': 'https://searx.me/'}, urls) - self.assertIn({'title': 'custom label', 'url': 'https://searx.me/'}, results) - - html = u""" - - """ - urls = [] - html_etree = fromstring(html) - id_cache = wikidata.get_id_cache(html_etree) - wikidata.add_url(urls, html_etree, id_cache, 'P856') - self.assertEquals(len(urls), 2) - self.assertIn({'title': 'Official website', 'url': 'http://www.worldofwarcraft.com'}, urls) - self.assertIn({'title': 'Official website', 'url': 'http://eu.battle.net/wow/en/'}, urls) - - def test_get_imdblink(self): - html = u""" -
    -
    - -
    -
    - """ - html_etree = fromstring(html) - imdblink = wikidata.get_imdblink(html_etree, 'https://www.imdb.com/') - - html = u""" -
    -
    - -
    -
    - """ - html_etree = fromstring(html) - imdblink = wikidata.get_imdblink(html_etree, 'https://www.imdb.com/') - self.assertIn('https://www.imdb.com/name/nm4915994', imdblink) - - def test_get_geolink(self): - html = u""" -
    -
    -
    -
    - 60°N, 40°E -
    -
    -
    -
    - """ - html_etree = fromstring(html) - geolink = wikidata.get_geolink(html_etree) - self.assertIn('https://www.openstreetmap.org/', geolink) - self.assertIn('lat=60&lon=40', geolink) - - html = u""" -
    -
    -
    -
    - 34°35'59"S, 58°22'55"W -
    -
    -
    -
    - """ - html_etree = fromstring(html) - geolink = wikidata.get_geolink(html_etree) - self.assertIn('https://www.openstreetmap.org/', geolink) - self.assertIn('lat=-34.59', geolink) - self.assertIn('lon=-58.38', geolink) - - def test_get_wikilink(self): - html = """ -
    -
    - -
    -
    - -
    -
    - """ - html_etree = fromstring(html) - wikilink = wikidata.get_wikilink(html_etree, 'nowiki') - self.assertEqual(wikilink, None) - wikilink = wikidata.get_wikilink(html_etree, 'enwiki') - self.assertEqual(wikilink, 'https://en.wikipedia.org/wiki/Test') - wikilink = wikidata.get_wikilink(html_etree, 'arwiki') - self.assertEqual(wikilink, 'https://ar.wikipedia.org/wiki/Test') - wikilink = wikidata.get_wikilink(html_etree, 'enwikiquote') - self.assertEqual(wikilink, 'https://en.wikiquote.org/wiki/Test') diff --git a/tests/unit/engines/test_wikipedia.py b/tests/unit/engines/test_wikipedia.py deleted file mode 100644 index 316b12bc..00000000 --- a/tests/unit/engines/test_wikipedia.py +++ /dev/null @@ -1,263 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import wikipedia -from searx.testing import SearxTestCase - - -class TestWikipediaEngine(SearxTestCase): - - def test_request(self): - wikipedia.supported_languages = ['fr', 'en', 'no'] - wikipedia.language_aliases = {'nb': 'no'} - - query = 'test_query' - dicto = defaultdict(dict) - dicto['language'] = 'fr-FR' - params = wikipedia.request(query.encode('utf-8'), dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('test_query', params['url']) - self.assertIn('Test_Query', params['url']) - self.assertIn('fr.wikipedia.org', params['url']) - - query = u'Test_Query' - params = wikipedia.request(query.encode('utf-8'), dicto) - self.assertIn('Test_Query', params['url']) - self.assertNotIn('test_query', params['url']) - - dicto['language'] = 'nb' - params = wikipedia.request(query, dicto) - self.assertIn('no.wikipedia.org', params['url']) - dicto['language'] = 'all' - params = wikipedia.request(query, dicto) - self.assertIn('en', params['url']) - - dicto['language'] = 'xx' - params = wikipedia.request(query, dicto) - self.assertIn('en.wikipedia.org', params['url']) - - def test_response(self): - dicto = defaultdict(dict) - dicto['language'] = 'fr' - - self.assertRaises(AttributeError, wikipedia.response, None) - self.assertRaises(AttributeError, wikipedia.response, []) - self.assertRaises(AttributeError, wikipedia.response, '') - self.assertRaises(AttributeError, wikipedia.response, '[]') - - # page not found - json = """ - { - "batchcomplete": "", - "query": { - "normalized": [], - "pages": { - "-1": { - "ns": 0, - "title": "", - "missing": "" - } - } - } - }""" - response = mock.Mock(text=json, search_params=dicto) - self.assertEqual(wikipedia.response(response), []) - - # normal case - json = """ - { - "batchcomplete": "", - "query": { - "normalized": [], - "pages": { - "12345": { - "pageid": 12345, - "ns": 0, - "title": "The Title", - "extract": "The Title is...", - "thumbnail": { - "source": "img_src.jpg" - }, - "pageimage": "img_name.jpg" - } - } - } - }""" - response = mock.Mock(text=json, search_params=dicto) - results = wikipedia.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], u'The Title') - self.assertIn('fr.wikipedia.org/wiki/The_Title', results[0]['url']) - self.assertEqual(results[1]['infobox'], u'The Title') - self.assertIn('fr.wikipedia.org/wiki/The_Title', results[1]['id']) - self.assertIn('The Title is...', results[1]['content']) - self.assertEqual(results[1]['img_src'], 'img_src.jpg') - - # disambiguation page - json = """ - { - "batchcomplete": "", - "query": { - "normalized": [], - "pages": { - "12345": { - "pageid": 12345, - "ns": 0, - "title": "The Title", - "extract": "The Title can be:\\nThe Title 1\\nThe Title 2\\nThe Title 3\\nThe Title 4......................................................................................................................................." """ # noqa - json += """ - } - } - } - }""" - response = mock.Mock(text=json, search_params=dicto) - results = wikipedia.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - - # no image - json = """ - { - "batchcomplete": "", - "query": { - "normalized": [], - "pages": { - "12345": { - "pageid": 12345, - "ns": 0, - "title": "The Title", - "extract": "The Title is......................................................................................................................................................................................." """ # noqa - json += """ - } - } - } - }""" - response = mock.Mock(text=json, search_params=dicto) - results = wikipedia.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertIn('The Title is...', results[1]['content']) - self.assertEqual(results[1]['img_src'], None) - - # title not in first paragraph - json = u""" - { - "batchcomplete": "", - "query": { - "normalized": [], - "pages": { - "12345": { - "pageid": 12345, - "ns": 0, - "title": "披頭四樂隊", - "extract": "披头士乐队....................................................................................................................................................................................................\\n披頭四樂隊...", """ # noqa - json += """ - "thumbnail": { - "source": "img_src.jpg" - }, - "pageimage": "img_name.jpg" - } - } - } - }""" - response = mock.Mock(text=json, search_params=dicto) - results = wikipedia.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[1]['infobox'], u'披頭四樂隊') - self.assertIn(u'披头士乐队...', results[1]['content']) - - def test_fetch_supported_languages(self): - html = u"""""" - response = mock.Mock(text=html) - languages = wikipedia._fetch_supported_languages(response) - self.assertEqual(type(languages), dict) - self.assertEqual(len(languages), 0) - - html = u""" - - -
    -
    -

    Table header

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NLanguageLanguage (local)WikiArticles
    2SwedishSvenskasv3000000
    3CebuanoSinugboanong Binisayaceb3000000
    -

    Table header

    - - - - - - - - - - - - - - - - - - - -
    NLanguageLanguage (local)WikiArticles
    2Norwegian (Bokmål)Norsk (Bokmål)no100000
    -
    -
    - - - """ - response = mock.Mock(text=html) - languages = wikipedia._fetch_supported_languages(response) - self.assertEqual(type(languages), dict) - self.assertEqual(len(languages), 3) - - self.assertIn('sv', languages) - self.assertIn('ceb', languages) - self.assertIn('no', languages) - - self.assertEqual(type(languages['sv']), dict) - self.assertEqual(type(languages['ceb']), dict) - self.assertEqual(type(languages['no']), dict) - - self.assertIn('name', languages['sv']) - self.assertIn('english_name', languages['sv']) - self.assertIn('articles', languages['sv']) - - self.assertEqual(languages['sv']['name'], 'Svenska') - self.assertEqual(languages['sv']['english_name'], 'Swedish') - self.assertEqual(languages['sv']['articles'], 3000000) - self.assertEqual(languages['ceb']['name'], 'Sinugboanong Binisaya') - self.assertEqual(languages['ceb']['english_name'], 'Cebuano') - self.assertEqual(languages['ceb']['articles'], 3000000) - self.assertEqual(languages['no']['name'], u'Norsk (Bokmål)') - self.assertEqual(languages['no']['english_name'], u'Norwegian (Bokmål)') - self.assertEqual(languages['no']['articles'], 100000) diff --git a/tests/unit/engines/test_wolframalpha_api.py b/tests/unit/engines/test_wolframalpha_api.py deleted file mode 100644 index 0433b34a..00000000 --- a/tests/unit/engines/test_wolframalpha_api.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from requests import Request -from searx.engines import wolframalpha_api -from searx.testing import SearxTestCase - - -class TestWolframAlphaAPIEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - params = wolframalpha_api.request(query, dicto) - - # TODO: test api_key - self.assertIn('url', params) - self.assertIn('https://api.wolframalpha.com/v2/query?', params['url']) - self.assertIn(query, params['url']) - self.assertEqual('https://www.wolframalpha.com/input/?i=test_query', params['headers']['Referer']) - - def test_replace_pua_chars(self): - self.assertEqual('i', wolframalpha_api.replace_pua_chars(u'\uf74e')) - - def test_response(self): - self.assertRaises(AttributeError, wolframalpha_api.response, None) - self.assertRaises(AttributeError, wolframalpha_api.response, []) - self.assertRaises(AttributeError, wolframalpha_api.response, '') - self.assertRaises(AttributeError, wolframalpha_api.response, '[]') - - referer_url = 'referer_url' - request = Request(headers={'Referer': referer_url}) - - # test failure - xml = ''' - - ''' - response = mock.Mock(content=xml.encode('utf-8')) - self.assertEqual(wolframalpha_api.response(response), []) - - # test basic case - xml = b""" - - - - input_img_alt - input_plaintext</plaintext> - </subpod> - </pod> - <pod title='Result' - scanner='Simplification' - id='Result' - numsubpods='1' - primary='true'> - <subpod title=''> - <img src='result_img_src.gif' - alt='result_img_alt' - title='result_img_title' /> - <plaintext>result_plaintext</plaintext> - </subpod> - </pod> - <pod title='Manipulatives illustration' - scanner='Arithmetic' - id='Illustration' - numsubpods='1'> - <subpod title=''> - <img src='illustration_img_src.gif' - alt='illustration_img_alt' /> - <plaintext>illustration_plaintext</plaintext> - </subpod> - </pod> - </queryresult> - """ - response = mock.Mock(content=xml, request=request) - results = wolframalpha_api.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual('input_plaintext', results[0]['infobox']) - - self.assertEqual(len(results[0]['attributes']), 3) - self.assertEqual('Input', results[0]['attributes'][0]['label']) - self.assertEqual('input_plaintext', results[0]['attributes'][0]['value']) - self.assertEqual('Result', results[0]['attributes'][1]['label']) - self.assertEqual('result_plaintext', results[0]['attributes'][1]['value']) - self.assertEqual('Manipulatives illustration', results[0]['attributes'][2]['label']) - self.assertEqual('illustration_img_src.gif', results[0]['attributes'][2]['image']['src']) - self.assertEqual('illustration_img_alt', results[0]['attributes'][2]['image']['alt']) - - self.assertEqual(len(results[0]['urls']), 1) - - self.assertEqual(referer_url, results[0]['urls'][0]['url']) - self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) - self.assertEqual(referer_url, results[1]['url']) - self.assertEqual('Wolfram|Alpha (input_plaintext)', results[1]['title']) - self.assertIn('result_plaintext', results[1]['content']) - - # test calc - xml = b"""<?xml version='1.0' encoding='UTF-8'?> - <queryresult success='true' - error='false' - numpods='2' - datatypes='' - parsetimedout='false' - id='queryresult_id' - host='http://www5b.wolframalpha.com' - related='related_url' - version='2.6' > - <pod title='Indefinite integral' - scanner='Integral' - id='IndefiniteIntegral' - error='false' - numsubpods='1' - primary='true'> - <subpod title=''> - <img src='integral_image.gif' - alt='integral_img_alt' - title='integral_img_title' /> - <plaintext>integral_plaintext</plaintext> - </subpod> - </pod> - <pod title='Plot of the integral' - scanner='Integral' - id='Plot' - error='false' - numsubpods='1'> - <subpod title=''> - <img src='plot.gif' - alt='plot_alt' - title='' /> - <plaintext></plaintext> - </subpod> - </pod> - </queryresult> - """ - response = mock.Mock(content=xml, request=request) - results = wolframalpha_api.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual('integral_plaintext', results[0]['infobox']) - - self.assertEqual(len(results[0]['attributes']), 2) - self.assertEqual('Indefinite integral', results[0]['attributes'][0]['label']) - self.assertEqual('integral_plaintext', results[0]['attributes'][0]['value']) - self.assertEqual('Plot of the integral', results[0]['attributes'][1]['label']) - self.assertEqual('plot.gif', results[0]['attributes'][1]['image']['src']) - self.assertEqual('plot_alt', results[0]['attributes'][1]['image']['alt']) - - self.assertEqual(len(results[0]['urls']), 1) - - self.assertEqual(referer_url, results[0]['urls'][0]['url']) - self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) - self.assertEqual(referer_url, results[1]['url']) - self.assertEqual('Wolfram|Alpha (integral_plaintext)', results[1]['title']) - self.assertIn('integral_plaintext', results[1]['content']) diff --git a/tests/unit/engines/test_wolframalpha_noapi.py b/tests/unit/engines/test_wolframalpha_noapi.py deleted file mode 100644 index 982edd9f..00000000 --- a/tests/unit/engines/test_wolframalpha_noapi.py +++ /dev/null @@ -1,224 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from requests import Request -from searx.engines import wolframalpha_noapi -from searx.testing import SearxTestCase - - -class TestWolframAlphaNoAPIEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - params = wolframalpha_noapi.request(query, dicto) - - self.assertIn('url', params) - self.assertIn('https://www.wolframalpha.com/input/json.jsp', params['url']) - self.assertIn(query, params['url']) - self.assertEqual('https://www.wolframalpha.com/input/?i=test_query', params['headers']['Referer']) - - def test_response(self): - self.assertRaises(AttributeError, wolframalpha_noapi.response, None) - self.assertRaises(AttributeError, wolframalpha_noapi.response, []) - self.assertRaises(AttributeError, wolframalpha_noapi.response, '') - self.assertRaises(AttributeError, wolframalpha_noapi.response, '[]') - - referer_url = 'referer_url' - request = Request(headers={'Referer': referer_url}) - - # test failure - json = r''' - {"queryresult" : { - "success" : false, - "error" : false, - "numpods" : 0, - "id" : "", - "host" : "https:\/\/www5a.wolframalpha.com", - "didyoumeans" : {} - }} - ''' - response = mock.Mock(text=json, request=request) - self.assertEqual(wolframalpha_noapi.response(response), []) - - # test basic case - json = r''' - {"queryresult" : { - "success" : true, - "error" : false, - "numpods" : 6, - "datatypes" : "Math", - "id" : "queryresult_id", - "host" : "https:\/\/www5b.wolframalpha.com", - "related" : "related_url", - "version" : "2.6", - "pods" : [ - { - "title" : "Input", - "scanners" : [ - "Identity" - ], - "id" : "Input", - "error" : false, - "numsubpods" : 1, - "subpods" : [ - { - "title" : "", - "img" : { - "src" : "input_img_src.gif", - "alt" : "input_img_alt", - "title" : "input_img_title" - }, - "plaintext" : "input_plaintext", - "minput" : "input_minput" - } - ] - }, - { - "title" : "Result", - "scanners" : [ - "Simplification" - ], - "id" : "Result", - "error" : false, - "numsubpods" : 1, - "primary" : true, - "subpods" : [ - { - "title" : "", - "img" : { - "src" : "result_img_src.gif", - "alt" : "result_img_alt", - "title" : "result_img_title" - }, - "plaintext" : "result_plaintext", - "moutput" : "result_moutput" - } - ] - }, - { - "title" : "Manipulatives illustration", - "scanners" : [ - "Arithmetic" - ], - "id" : "Illustration", - "error" : false, - "numsubpods" : 1, - "subpods" : [ - { - "title" : "", - "CDFcontent" : "Resizeable", - "img" : { - "src" : "illustration_img_src.gif", - "alt" : "illustration_img_alt", - "title" : "illustration_img_title" - }, - "plaintext" : "illustration_img_plaintext" - } - ] - } - ] - }} - ''' - response = mock.Mock(text=json, request=request) - results = wolframalpha_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual('input_plaintext', results[0]['infobox']) - - self.assertEqual(len(results[0]['attributes']), 3) - self.assertEqual('Input', results[0]['attributes'][0]['label']) - self.assertEqual('input_plaintext', results[0]['attributes'][0]['value']) - self.assertEqual('Result', results[0]['attributes'][1]['label']) - self.assertEqual('result_plaintext', results[0]['attributes'][1]['value']) - self.assertEqual('Manipulatives illustration', results[0]['attributes'][2]['label']) - self.assertEqual('illustration_img_src.gif', results[0]['attributes'][2]['image']['src']) - self.assertEqual('illustration_img_alt', results[0]['attributes'][2]['image']['alt']) - - self.assertEqual(len(results[0]['urls']), 1) - - self.assertEqual(referer_url, results[0]['urls'][0]['url']) - self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) - self.assertEqual(referer_url, results[1]['url']) - self.assertEqual('Wolfram|Alpha (input_plaintext)', results[1]['title']) - self.assertIn('result_plaintext', results[1]['content']) - - # test calc - json = r""" - {"queryresult" : { - "success" : true, - "error" : false, - "numpods" : 2, - "datatypes" : "", - "id" : "queryresult_id", - "host" : "https:\/\/www4b.wolframalpha.com", - "related" : "related_url", - "version" : "2.6", - "pods" : [ - { - "title" : "Indefinite integral", - "scanners" : [ - "Integral" - ], - "id" : "IndefiniteIntegral", - "error" : false, - "numsubpods" : 1, - "primary" : true, - "subpods" : [ - { - "title" : "", - "img" : { - "src" : "integral_img_src.gif", - "alt" : "integral_img_alt", - "title" : "integral_img_title" - }, - "plaintext" : "integral_plaintext", - "minput" : "integral_minput", - "moutput" : "integral_moutput" - } - ] - }, - { - "title" : "Plot of the integral", - "scanners" : [ - "Integral" - ], - "id" : "Plot", - "error" : false, - "numsubpods" : 1, - "subpods" : [ - { - "title" : "", - "img" : { - "src" : "plot.gif", - "alt" : "plot_alt", - "title" : "plot_title" - }, - "plaintext" : "", - "minput" : "plot_minput" - } - ] - } - ] - }} - """ - response = mock.Mock(text=json, request=request) - results = wolframalpha_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual('integral_plaintext', results[0]['infobox']) - - self.assertEqual(len(results[0]['attributes']), 2) - self.assertEqual('Indefinite integral', results[0]['attributes'][0]['label']) - self.assertEqual('integral_plaintext', results[0]['attributes'][0]['value']) - self.assertEqual('Plot of the integral', results[0]['attributes'][1]['label']) - self.assertEqual('plot.gif', results[0]['attributes'][1]['image']['src']) - self.assertEqual('plot_alt', results[0]['attributes'][1]['image']['alt']) - - self.assertEqual(len(results[0]['urls']), 1) - - self.assertEqual(referer_url, results[0]['urls'][0]['url']) - self.assertEqual('Wolfram|Alpha', results[0]['urls'][0]['title']) - self.assertEqual(referer_url, results[1]['url']) - self.assertEqual('Wolfram|Alpha (integral_plaintext)', results[1]['title']) - self.assertIn('integral_plaintext', results[1]['content']) diff --git a/tests/unit/engines/test_www1x.py b/tests/unit/engines/test_www1x.py deleted file mode 100644 index 40f5200f..00000000 --- a/tests/unit/engines/test_www1x.py +++ /dev/null @@ -1,14 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import www1x -from searx.testing import SearxTestCase - - -class TestWww1xEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - params = www1x.request(query, defaultdict(dict)) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertTrue('1x.com' in params['url']) diff --git a/tests/unit/engines/test_yacy.py b/tests/unit/engines/test_yacy.py deleted file mode 100644 index f49532cf..00000000 --- a/tests/unit/engines/test_yacy.py +++ /dev/null @@ -1,96 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import yacy -from searx.testing import SearxTestCase - - -class TestYacyEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr_FR' - params = yacy.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('localhost', params['url']) - self.assertIn('fr', params['url']) - - dicto['language'] = 'all' - params = yacy.request(query, dicto) - self.assertIn('url', params) - self.assertNotIn('lr=lang_', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, yacy.response, None) - self.assertRaises(AttributeError, yacy.response, []) - self.assertRaises(AttributeError, yacy.response, '') - self.assertRaises(AttributeError, yacy.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(yacy.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(yacy.response(response), []) - - json = """ - { - "channels": [ - { - "title": "YaCy P2P-Search for test", - "description": "Search for test", - "link": "http://search.yacy.de:7001/yacysearch.html?query=test&amp;resource=global&amp;contentdom=0", - "image": { - "url": "http://search.yacy.de:7001/env/grafics/yacy.png", - "title": "Search for test", - "link": "http://search.yacy.de:7001/yacysearch.html?query=test&amp;resource=global&amp;contentdom=0" - }, - "totalResults": "249", - "startIndex": "0", - "itemsPerPage": "5", - "searchTerms": "test", - "items": [ - { - "title": "This is the title", - "link": "http://this.is.the.url", - "code": "", - "description": "This should be the content", - "pubDate": "Sat, 08 Jun 2013 02:00:00 +0200", - "size": "44213", - "sizename": "43 kbyte", - "guid": "lzh_1T_5FP-A", - "faviconCode": "XTS4uQ_5FP-A", - "host": "www.gamestar.de", - "path": "/spiele/city-of-heroes-freedom/47019.html", - "file": "47019.html", - "urlhash": "lzh_1T_5FP-A", - "ranking": "0.20106804" - }, - { - "title": "This is the title2", - "icon": "/ViewImage.png?maxwidth=96&amp;maxheight=96&amp;code=7EbAbW6BpPOA", - "image": "http://image.url/image.png", - "cache": "/ViewImage.png?quadratic=&amp;url=http://golem.ivwbox.de/cgi-bin/ivw/CP/G_INET?d=14071378", - "url": "http://this.is.the.url", - "urlhash": "7EbAbW6BpPOA", - "host": "www.golem.de", - "width": "-1", - "height": "-1" - } - ] - } - ] - } - """ - response = mock.Mock(text=json) - results = yacy.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'http://this.is.the.url') - self.assertEqual(results[0]['content'], 'This should be the content') - self.assertEqual(results[1]['img_src'], 'http://image.url/image.png') - self.assertEqual(results[1]['content'], '') - self.assertEqual(results[1]['url'], 'http://this.is.the.url') - self.assertEqual(results[1]['title'], 'This is the title2') diff --git a/tests/unit/engines/test_yahoo.py b/tests/unit/engines/test_yahoo.py deleted file mode 100644 index e52c1109..00000000 --- a/tests/unit/engines/test_yahoo.py +++ /dev/null @@ -1,190 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import yahoo -from searx.testing import SearxTestCase - - -class TestYahooEngine(SearxTestCase): - - def test_parse_url(self): - test_url = 'http://r.search.yahoo.com/_ylt=A0LEb9JUSKcAEGRXNyoA;_ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb' +\ - '2xvA2Jm2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10/RU=https%3a%2f%2fthis.is.the.url%2f/RK=0/RS=' +\ - 'dtcJsfP4mEeBOjnVfUQ-' - url = yahoo.parse_url(test_url) - self.assertEqual('https://this.is.the.url/', url) - - test_url = 'http://r.search.yahoo.com/_ylt=A0LElb9JUSKcAEGRXNyoA;_ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb' +\ - '2xvA2Jm2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10/RU=https%3a%2f%2fthis.is.the.url%2f/RS=' +\ - 'dtcJsfP4mEeBOjnVfUQ-' - url = yahoo.parse_url(test_url) - self.assertEqual('https://this.is.the.url/', url) - - test_url = 'https://this.is.the.url/' - url = yahoo.parse_url(test_url) - self.assertEqual('https://this.is.the.url/', url) - - def test_request(self): - yahoo.supported_languages = ['en', 'fr', 'zh-CHT', 'zh-CHS'] - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['time_range'] = '' - dicto['language'] = 'fr-FR' - params = yahoo.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('search.yahoo.com', params['url']) - self.assertIn('fr', params['url']) - self.assertIn('cookies', params) - self.assertIn('sB', params['cookies']) - self.assertIn('fr', params['cookies']['sB']) - - dicto['language'] = 'zh' - params = yahoo.request(query, dicto) - self.assertIn('zh_chs', params['url']) - self.assertIn('zh_chs', params['cookies']['sB']) - - dicto['language'] = 'zh-TW' - params = yahoo.request(query, dicto) - self.assertIn('zh_cht', params['url']) - self.assertIn('zh_cht', params['cookies']['sB']) - - dicto['language'] = 'all' - params = yahoo.request(query, dicto) - self.assertIn('cookies', params) - self.assertIn('sB', params['cookies']) - self.assertIn('en', params['cookies']['sB']) - self.assertIn('en', params['url']) - - def test_no_url_in_request_year_time_range(self): - dicto = defaultdict(dict) - query = 'test_query' - dicto['time_range'] = 'year' - params = yahoo.request(query, dicto) - self.assertEqual({}, params['url']) - - def test_response(self): - self.assertRaises(AttributeError, yahoo.response, None) - self.assertRaises(AttributeError, yahoo.response, []) - self.assertRaises(AttributeError, yahoo.response, '') - self.assertRaises(AttributeError, yahoo.response, '[]') - - response = mock.Mock(text='<html></html>') - self.assertEqual(yahoo.response(response), []) - - html = """ -<ol class="reg mb-15 searchCenterMiddle"> - <li class="first"> - <div class="dd algo fst Sr"> - <div class="compTitle"> - <h3 class="title"><a class=" td-u" href="http://r.search.yahoo.com/_ylt=A0LEb9JUSKcAEGRXNyoA; - _ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb2xvA2Jm2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10 - /RU=https%3a%2f%2fthis.is.the.url%2f/RK=0/RS=dtcJsfP4mEeBOjnVfUQ-" - target="_blank" data-bid="54e712e13671c"> - <b><b>This is the title</b></b></a> - </h3> - </div> - <div class="compText aAbs"> - <p class="lh-18"><b><b>This is the </b>content</b> - </p> - </div> - </div> - </li> - <li> - <div class="dd algo lst Sr"> - <div class="compTitle"> - </div> - <div class="compText aAbs"> - <p class="lh-18">This is the second content</p> - </div> - </div> - </li> -</ol> -<div class="dd assist fst lst AlsoTry" data-bid="54e712e138d04"> - <div class="compTitle mb-4 h-17"> - <h3 class="title">Also Try</h3> </div> - <table class="compTable m-0 ac-1st td-u fz-ms"> - <tbody> - <tr> - <td class="w-50p pr-28"><a href="https://search.yahoo.com/"><B>This is the </B>suggestion<B></B></a> - </td> - </tr> - </table> -</div> - """ - response = mock.Mock(text=html) - results = yahoo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://this.is.the.url/') - self.assertEqual(results[0]['content'], 'This is the content') - self.assertEqual(results[1]['suggestion'], 'This is the suggestion') - - html = """ -<ol class="reg mb-15 searchCenterMiddle"> - <li class="first"> - <div class="dd algo fst Sr"> - <div class="compTitle"> - <h3 class="title"><a class=" td-u" href="http://r.search.yahoo.com/_ylt=A0LEb9JUSKcAEGRXNyoA; - _ylu=X3oDMTEzZm1qazYwBHNlYwNzcgRwb3MDMQRjb2xvA2Jm2dGlkA1NNRTcwM18x/RV=2/RE=1423106085/RO=10 - /RU=https%3a%2f%2fthis.is.the.url%2f/RK=0/RS=dtcJsfP4mEeBOjnVfUQ-" - target="_blank" data-bid="54e712e13671c"> - <b><b>This is the title</b></b></a> - </h3> - </div> - <div class="compText aAbs"> - <p class="lh-18"><b><b>This is the </b>content</b> - </p> - </div> - </div> - </li> -</ol> - """ - response = mock.Mock(text=html) - results = yahoo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title') - self.assertEqual(results[0]['url'], 'https://this.is.the.url/') - self.assertEqual(results[0]['content'], 'This is the content') - - html = """ - <li class="b_algo" u="0|5109|4755453613245655|UAGjXgIrPH5yh-o5oNHRx_3Zta87f_QO"> - </li> - """ - response = mock.Mock(text=html) - results = yahoo.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - def test_fetch_supported_languages(self): - html = """<html></html>""" - response = mock.Mock(text=html) - results = yahoo._fetch_supported_languages(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - html = """ - <html> - <div> - <div id="yschlang"> - <span> - <label><input value="lang_ar"></input></label> - </span> - <span> - <label><input value="lang_zh_chs"></input></label> - <label><input value="lang_zh_cht"></input></label> - </span> - </div> - </div> - </html> - """ - response = mock.Mock(text=html) - languages = yahoo._fetch_supported_languages(response) - self.assertEqual(type(languages), list) - self.assertEqual(len(languages), 3) - self.assertIn('ar', languages) - self.assertIn('zh-CHS', languages) - self.assertIn('zh-CHT', languages) diff --git a/tests/unit/engines/test_yahoo_news.py b/tests/unit/engines/test_yahoo_news.py deleted file mode 100644 index ae27df2a..00000000 --- a/tests/unit/engines/test_yahoo_news.py +++ /dev/null @@ -1,150 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -from datetime import datetime -import mock -from searx.engines import yahoo_news -from searx.testing import SearxTestCase - - -class TestYahooNewsEngine(SearxTestCase): - - def test_request(self): - yahoo_news.supported_languages = ['en', 'fr'] - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 1 - dicto['language'] = 'fr-FR' - params = yahoo_news.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('news.search.yahoo.com', params['url']) - self.assertIn('fr', params['url']) - self.assertIn('cookies', params) - self.assertIn('sB', params['cookies']) - self.assertIn('fr', params['cookies']['sB']) - - dicto['language'] = 'all' - params = yahoo_news.request(query, dicto) - self.assertIn('cookies', params) - self.assertIn('sB', params['cookies']) - self.assertIn('en', params['cookies']['sB']) - self.assertIn('en', params['url']) - - def test_sanitize_url(self): - url = "test.url" - self.assertEqual(url, yahoo_news.sanitize_url(url)) - - url = "www.yahoo.com/;_ylt=test" - self.assertEqual("www.yahoo.com/", yahoo_news.sanitize_url(url)) - - def test_response(self): - self.assertRaises(AttributeError, yahoo_news.response, None) - self.assertRaises(AttributeError, yahoo_news.response, []) - self.assertRaises(AttributeError, yahoo_news.response, '') - self.assertRaises(AttributeError, yahoo_news.response, '[]') - - response = mock.Mock(text='<html></html>') - self.assertEqual(yahoo_news.response(response), []) - - html = """ - <ol class=" reg searchCenterMiddle"> - <li class="first"> - <div class="compTitle"> - <h3> - <a class="yschttl spt" href="http://this.is.the.url" target="_blank"> - This is - the <b>title</b>... - </a> - </h3> - </div> - <div> - <span class="cite">Business via Yahoo!</span> - <span class="tri fc-2nd ml-10">May 01 10:00 AM</span> - </div> - <div class="compText"> - This is the content - </div> - </li> - <li class="first"> - <div class="compTitle"> - <h3> - <a class="yschttl spt" target="_blank"> - </a> - </h3> - </div> - <div class="compText"> - </div> - </li> - </ol> - """ - response = mock.Mock(text=html) - results = yahoo_news.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'This is the title...') - self.assertEqual(results[0]['url'], 'http://this.is.the.url/') - self.assertEqual(results[0]['content'], 'This is the content') - - html = """ - <ol class=" reg searchCenterMiddle"> - <li class="first"> - <div class="compTitle"> - <h3> - <a class="yschttl spt" href="http://this.is.the.url" target="_blank"> - This is - the <b>title</b>... - </a> - </h3> - </div> - <div> - <span class="cite">Business via Yahoo!</span> - <span class="tri fc-2nd ml-10">2 hours, 22 minutes ago</span> - </div> - <div class="compText"> - This is the content - </div> - </li> - <li> - <div class="compTitle"> - <h3> - <a class="yschttl spt" href="http://this.is.the.url" target="_blank"> - This is - the <b>title</b>... - </a> - </h3> - </div> - <div> - <span class="cite">Business via Yahoo!</span> - <span class="tri fc-2nd ml-10">22 minutes ago</span> - </div> - <div class="compText"> - This is the content - </div> - </li> - <li> - <div class="compTitle"> - <h3> - <a class="yschttl spt" href="http://this.is.the.url" target="_blank"> - This is - the <b>title</b>... - </a> - </h3> - </div> - <div> - <span class="cite">Business via Yahoo!</span> - <span class="tri fc-2nd ml-10">Feb 03 09:45AM 1900</span> - </div> - <div class="compText"> - This is the content - </div> - </li> - </ol> - """ - response = mock.Mock(text=html) - results = yahoo_news.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 3) - self.assertEqual(results[0]['title'], 'This is the title...') - self.assertEqual(results[0]['url'], 'http://this.is.the.url/') - self.assertEqual(results[0]['content'], 'This is the content') - self.assertEqual(results[2]['publishedDate'].year, datetime.now().year) diff --git a/tests/unit/engines/test_youtube_api.py b/tests/unit/engines/test_youtube_api.py deleted file mode 100644 index 0d4d478c..00000000 --- a/tests/unit/engines/test_youtube_api.py +++ /dev/null @@ -1,111 +0,0 @@ -from collections import defaultdict -import mock -from searx.engines import youtube_api -from searx.testing import SearxTestCase - - -class TestYoutubeAPIEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - dicto['language'] = 'fr_FR' - params = youtube_api.request(query, dicto) - self.assertTrue('url' in params) - self.assertTrue(query in params['url']) - self.assertIn('googleapis.com', params['url']) - self.assertIn('youtube', params['url']) - self.assertIn('fr', params['url']) - - dicto['language'] = 'all' - params = youtube_api.request(query, dicto) - self.assertFalse('fr' in params['url']) - - def test_response(self): - self.assertRaises(AttributeError, youtube_api.response, None) - self.assertRaises(AttributeError, youtube_api.response, []) - self.assertRaises(AttributeError, youtube_api.response, '') - self.assertRaises(AttributeError, youtube_api.response, '[]') - - response = mock.Mock(text='{}') - self.assertEqual(youtube_api.response(response), []) - - response = mock.Mock(text='{"data": []}') - self.assertEqual(youtube_api.response(response), []) - - json = """ - { - "kind": "youtube#searchListResponse", - "etag": "xmg9xJZuZD438sF4hb-VcBBREXc/YJQDcTBCDcaBvl-sRZJoXdvy1ME", - "nextPageToken": "CAUQAA", - "pageInfo": { - "totalResults": 1000000, - "resultsPerPage": 20 - }, - "items": [ - { - "kind": "youtube#searchResult", - "etag": "xmg9xJZuZD438sF4hb-VcBBREXc/IbLO64BMhbHIgWLwLw7MDYe7Hs4", - "id": { - "kind": "youtube#video", - "videoId": "DIVZCPfAOeM" - }, - "snippet": { - "publishedAt": "2015-05-29T22:41:04.000Z", - "channelId": "UCNodmx1ERIjKqvcJLtdzH5Q", - "title": "Title", - "description": "Description", - "thumbnails": { - "default": { - "url": "https://i.ytimg.com/vi/DIVZCPfAOeM/default.jpg" - }, - "medium": { - "url": "https://i.ytimg.com/vi/DIVZCPfAOeM/mqdefault.jpg" - }, - "high": { - "url": "https://i.ytimg.com/vi/DIVZCPfAOeM/hqdefault.jpg" - } - }, - "channelTitle": "MinecraftUniverse", - "liveBroadcastContent": "none" - } - } - ] - } - """ - response = mock.Mock(text=json) - results = youtube_api.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 1) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'https://www.youtube.com/watch?v=DIVZCPfAOeM') - self.assertEqual(results[0]['content'], 'Description') - self.assertEqual(results[0]['thumbnail'], 'https://i.ytimg.com/vi/DIVZCPfAOeM/hqdefault.jpg') - self.assertTrue('DIVZCPfAOeM' in results[0]['embedded']) - - json = """ - { - "kind": "youtube#searchListResponse", - "etag": "xmg9xJZuZD438sF4hb-VcBBREXc/YJQDcTBCDcaBvl-sRZJoXdvy1ME", - "nextPageToken": "CAUQAA", - "pageInfo": { - "totalResults": 1000000, - "resultsPerPage": 20 - } - } - """ - response = mock.Mock(text=json) - results = youtube_api.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) - - json = """ - {"toto":{"entry":[] - } - } - """ - response = mock.Mock(text=json) - results = youtube_api.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/test_youtube_noapi.py b/tests/unit/engines/test_youtube_noapi.py deleted file mode 100644 index cbf7b9bc..00000000 --- a/tests/unit/engines/test_youtube_noapi.py +++ /dev/null @@ -1,124 +0,0 @@ -# -*- coding: utf-8 -*- -from collections import defaultdict -import mock -from searx.engines import youtube_noapi -from searx.testing import SearxTestCase - - -class TestYoutubeNoAPIEngine(SearxTestCase): - - def test_request(self): - query = 'test_query' - dicto = defaultdict(dict) - dicto['pageno'] = 0 - dicto['time_range'] = '' - params = youtube_noapi.request(query, dicto) - self.assertIn('url', params) - self.assertIn(query, params['url']) - self.assertIn('youtube.com', params['url']) - - def test_time_range_search(self): - dicto = defaultdict(dict) - query = 'test_query' - dicto['time_range'] = 'year' - params = youtube_noapi.request(query, dicto) - self.assertIn('&sp=EgIIBQ%253D%253D', params['url']) - - dicto['time_range'] = 'month' - params = youtube_noapi.request(query, dicto) - self.assertIn('&sp=EgIIBA%253D%253D', params['url']) - - dicto['time_range'] = 'week' - params = youtube_noapi.request(query, dicto) - self.assertIn('&sp=EgIIAw%253D%253D', params['url']) - - dicto['time_range'] = 'day' - params = youtube_noapi.request(query, dicto) - self.assertIn('&sp=EgIIAg%253D%253D', params['url']) - - def test_response(self): - self.assertRaises(AttributeError, youtube_noapi.response, None) - self.assertRaises(AttributeError, youtube_noapi.response, []) - self.assertRaises(AttributeError, youtube_noapi.response, '') - self.assertRaises(AttributeError, youtube_noapi.response, '[]') - - response = mock.Mock(text='<html></html>') - self.assertEqual(youtube_noapi.response(response), []) - - html = """ - <div></div> - <script> - window["ytInitialData"] = { - "contents": { - "twoColumnSearchResultsRenderer": { - "primaryContents": { - "sectionListRenderer": { - "contents": [ - { - "itemSectionRenderer": { - "contents": [ - { - "videoRenderer": { - "videoId": "DIVZCPfAOeM", - "title": { - "simpleText": "Title" - }, - "descriptionSnippet": { - "runs": [ - { - "text": "Des" - }, - { - "text": "cription" - } - ] - } - } - }, - { - "videoRenderer": { - "videoId": "9C_HReR_McQ", - "title": { - "simpleText": "Title" - }, - "descriptionSnippet": { - "simpleText": "Description" - } - } - } - ] - } - } - ] - } - } - } - } - }; - </script> - """ - response = mock.Mock(text=html) - results = youtube_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 2) - self.assertEqual(results[0]['title'], 'Title') - self.assertEqual(results[0]['url'], 'https://www.youtube.com/watch?v=DIVZCPfAOeM') - self.assertEqual(results[0]['content'], 'Description') - self.assertEqual(results[0]['thumbnail'], 'https://i.ytimg.com/vi/DIVZCPfAOeM/hqdefault.jpg') - self.assertTrue('DIVZCPfAOeM' in results[0]['embedded']) - self.assertEqual(results[1]['title'], 'Title') - self.assertEqual(results[1]['url'], 'https://www.youtube.com/watch?v=9C_HReR_McQ') - self.assertEqual(results[1]['content'], 'Description') - self.assertEqual(results[1]['thumbnail'], 'https://i.ytimg.com/vi/9C_HReR_McQ/hqdefault.jpg') - self.assertTrue('9C_HReR_McQ' in results[1]['embedded']) - - html = """ - <ol id="item-section-063864" class="item-section"> - <li> - </li> - </ol> - """ - response = mock.Mock(text=html) - results = youtube_noapi.response(response) - self.assertEqual(type(results), list) - self.assertEqual(len(results), 0) diff --git a/tests/unit/engines/unsplash_fixture.json b/tests/unit/engines/unsplash_fixture.json deleted file mode 100644 index 4c8db2a2..00000000 --- a/tests/unit/engines/unsplash_fixture.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "total": 2, - "total_pages": 1, - "results": [ - { - "id": "FY8d721UO_4", - "created_at": "2018-04-12T14:20:35-04:00", - "updated_at": "2018-08-28T20:58:33-04:00", - "width": 3891, - "height": 5829, - "color": "#152C33", - "description": "low angle photography of swimming penguin", - "urls": { - "raw": "https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=095c5fc319c5a77c705f49ad63e0f195", - "full": "https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjEyMDd9&s=74be977849c173d6929636d491a760c3", - "regular": "https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=ad65df26970bd010085f0ca25434de33", - "small": "https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=5d2edfd073c31eb8ee7b305222bdc5a2", - "thumb": "https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=a9b9e56e63efc6f4611a87ce7e9a48f8" - }, - "links": { - "self": "https://api.unsplash.com/photos/FY8d721UO_4", - "html": "https://unsplash.com/photos/FY8d721UO_4", - "download": "https://unsplash.com/photos/FY8d721UO_4/download", - "download_location": "https://api.unsplash.com/photos/FY8d721UO_4/download" - }, - "categories": [], - "sponsored": false, - "likes": 31, - "liked_by_user": false, - "current_user_collections": [], - "slug": null, - "user": { - "id": "N4gE4mrG8lE", - "updated_at": "2018-10-03T02:51:19-04:00", - "username": "gaspanik", - "name": "Masaaki Komori", - "first_name": "Masaaki", - "last_name": "Komori", - "twitter_username": "cipher", - "portfolio_url": "https://www.instagram.com/cipher/", - "bio": null, - "location": "Tokyo, JAPAN", - "links": { - "self": "https://api.unsplash.com/users/gaspanik", - "html": "https://unsplash.com/@gaspanik", - "photos": "https://api.unsplash.com/users/gaspanik/photos", - "likes": "https://api.unsplash.com/users/gaspanik/likes", - "portfolio": "https://api.unsplash.com/users/gaspanik/portfolio", - "following": "https://api.unsplash.com/users/gaspanik/following", - "followers": "https://api.unsplash.com/users/gaspanik/followers" - }, - "profile_image": { - "small": "https://images.unsplash.com/profile-fb-1502270358-e7c86c1011ce.jpg?ixlib=rb-0.3.5&q=80&fm=jpg&crop=faces&cs=tinysrgb&fit=crop&h=32&w=32&s=9fe12f6d177bd6fdbd56d233a80c01a3", - "medium": "https://images.unsplash.com/profile-fb-1502270358-e7c86c1011ce.jpg?ixlib=rb-0.3.5&q=80&fm=jpg&crop=faces&cs=tinysrgb&fit=crop&h=64&w=64&s=6ad7d156b62e438ae9dc794cba712fff", - "large": "https://images.unsplash.com/profile-fb-1502270358-e7c86c1011ce.jpg?ixlib=rb-0.3.5&q=80&fm=jpg&crop=faces&cs=tinysrgb&fit=crop&h=128&w=128&s=13a08a2e72e7d11632410e92bd3a9406" - }, - "instagram_username": "cipher", - "total_collections": 0, - "total_likes": 406, - "total_photos": 196 - }, - "tags": [ - { - "title": "animal" - }, - { - "title": "water" - }, - { - "title": "swim" - }, - { - "title": "aquarium" - }, - { - "title": "wallpaper" - }, - { - "title": "blue" - }, - { - "title": "sealife" - }, - { - "title": "wildlife" - }, - { - "title": "bird" - }, - { - "title": "deep sea" - }, - { - "title": "fish" - }, - { - "title": "water life" - } - ], - "photo_tags": [ - { - "title": "animal" - }, - { - "title": "water" - }, - { - "title": "swim" - }, - { - "title": "aquarium" - }, - { - "title": "wallpaper" - } - ] - }, - { - "id": "ayKyc01xLWA", - "created_at": "2018-02-16T23:14:31-05:00", - "updated_at": "2018-08-28T20:48:27-04:00", - "width": 4928, - "height": 3264, - "color": "#161618", - "description": "black and white penguins on ice field", - "urls": { - "raw": "https://images.unsplash.com/photo-1518840801558-9770b4a34eeb?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=4e107a2bc49ab561ba6272eea2ec725d", - "full": "https://images.unsplash.com/photo-1518840801558-9770b4a34eeb?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjEyMDd9&s=f9b1e4d4572ab44efb2cf3d601d2b4d9", - "regular": "https://images.unsplash.com/photo-1518840801558-9770b4a34eeb?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=4430cedb63841f1fe055d5005316cc96", - "small": "https://images.unsplash.com/photo-1518840801558-9770b4a34eeb?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=ee73c7af22ce445d408e240821ce07af", - "thumb": "https://images.unsplash.com/photo-1518840801558-9770b4a34eeb?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=934302390d383cad8c571905e3a80bac" - }, - "links": { - "self": "https://api.unsplash.com/photos/ayKyc01xLWA", - "html": "https://unsplash.com/photos/ayKyc01xLWA", - "download": "https://unsplash.com/photos/ayKyc01xLWA/download", - "download_location": "https://api.unsplash.com/photos/ayKyc01xLWA/download" - }, - "categories": [], - "sponsored": false, - "likes": 37, - "liked_by_user": false, - "current_user_collections": [], - "slug": null, - "user": { - "id": "tRb_KGw60Xk", - "updated_at": "2018-09-20T11:51:54-04:00", - "username": "ghost_cat", - "name": "Danielle Barnes", - "first_name": "Danielle", - "last_name": "Barnes", - "twitter_username": null, - "portfolio_url": null, - "bio": null, - "location": null, - "links": { - "self": "https://api.unsplash.com/users/ghost_cat", - "html": "https://unsplash.com/@ghost_cat", - "photos": "https://api.unsplash.com/users/ghost_cat/photos", - "likes": "https://api.unsplash.com/users/ghost_cat/likes", - "portfolio": "https://api.unsplash.com/users/ghost_cat/portfolio", - "following": "https://api.unsplash.com/users/ghost_cat/following", - "followers": "https://api.unsplash.com/users/ghost_cat/followers" - }, - "profile_image": { - "small": "https://images.unsplash.com/profile-fb-1508491082-ae77f53e9ac3.jpg?ixlib=rb-0.3.5&q=80&fm=jpg&crop=faces&cs=tinysrgb&fit=crop&h=32&w=32&s=751bf6a557763648d52ffd7e60e79436", - "medium": "https://images.unsplash.com/profile-fb-1508491082-ae77f53e9ac3.jpg?ixlib=rb-0.3.5&q=80&fm=jpg&crop=faces&cs=tinysrgb&fit=crop&h=64&w=64&s=e46cd1c8713035f045130e1b093b981e", - "large": "https://images.unsplash.com/profile-fb-1508491082-ae77f53e9ac3.jpg?ixlib=rb-0.3.5&q=80&fm=jpg&crop=faces&cs=tinysrgb&fit=crop&h=128&w=128&s=352eabcf107c3ce95fe51a18485f116b" - }, - "instagram_username": null, - "total_collections": 0, - "total_likes": 0, - "total_photos": 21 - }, - "tags": [ - { - "title": "ice" - }, - { - "title": "bird" - }, - { - "title": "ice field" - }, - { - "title": "iceberg" - }, - { - "title": "snow" - }, - { - "title": "frozen" - }, - { - "title": "animal" - }, - { - "title": "wildlife" - }, - { - "title": "wild" - }, - { - "title": "antarctica" - }, - { - "title": "sunshine" - }, - { - "title": "daylight" - }, - { - "title": "wilderness" - }, - { - "title": "south pole" - }, - { - "title": "flock" - } - ], - "photo_tags": [ - { - "title": "ice" - }, - { - "title": "bird" - }, - { - "title": "ice field" - }, - { - "title": "iceberg" - }, - { - "title": "snow" - } - ] - } - ] -} \ No newline at end of file From 34ad3d6b34017523a9502f86b92c17fe389918eb Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Sat, 21 Dec 2019 21:25:50 +0100 Subject: [PATCH 103/238] [enh] display error message if gigablast extra param expired --- searx/engines/gigablast.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py index 5af593e3..2bb29a9f 100644 --- a/searx/engines/gigablast.py +++ b/searx/engines/gigablast.py @@ -99,7 +99,7 @@ def response(resp): response_json = loads(resp.text) except: parse_extra_param(resp.text) - return results + raise Exception('extra param expired, please reload') for result in response_json['results']: # append result From 36ca2dcc56651688cd7ca8b8d925a9370bdc1dec Mon Sep 17 00:00:00 2001 From: Vipul <finn02@disroot.org> Date: Fri, 20 Dec 2019 23:34:22 +0000 Subject: [PATCH 104/238] [Fix] oscar: move info box at top of the page In low width devices like mobile, tablet etc, info box is present at bottom of the page. This change addresses the issue by rearranging column grids for low width devices and move side bar at top of the page. See - https://getbootstrap.com/docs/3.3/css/#grid-column-ordering. - and Searx issue tracker (issue#1777), for more information. Effect: Along with Info, Suggestion and Link boxes also move to top of the page. Resolves: #1777 --- searx/templates/oscar/results.html | 124 ++++++++++++++--------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/searx/templates/oscar/results.html b/searx/templates/oscar/results.html index 9cf94269..43e3e26d 100644 --- a/searx/templates/oscar/results.html +++ b/searx/templates/oscar/results.html @@ -15,7 +15,68 @@ {% include 'oscar/search.html' %} <div class="row"> - <div class="col-sm-8" id="main_results"> + <div class="col-sm-4 col-sm-push-8" id="sidebar_results"> + {% if number_of_results != '0' -%} + <p><small>{{ _('Number of results') }}: {{ number_of_results }}</small></p> + {%- endif %} + + {% if unresponsive_engines and results|length >= 1 -%} + <div class="alert alert-danger fade in" role="alert"> + <p>{{ _('Engines cannot retrieve results') }}:</p> + {%- for engine_name, error_type in unresponsive_engines -%} + {{- engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}{{- "" -}} + {%- endfor -%} + </div> + {%- endif %} + + {% if infoboxes -%} + {% for infobox in infoboxes %} + {% include 'oscar/infobox.html' %}{{- "\n\n" -}} + {% endfor %} + {%- endif %} + + {% if suggestions %} + <div class="panel panel-default"> + <div class="panel-heading"> + <h4 class="panel-title">{{ _('Suggestions') }}</h4> + </div> + <div class="panel-body"> + {% for suggestion in suggestions %} + <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item"> + <input type="hidden" name="q" value="{{ suggestion.url }}"> + <button type="submit" class="btn btn-default btn-xs">{{ suggestion.title }}</button> + </form> + {% endfor %} + </div> + </div> + {%- endif %} + + <div class="panel panel-default"> + <div class="panel-heading">{{- "" -}} + <h4 class="panel-title">{{ _('Links') }}</h4>{{- "" -}} + </div> + <div class="panel-body"> + <form role="form">{{- "" -}} + <div class="form-group">{{- "" -}} + <label for="search_url">{{ _('Search URL') }}</label>{{- "" -}} + <input id="search_url" type="url" class="form-control select-all-on-click cursor-text" name="search_url" value="{{ search_url() }}" readonly>{{- "" -}} + </div>{{- "" -}} + </form> + <label>{{ _('Download results') }}</label> + <div class="clearfix"></div> + {% for output_type in ('csv', 'json', 'rss') %} + <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} result_download"> + {{- search_form_attrs(pageno) -}} + <input type="hidden" name="format" value="{{ output_type }}">{{- "" -}} + <button type="submit" class="btn btn-default">{{ output_type }}</button>{{- "" -}} + </form> + {% endfor %} + <div class="clearfix"></div> + </div> + </div> + </div><!-- /#sidebar_results --> + + <div class="col-sm-8 col-sm-pull-4" id="main_results"> <h1 class="sr-only">{{ _('Search results') }}</h1> {% if corrections -%} @@ -91,66 +152,5 @@ {% endif %} {% endif %} </div><!-- /#main_results --> - - <div class="col-sm-4" id="sidebar_results"> - {% if number_of_results != '0' -%} - <p><small>{{ _('Number of results') }}: {{ number_of_results }}</small></p> - {%- endif %} - - {% if unresponsive_engines and results|length >= 1 -%} - <div class="alert alert-danger fade in" role="alert"> - <p>{{ _('Engines cannot retrieve results') }}:</p> - {%- for engine_name, error_type in unresponsive_engines -%} - {{- engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}{{- "" -}} - {%- endfor -%} - </div> - {%- endif %} - - {% if infoboxes -%} - {% for infobox in infoboxes %} - {% include 'oscar/infobox.html' %}{{- "\n\n" -}} - {% endfor %} - {%- endif %} - - {% if suggestions %} - <div class="panel panel-default"> - <div class="panel-heading"> - <h4 class="panel-title">{{ _('Suggestions') }}</h4> - </div> - <div class="panel-body"> - {% for suggestion in suggestions %} - <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item"> - <input type="hidden" name="q" value="{{ suggestion.url }}"> - <button type="submit" class="btn btn-default btn-xs">{{ suggestion.title }}</button> - </form> - {% endfor %} - </div> - </div> - {%- endif %} - - <div class="panel panel-default"> - <div class="panel-heading">{{- "" -}} - <h4 class="panel-title">{{ _('Links') }}</h4>{{- "" -}} - </div> - <div class="panel-body"> - <form role="form">{{- "" -}} - <div class="form-group">{{- "" -}} - <label for="search_url">{{ _('Search URL') }}</label>{{- "" -}} - <input id="search_url" type="url" class="form-control select-all-on-click cursor-text" name="search_url" value="{{ search_url() }}" readonly>{{- "" -}} - </div>{{- "" -}} - </form> - <label>{{ _('Download results') }}</label> - <div class="clearfix"></div> - {% for output_type in ('csv', 'json', 'rss') %} - <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} result_download"> - {{- search_form_attrs(pageno) -}} - <input type="hidden" name="format" value="{{ output_type }}">{{- "" -}} - <button type="submit" class="btn btn-default">{{ output_type }}</button>{{- "" -}} - </form> - {% endfor %} - <div class="clearfix"></div> - </div> - </div> - </div><!-- /#sidebar_results --> </div> {% endblock %} From 6a5aae65308b3808e4ebc0602c7f90b1a5cb888b Mon Sep 17 00:00:00 2001 From: Vipul <finn02@disroot.org> Date: Sun, 22 Dec 2019 01:21:22 +0000 Subject: [PATCH 105/238] [Fix] oscar: no HTML escaping prior to output When results are fetched from any programming related documentation site (like git-scm.com, docs.python.org etc), content in Info box is shown as raw HTML code. This change addresses the issue by using "safe" filter feature provided by Django. See, - https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#safe - Searx issue tracker (issue #1649), for more information. Resolves: #1649 --- searx/templates/oscar/infobox.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/templates/oscar/infobox.html b/searx/templates/oscar/infobox.html index 9f5e58d2..9802f11e 100644 --- a/searx/templates/oscar/infobox.html +++ b/searx/templates/oscar/infobox.html @@ -6,7 +6,7 @@ <div class="panel-body"> {% if infobox.img_src %}<img class="img-responsive center-block infobox_part" src="{{ image_proxify(infobox.img_src) }}" alt="{{ infobox.infobox }}" />{% endif %} - {% if infobox.content %}<bdi><p class="infobox_part">{{ infobox.content }}</p></bdi>{% endif %} + {% if infobox.content %}<bdi><p class="infobox_part">{{ infobox.content | safe }}</p></bdi>{% endif %} {% if infobox.attributes -%} <table class="table table-striped infobox_part"> From c18048e0454f4e3dc75c778940903091fbeae06a Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin <marc-abonce@mailbox.org> Date: Sun, 25 Aug 2019 22:23:37 -0700 Subject: [PATCH 106/238] exclude disambiguation pages from wikipedia infobox --- searx/engines/wikipedia.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py index 690da72f..44dea56f 100644 --- a/searx/engines/wikipedia.py +++ b/searx/engines/wikipedia.py @@ -21,7 +21,8 @@ search_url = base_url + u'w/api.php?'\ 'action=query'\ '&format=json'\ '&{query}'\ - '&prop=extracts|pageimages'\ + '&prop=extracts|pageimages|pageprops'\ + '&ppprop=disambiguation'\ '&exintro'\ '&explaintext'\ '&pithumbsize=300'\ @@ -87,7 +88,7 @@ def response(resp): if int(article_id) > 0: break - if int(article_id) < 0: + if int(article_id) < 0 or 'disambiguation' in page.get('pageprops', {}): return [] title = page.get('title') From 5706c12fba98e169c7c76a4d3c29aabf48242d63 Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin <marc-abonce@mailbox.org> Date: Sun, 25 Aug 2019 22:47:23 -0700 Subject: [PATCH 107/238] remove empty parenthesis in wikipedia's summary They're usually IPA pronunciations which are removed by the API. --- searx/engines/wikipedia.py | 1 + 1 file changed, 1 insertion(+) diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py index 44dea56f..a216ba88 100644 --- a/searx/engines/wikipedia.py +++ b/searx/engines/wikipedia.py @@ -100,6 +100,7 @@ def response(resp): extract = page.get('extract') summary = extract_first_paragraph(extract, title, image) + summary = summary.replace('() ', '') # link to wikipedia article wikipedia_link = base_url.format(language=url_lang(resp.search_params['language'])) \ From 495ae59b31b6aafae484ecdfb6aece3a84f1ede7 Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin <marc-abonce@mailbox.org> Date: Sun, 25 Aug 2019 23:01:30 -0700 Subject: [PATCH 108/238] hide suggestions box if empty This bug happens only in python3 because map returns an iterator. --- searx/webapp.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index 7cf4106d..212c874c 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -606,11 +606,11 @@ def index(): # HTML output format # suggestions: use RawTextQuery to get the suggestion URLs with the same bang - suggestion_urls = map(lambda suggestion: { - 'url': raw_text_query.changeSearchQuery(suggestion).getFullQuery(), - 'title': suggestion - }, - result_container.suggestions) + suggestion_urls = list(map(lambda suggestion: { + 'url': raw_text_query.changeSearchQuery(suggestion).getFullQuery(), + 'title': suggestion + }, + result_container.suggestions)) correction_urls = list(map(lambda correction: { 'url': raw_text_query.changeSearchQuery(correction).getFullQuery(), From 5bdca1a5bfeb825dd1efab426a6f5ec31efba7d0 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 22 Dec 2019 11:46:03 +0100 Subject: [PATCH 109/238] doc: improved HTML table layout (CSS) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/_themes/searx/static/searx.css | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index 10cfc413..347fc71a 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -89,3 +89,35 @@ div.rst-example { display: none; } } + +/* Table theme +*/ + + +thead, tfoot { + background-color: #fff; +} + +th:hover, td:hover { + background-color: #ffc; +} + +thead th, tfoot th, tfoot td, tbody th { + background-color: #fffaef; +} + +tbody tr:nth-child(odd) { + background-color: #fff; +} + +tbody tr:nth-child(even) { + background-color: #fafafa; +} + +caption { + font-family: Sans Serif; + padding: 0.5em; + margin: 0.5em 0 0.5em 0; + caption-side: top; + text-align: left; +} From ee6781d777f3a95f6e1c23499ecbc7257d5e35ec Mon Sep 17 00:00:00 2001 From: Vipul <finn02@disroot.org> Date: Sat, 14 Sep 2019 12:37:39 +0000 Subject: [PATCH 110/238] [Fix] Libgen engine Libgen has switched to new domain (i.e https://libgen.is) with TLS support and older domain (i.e. http://libgen.io) is no longer accessible. See, https://en.wikipedia.org/wiki/Library_Genesis, for more information. Resolves: #1693 --- searx/settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/settings.yml b/searx/settings.yml index cf2b13e0..539049ea 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -407,7 +407,7 @@ engines: - name : library genesis engine : xpath - search_url : http://libgen.io/search.php?req={query} + search_url : https://libgen.is/search.php?req={query} url_xpath : //a[contains(@href,"bookfi.net")]/@href title_xpath : //a[contains(@href,"book/")]/text()[1] content_xpath : //td/a[1][contains(@href,"=author")]/text() From aa3b0265e761eec07055d8f248d677a5cb4e8725 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 22 Dec 2019 14:05:33 +0100 Subject: [PATCH 111/238] doc: add 'Architecture' article to admin section Herein we add some hints and suggestions about typical architectures of searx infrastructures. We start with a contribution from @dalf - https://github.com/asciimoo/searx/pull/1776#issuecomment-567917320 thanks @dalf !! Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/admin/arch_public.dot | 33 +++++++++++++++++++++++++++++++++ docs/admin/architecture.rst | 24 ++++++++++++++++++++++++ docs/admin/index.rst | 1 + docs/dev/contribution_guide.rst | 2 ++ 4 files changed, 60 insertions(+) create mode 100644 docs/admin/arch_public.dot create mode 100644 docs/admin/architecture.rst diff --git a/docs/admin/arch_public.dot b/docs/admin/arch_public.dot new file mode 100644 index 00000000..a46c96de --- /dev/null +++ b/docs/admin/arch_public.dot @@ -0,0 +1,33 @@ +digraph G { + + node [style=filled, shape=box, fillcolor="#ffffcc", fontname="Sans"]; + edge [fontname="Sans"]; + + browser [label="Browser", shape=Mdiamond]; + rp [label="Reverse Proxy", href="url to configure reverse proxy"]; + filtron [label="Filtron", href="https://github.com/asciimoo/filtron"]; + morty [label="Morty", href="https://github.com/asciimoo/morty"]; + static [label="Static files", href="url to configure static files"]; + uwsgi [label="uwsgi", href="url to configure uwsgi"] + searx1 [label="Searx #1"]; + searx2 [label="Searx #2"]; + searx3 [label="Searx #3"]; + searx4 [label="Searx #4"]; + + browser -> rp [label="HTTPS"] + + subgraph cluster_searx { + label = "Searx instance" fontname="Sans"; + bgcolor="#fafafa"; + { rank=same; static rp }; + rp -> morty [label="optional: images and HTML pages proxy"]; + rp -> static [label="optional: reverse proxy serves directly static files"]; + rp -> filtron [label="HTTP"]; + filtron -> uwsgi [label="HTTP"]; + uwsgi -> searx1; + uwsgi -> searx2; + uwsgi -> searx3; + uwsgi -> searx4; + } + +} diff --git a/docs/admin/architecture.rst b/docs/admin/architecture.rst new file mode 100644 index 00000000..7064a294 --- /dev/null +++ b/docs/admin/architecture.rst @@ -0,0 +1,24 @@ +.. _architecture: + +============ +Architecture +============ + +.. sidebar:: Needs work! + + This article needs some work / Searx is a collaborative effort. If you have + any contribution, feel welcome to send us your :pull:`PR <../pulls>`, see + :ref:`how to contribute`. + +Herein you will find some hints and suggestions about typical architectures of +searx infrastructures. + +We start with a contribution from :pull:`@dalf <1776#issuecomment-567917320>`. +It shows a *reference* setup for public searx instances. + +.. _arch public: + +.. kernel-figure:: arch_public.dot + :alt: arch_public.dot + + Reference architecture of a public searx setup. diff --git a/docs/admin/index.rst b/docs/admin/index.rst index 6e9a3451..1b05db42 100644 --- a/docs/admin/index.rst +++ b/docs/admin/index.rst @@ -7,6 +7,7 @@ Administrator documentation installation api + architecture filtron morty engines diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index 6d8d3924..ccc101d2 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -1,3 +1,5 @@ +.. _how to contribute: + ================= How to contribute ================= From 31db843c9c1f66da4ab2f8f23f969a0671ae6e65 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 22 Dec 2019 14:08:57 +0100 Subject: [PATCH 112/238] doc: CSS - fix alignment of code block in figure blocks BTW: minor profread of reST.rst Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/_themes/searx/static/searx.css | 8 +++++++- docs/dev/reST.rst | 7 +++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index 347fc71a..05bbb49d 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -90,10 +90,16 @@ div.rst-example { } } +/* code block in figures + */ + +div.highlight pre { + text-align: left; +} + /* Table theme */ - thead, tfoot { background-color: #fff; } diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 9e90c8c6..ff76ea91 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -1090,10 +1090,9 @@ Templating Templating is suitable for documentation which is created generic at the build time. The sphinx-jinja_ extension evaluates jinja_ templates in the :ref:`build -environment <make pyenv>` with installed searx modules. We use this e.g. to -build chapter: :ref:`engines generic`. - -Here is the content of the :origin:`docs/admin/engines.rst`: +environment <make pyenv>` (with searx modules installed). We use this e.g. to +build chapter: :ref:`engines generic`. Below the jinja directive from the +:origin:`docs/admin/engines.rst` is shown: .. literalinclude:: ../admin/engines.rst :language: reST From f407dd8ef4e3f6c82bef31f678139d6db2a4d810 Mon Sep 17 00:00:00 2001 From: Vipul <finn02@disroot.org> Date: Sat, 14 Sep 2019 12:45:02 +0000 Subject: [PATCH 113/238] Switch to https for some domains --- searx/settings.yml | 8 ++++---- searx/settings_robot.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/searx/settings.yml b/searx/settings.yml index 539049ea..d9a1f45f 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -463,7 +463,7 @@ engines: - name : openairedatasets engine : json_engine paging : True - search_url : http://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query} + search_url : https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query} results_query : response/results/result url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$ title_query : metadata/oaf:entity/oaf:result/title/$ @@ -475,7 +475,7 @@ engines: - name : openairepublications engine : json_engine paging : True - search_url : http://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query} + search_url : https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query} results_query : response/results/result url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$ title_query : metadata/oaf:entity/oaf:result/title/$ @@ -806,7 +806,7 @@ locales: doi_resolvers : oadoi.org : 'https://oadoi.org/' doi.org : 'https://doi.org/' - doai.io : 'http://doai.io/' - sci-hub.tw : 'http://sci-hub.tw/' + doai.io : 'https://doai.io/' + sci-hub.tw : 'https://sci-hub.tw/' default_doi_resolver : 'oadoi.org' diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml index 63580904..25f229e5 100644 --- a/searx/settings_robot.yml +++ b/searx/settings_robot.yml @@ -43,7 +43,7 @@ locales: doi_resolvers : oadoi.org : 'https://oadoi.org/' doi.org : 'https://doi.org/' - doai.io : 'http://doai.io/' - sci-hub.tw : 'http://sci-hub.tw/' + doai.io : 'https://doai.io/' + sci-hub.tw : 'https://sci-hub.tw/' default_doi_resolver : 'oadoi.org' From 90174e215c2eeb44ad8d76d7389ec5f661e63b82 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 22 Dec 2019 23:26:06 +0100 Subject: [PATCH 114/238] doc: add plugin section to admin section (template) - Plugins configured at built time (defaults) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/admin/index.rst | 1 + docs/admin/plugins.rst | 39 +++++++++++++++++++++++++++++++++++++++ docs/dev/plugins.rst | 6 ++++++ 3 files changed, 46 insertions(+) create mode 100644 docs/admin/plugins.rst diff --git a/docs/admin/index.rst b/docs/admin/index.rst index 1b05db42..c08cadb6 100644 --- a/docs/admin/index.rst +++ b/docs/admin/index.rst @@ -11,3 +11,4 @@ Administrator documentation filtron morty engines + plugins diff --git a/docs/admin/plugins.rst b/docs/admin/plugins.rst new file mode 100644 index 00000000..4ed9066f --- /dev/null +++ b/docs/admin/plugins.rst @@ -0,0 +1,39 @@ +.. _plugins generic: + +=============== +Plugins builtin +=============== + +.. sidebar:: Further reading .. + + - :ref:`dev plugin` + +Configuration defaults (at built time): + +:DO: Default on + +.. _configured plugins: + +.. jinja:: webapp + + .. flat-table:: Plugins configured at built time (defaults) + :header-rows: 1 + :stub-columns: 1 + :widths: 3 1 9 + + * - Name + - DO + - Description + + JS & CSS dependencies + + {% for plgin in plugins %} + + * - {{plgin.name}} + - {{(plgin.default_on and "y") or ""}} + - {{plgin.description}} + + {% for dep in (plgin.js_dependencies + plgin.css_dependencies) %} + | ``{{dep}}`` {% endfor %} + + {% endfor %} diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst index e97bbeb4..2bf44f18 100644 --- a/docs/dev/plugins.rst +++ b/docs/dev/plugins.rst @@ -1,7 +1,13 @@ +.. _dev plugin: + ======= Plugins ======= +.. sidebar:: Further reading .. + + - :ref:`plugins generic` + Plugins can extend or replace functionality of various components of searx. Example plugin From d3e4e81fafbdf24604924ce34c70c511c0531301 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 22 Dec 2019 23:28:07 +0100 Subject: [PATCH 115/238] makefile.sphinx: fix gh-pages / pull before add commits Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- utils/makefile.sphinx | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/makefile.sphinx b/utils/makefile.sphinx index 5cbc5ebd..2c1922fc 100644 --- a/utils/makefile.sphinx +++ b/utils/makefile.sphinx @@ -198,6 +198,7 @@ $(GH_PAGES):: $(MAKE) docs [ -d "gh-pages/.git" ] || git clone $(GIT_URL) gh-pages -cd $(GH_PAGES); git checkout gh-pages >/dev/null + -cd $(GH_PAGES); git pull -cd $(GH_PAGES); ls -A | grep -v '.git$$' | xargs rm -rf cp -r $(DOCS_DIST)/* $(GH_PAGES)/ touch $(GH_PAGES)/.nojekyll From c8645d6e376ba5a072be370d12efdec298f4e3ad Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 23 Dec 2019 09:37:51 +0100 Subject: [PATCH 116/238] doc: reST-primer -- imrpove desription of definition lists Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/dev/reST.rst | 64 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 13 deletions(-) diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index ff76ea91..c6aa990f 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -574,32 +574,70 @@ List markup (:duref:`ref <bullet-lists>`) is simple: Definition list --------------- -.. sidebar:: definition term +.. sidebar:: Note .. - Note that the term cannot have more than one line of text. + - the term cannot have more than one line of text -Definition lists (:duref:`ref <definition-lists>`) are created as follows: + - there is **no blank line between term and definition block** // this + distinguishes definition lists (:duref:`ref <definition-lists>`) from block + quotes (:duref:`ref <block-quotes>`). + +Each definition list (:duref:`ref <definition-lists>`) item contains a term, +optional classifiers and a definition. A term is a simple one-line word or +phrase. Optional classifiers may follow the term on the same line, each after +an inline ' : ' (**space, colon, space**). A definition is a block indented +relative to the term, and may contain multiple paragraphs and other body +elements. There may be no blank line between a term line and a definition block +(*this distinguishes definition lists from block quotes*). Blank lines are +required before the first and after the last definition list item, but are +optional in-between. + +Definition lists are created as follows: .. code:: reST - term (up to a line of text) - Definition of the term, which must be indented + term 1 (up to a line of text) + Definition 1. - and can even consist of multiple paragraphs + See the typo : this line is not a term! - next term - Description. + And this is not term's definition. **There is a blank line** in between + the line above and this paragraph. That's why this paragraph is taken as + **block quote** (:duref:`ref <block-quotes>`) and not as term's definition! + + term 2 + Definition 2, paragraph 1. + + Definition 2, paragraph 2. + + term 3 : classifier + Definition 3. + + term 4 : classifier one : classifier two + Definition 4. .. admonition:: definition list :class: rst-example - term (up to a line of text) - Definition of the term, which must be indented + term 1 (up to a line of text) + Definition 1. - and can even consist of multiple paragraphs + See the typo : this line is not a term! - next term - Description. + And this is not term's definition. **There is a blank line** in between + the line above and this paragraph. That's why this paragraph is taken as + **block quote** (:duref:`ref <block-quotes>`) and not as term's definition! + + + term 2 + Definition 2, paragraph 1. + + Definition 2, paragraph 2. + + term 3 : classifier + Definition 3. + + term 4 : classifier one : classifier two Quoted paragraphs From 8bea927bb02e02754834d6f9692942f621bd21c5 Mon Sep 17 00:00:00 2001 From: Vipul <finn02@disroot.org> Date: Sun, 22 Dec 2019 01:21:22 +0000 Subject: [PATCH 117/238] [Fix] oscar: no HTML escaping prior to output When results are fetched from any programming related documentation site (like git-scm.com, docs.python.org etc), content in Info box is shown as raw HTML code. This change addresses the issue by using "safe" filter feature provided by Django. See, - https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#safe - Searx issue tracker (issue #1649), for more information. Resolves: #1649 --- searx/templates/oscar/infobox.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/templates/oscar/infobox.html b/searx/templates/oscar/infobox.html index 9f5e58d2..9802f11e 100644 --- a/searx/templates/oscar/infobox.html +++ b/searx/templates/oscar/infobox.html @@ -6,7 +6,7 @@ <div class="panel-body"> {% if infobox.img_src %}<img class="img-responsive center-block infobox_part" src="{{ image_proxify(infobox.img_src) }}" alt="{{ infobox.infobox }}" />{% endif %} - {% if infobox.content %}<bdi><p class="infobox_part">{{ infobox.content }}</p></bdi>{% endif %} + {% if infobox.content %}<bdi><p class="infobox_part">{{ infobox.content | safe }}</p></bdi>{% endif %} {% if infobox.attributes -%} <table class="table table-striped infobox_part"> From 4ca8b69c81ddbd965ff88deeaed7bc4f0709fbf4 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Tue, 24 Dec 2019 18:48:23 +0100 Subject: [PATCH 118/238] doc(dev): add remarks about creating good commits (messages) preview (don't bookmark): https://return42.github.io/searx/dev/contribution_guide.html#code Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/dev/contribution_guide.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index ccc101d2..c6030fbe 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -50,6 +50,16 @@ Code ==== .. _PEP8: https://www.python.org/dev/peps/pep-0008/ +.. _Conventional Commits: https://www.conventionalcommits.org/ +.. _Git Commit Good Practice: https://wiki.openstack.org/wiki/GitCommitMessages +.. _Structural split of changes: + https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes + +.. sidebar:: Create good commits! + + - `Structural split of changes`_ + - `Conventional Commits`_ + - `Git Commit Good Practice`_ In order to submit a patch, please follow the steps below: @@ -59,6 +69,9 @@ In order to submit a patch, please follow the steps below: - PEP8_ standards apply, except the convention of line length - Maximum line length is 120 characters +- The cardinal rule for creating good commits is to ensure there is only one + *logical change* per commit / read `Structural split of changes`_ + - Check if your code breaks existing tests. If so, update the tests or fix your code. @@ -66,6 +79,16 @@ In order to submit a patch, please follow the steps below: - Add yourself to the :origin:`AUTHORS.rst` file. +- Choose meaning full commit messages, read `Conventional Commits`_ + + .. code:: + + <type>[optional scope]: <description> + + [optional body] + + [optional footer(s)] + - Create a pull request. For more help on getting started with searx development, see :ref:`devquickstart`. From 62505f8982c2bc2cae5456a7ab50932fea580cc4 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Dec 2019 09:57:21 +0100 Subject: [PATCH 119/238] docs(dev): add refs to to gitmoji and Semantic PR in contrib section preview (don't bookmark): https://return42.github.io/searx/dev/contribution_guide.html#code Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/dev/contribution_guide.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst index c6030fbe..459dfb44 100644 --- a/docs/dev/contribution_guide.rst +++ b/docs/dev/contribution_guide.rst @@ -54,13 +54,16 @@ Code .. _Git Commit Good Practice: https://wiki.openstack.org/wiki/GitCommitMessages .. _Structural split of changes: https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes +.. _gitmoji: https://gitmoji.carloscuesta.me/ +.. _Semantic PR: https://github.com/zeke/semantic-pull-requests .. sidebar:: Create good commits! - `Structural split of changes`_ - `Conventional Commits`_ - `Git Commit Good Practice`_ - + - some like to use: gitmoji_ + - not yet active: `Semantic PR`_ In order to submit a patch, please follow the steps below: From 92afe68d6532c93d455b7eafb827cc18b812a327 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Dec 2019 10:26:12 +0100 Subject: [PATCH 120/238] doc(dev): reST/sphinx add tabbed views extension (sphinx_tabs.tabs) See issue #1785: idea: in the doc, provide installation instructions with one tab per distrubution preview (don't bookmark): https://return42.github.io/searx/dev/reST.html#tabbed-views Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/conf.py | 1 + docs/dev/reST.rst | 75 ++++++++++++++++++++++++++++++++++++++++++++ requirements-dev.txt | 1 + 3 files changed, 77 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index e49562a3..b07e020d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -60,6 +60,7 @@ extensions = [ "sphinxcontrib.jinja", # https://github.com/tardyp/sphinx-jinja 'linuxdoc.rstFlatTable', # Implementation of the 'flat-table' reST-directive. 'linuxdoc.kfigure', # Sphinx extension which implements scalable image handling. + "sphinx_tabs.tabs", # https://github.com/djungelorm/sphinx-tabs ] intersphinx_mapping = { diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index c6aa990f..edd7e19b 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -1148,6 +1148,81 @@ points to the name space of the python module: ``webapp``. } +Tabbed views +============ + +.. _sphinx-tabs: https://github.com/djungelorm/sphinx-tabs +.. _basic-tabs: https://github.com/djungelorm/sphinx-tabs#basic-tabs +.. _group-tabs: https://github.com/djungelorm/sphinx-tabs#group-tabs +.. _code-tabs: https://github.com/djungelorm/sphinx-tabs#code-tabs + +With `sphinx-tabs`_ extension we have *tabbed views*. To provide installation +instructions with one tab per distribution we use the `group-tabs`_ directive, +others are basic-tabs_ and code-tabs_. + + +.. code:: reST + + .. tabs:: + + .. group-tab:: Linux + + Linux Line 1 + + .. group-tab:: Mac OSX + + Mac OSX Line 1 + + .. group-tab:: Windows + + Windows Line 1 + + .. tabs:: + + .. group-tab:: Linux + + Linux Line 1 + + .. group-tab:: Mac OSX + + Mac OSX Line 1 + + .. group-tab:: Windows + + Windows Line 1 + + +.. admonition:: Tabbed view (grouped) + :class: rst-example + + .. tabs:: + + .. group-tab:: Linux + + Linux Line 1 + + .. group-tab:: Mac OSX + + Mac OSX Line 1 + + .. group-tab:: Windows + + Windows Line 1 + + .. tabs:: + + .. group-tab:: Linux + + Linux Line 1 + + .. group-tab:: Mac OSX + + Mac OSX Line 1 + + .. group-tab:: Windows + + Windows Line 1 + .. _KISS: https://en.wikipedia.org/wiki/KISS_principle diff --git a/requirements-dev.txt b/requirements-dev.txt index 74754fa8..3e8f617a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,3 +13,4 @@ zope.testrunner==4.5.1 selenium==3.141.0 linuxdoc @ git+http://github.com/return42/linuxdoc.git sphinx-jinja +sphinx-tabs From d6f2802e4b6066b718e86ab53ea168ab2a3394e9 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sat, 28 Dec 2019 01:01:11 +0100 Subject: [PATCH 121/238] docs(dev): add more markups to reST primer - Literal blocks - Unicode substitution - Horizontal list - Math equations Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/conf.py | 2 + docs/dev/reST.rst | 277 ++++++++++++++++++++++++++++++++++++---------- 2 files changed, 222 insertions(+), 57 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b07e020d..e041428f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -49,6 +49,8 @@ extlinks['durole'] = ( 'http://docutils.sourceforge.net/docs/ref/rst/roles.html#%s', '') extlinks['dudir'] = ( 'http://docutils.sourceforge.net/docs/ref/rst/directives.html#%s', '') +extlinks['ctan'] = ( + 'https://ctan.org/pkg/%s', 'CTAN: ') extensions = [ 'sphinx.ext.extlinks', diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index edd7e19b..4dc1279f 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -11,10 +11,12 @@ reST primer We at searx are using reStructuredText (aka reST_) markup for all kind of documentation, with the builders from the Sphinx_ project a HTML output is -generated and deployed at :docs:`github.io <.>`. +generated and deployed at :docs:`github.io <.>`. For build prerequisites read +:ref:`docs build`. -The sources of Searx's documentation are located at :origin:`docs`. Run -:ref:`make docs-live <make docs-live>` to build HTML while editing. +The source files of Searx's documentation are located at :origin:`docs`. Sphinx +assumes source files to be encoded in UTF-8 by defaul. Run :ref:`make docs-live +<make docs-live>` to build HTML while editing. .. sidebar:: Further reading @@ -318,6 +320,123 @@ To list all anchors of the inventory (e.g. ``python``) use: $ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv +Literal blocks +============== + +The simplest form of :duref:`literal-blocks` is a indented block introduced by +two colons (``::``). For highlighting use :dudir:`highlight` or :ref:`reST +code` directive. To include literals from external files use directive +:dudir:`literalinclude`. + +.. _reST literal: + +``::`` +------ + +.. code:: reST + + :: + + Literal block + + Lorem ipsum dolor:: + + Literal block + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore :: + + Literal block + +.. admonition:: Literal block + :class: rst-example + + :: + + Literal block + + Lorem ipsum dolor:: + + Literal block + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore :: + + Literal block + + +.. _reST code: + +``code-block`` +-------------- + +.. _pygments: https://pygments.org/languages/ + +.. sidebar:: Syntax highlighting + + is handled by pygments_. + +The :rst:dir:`code-block` directive is a variant of the :dudir:`code` directive +with additional options. To learn more about code literals visit +:ref:`sphinx:code-examples`. + +.. code-block:: reST + + The URL ``/stats`` handle is shown in :ref:`stats-handle` + + .. code-block:: Python + :caption: python code block + :name: stats-handle + + @app.route('/stats', methods=['GET']) + def stats(): + """Render engine statistics page.""" + stats = get_engines_stats() + return render( + 'stats.html' + , stats = stats ) + +.. code-block:: reST + +.. admonition:: Code block + :class: rst-example + + The URL ``/stats`` handle is shown in :ref:`stats-handle` + + .. code-block:: Python + :caption: python code block + :name: stats-handle + + @app.route('/stats', methods=['GET']) + def stats(): + """Render engine statistics page.""" + stats = get_engines_stats() + return render( + 'stats.html' + , stats = stats ) + +Unicode substitution +==================== + +The :dudir:`unicode directive <unicode-character-codes>` converts Unicode +character codes (numerical values) to characters. This directive can only be +used within a substitution definition. + +.. code-block:: reST + + .. |copy| unicode:: 0xA9 .. copyright sign + .. |(TM)| unicode:: U+2122 + + Trademark |(TM)| and copyright |copy| glyphs. + +.. admonition:: Unicode + :class: rst-example + + .. |copy| unicode:: 0xA9 .. copyright sign + .. |(TM)| unicode:: U+2122 + + Trademark |(TM)| and copyright |copy| glyphs. + .. _reST roles: @@ -351,7 +470,7 @@ The general markup is one of: :rst:role:`kbd` :kbd:`C-x C-f` ``:kbd:`C-x C-f``` :rst:role:`menuselection` :menuselection:`Open --> File` ``:menuselection:`Open --> File``` :rst:role:`download` :download:`this file <reST.rst>` ``:download:`this file <reST.rst>``` - :rst:role:`math` :math:`a^2 + b^2 = c^2` ``:math:`a^2 + b^2 = c^2``` + math_ :math:`a^2 + b^2 = c^2` ``:math:`a^2 + b^2 = c^2``` :rst:role:`ref` :ref:`svg image example` ``:ref:`svg image example``` :rst:role:`command` :command:`ls -la` ``:command:`ls -la``` :durole:`emphasis` :emphasis:`italic` ``:emphasis:`italic``` @@ -371,16 +490,17 @@ Figures & Images is flexible. To get best results in the generated output format, install ImageMagick_ and Graphviz_. -Searx's sphinx setup includes: :ref:`linuxdoc:kfigure`. Scalable here means; -scalable in sense of the build process. Normally in absence of a converter +Searx's sphinx setup includes: :ref:`linuxdoc:kfigure`. Scaleable here means; +scaleable in sense of the build process. Normally in absence of a converter tool, the build process will break. From the authors POV it’s annoying to care about the build process when handling with images, especially since he has no access to the build process. With :ref:`linuxdoc:kfigure` the build process continues and scales output quality in dependence of installed image processors. -If you want to add an image, you should use the ``kernel-figure`` and -``kernel-image`` directives. E.g. to insert a figure with a scalable image -format use SVG (:ref:`svg image example`): +If you want to add an image, you should use the ``kernel-figure`` (inheritance +of :dudir:`figure`) and ``kernel-image`` (inheritance of :dudir:`image`) +directives. E.g. to insert a figure with a scaleable image format use SVG +(:ref:`svg image example`): .. code:: reST @@ -389,7 +509,7 @@ format use SVG (:ref:`svg image example`): .. kernel-figure:: svg_image.svg :alt: SVG image example - simple SVG image + Simple SVG image To refer the figure, a caption block is needed: :ref:`svg image example`. @@ -398,7 +518,7 @@ format use SVG (:ref:`svg image example`): .. kernel-figure:: svg_image.svg :alt: SVG image example - simple SVG image + Simple SVG image. To refer the figure, a caption block is needed: :ref:`svg image example`. @@ -571,6 +691,35 @@ List markup (:duref:`ref <bullet-lists>`) is simple: #. It has two items too. +Horizontal list +--------------- + +The :rst:dir:`.. hlist:: <hlist>` transforms a bullet list into a more compact +list. + +.. code:: reST + + .. hlist:: + + - first list item + - second list item + - third list item + ... + +.. admonition:: hlist + :class: rst-example + + .. hlist:: + + - first list item + - second list item + - third list item + - next list item + - next list item xxxx + - next list item yyyy + - next list item zzzz + + Definition list --------------- @@ -1158,70 +1307,84 @@ Tabbed views With `sphinx-tabs`_ extension we have *tabbed views*. To provide installation instructions with one tab per distribution we use the `group-tabs`_ directive, -others are basic-tabs_ and code-tabs_. +others are basic-tabs_ and code-tabs_. Below a *group-tab* example from +:ref:`docs build` is shown: +.. literalinclude:: ../admin/buildhosts.rst + :language: reST + :start-after: .. _system requirements: + :end-before: .. _system requirements END: + + +.. _math: + +Math equations +============== + +.. _Mathematics: https://en.wikibooks.org/wiki/LaTeX/Mathematics +.. _amsmath user guide: + http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/ctan/macros/latex/required/amsmath/amsldoc.pdf + +.. sidebar:: About LaTeX + + - `amsmath user guide`_ + - Mathematics_ + - :ref:`docs build` + +The input language for mathematics is LaTeX markup using the :ctan:`amsmath` +package. + +To embed LaTeX markup in reST documents, use role :rst:role:`:math: <math>` for +inline and directive :rst:dir:`.. math:: <math>` for block markup. .. code:: reST - .. tabs:: + In :math:numref:`schroedinger general` the time-dependent Schrödinger equation + is shown. - .. group-tab:: Linux + .. math:: + :label: schroedinger general - Linux Line 1 + \mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle = + \hat{H} |\,\psi (t) \rangle. - .. group-tab:: Mac OSX - - Mac OSX Line 1 - - .. group-tab:: Windows - - Windows Line 1 - - .. tabs:: - - .. group-tab:: Linux - - Linux Line 1 - - .. group-tab:: Mac OSX - - Mac OSX Line 1 - - .. group-tab:: Windows - - Windows Line 1 - - -.. admonition:: Tabbed view (grouped) +.. admonition:: LaTeX math equation :class: rst-example - .. tabs:: + In :math:numref:`schroedinger general` the time-dependent Schrödinger equation + is shown. - .. group-tab:: Linux + .. math:: + :label: schroedinger general - Linux Line 1 + \mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle = + \hat{H} |\,\psi (t) \rangle. - .. group-tab:: Mac OSX - Mac OSX Line 1 +The next example shows the difference of ``\tfrac`` (*textstyle*) and ``\dfrac`` +(*displaystyle*) used in a inline markup or another fraction. - .. group-tab:: Windows +.. code:: reST - Windows Line 1 + ``\tfrac`` **inline example** :math:`\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}` + ``\dfrac`` **inline example** :math:`\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}` - .. tabs:: +.. admonition:: Line spacing + :class: rst-example - .. group-tab:: Linux + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. ... + ``\tfrac`` **inline example** :math:`\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}` + At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd + gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Linux Line 1 - - .. group-tab:: Mac OSX - - Mac OSX Line 1 - - .. group-tab:: Windows - - Windows Line 1 + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. ... + ``\tfrac`` **inline example** :math:`\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}` + At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd + gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. .. _KISS: https://en.wikipedia.org/wiki/KISS_principle From d1892b211268d958e4134c82328ba1e6065a7fa3 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sat, 28 Dec 2019 01:25:16 +0100 Subject: [PATCH 122/238] docs(admin): add article 'Buildhosts' with system requirements Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/admin/buildhosts.rst | 103 ++++++++++++++++++++++++++++++++++++++ docs/admin/index.rst | 1 + docs/conf.py | 8 ++- 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 docs/admin/buildhosts.rst diff --git a/docs/admin/buildhosts.rst b/docs/admin/buildhosts.rst new file mode 100644 index 00000000..5260da03 --- /dev/null +++ b/docs/admin/buildhosts.rst @@ -0,0 +1,103 @@ +.. _buildhosts: + +========== +Buildhosts +========== + +.. sidebar:: This article needs some work + + If you have any contribution send us your :pull:`PR <../pulls>`, see + :ref:`how to contribute`. + +To get best results from build, its recommend to install additional packages +on build hosts. + +.. _docs build: + +Build docs +========== + +.. _Graphviz: https://graphviz.gitlab.io +.. _ImageMagick: https://www.imagemagick.org +.. _XeTeX: https://tug.org/xetex/ +.. _dvisvgm: https://dvisvgm.de/ + +.. sidebar:: Sphinx build needs + + - ImageMagick_ + - Graphviz_ + - XeTeX_ + - dvisvgm_ + +Most of the sphinx requirements are installed from :origin:`setup.py` and the +docs can be build from scratch with ``make docs``. For better math and image +processing additional packages are needed. The XeTeX_ needed not only for PDF +creation, its also needed for :ref:`math` when HTML output is build. + +To be able to do :ref:`sphinx:math-support` without CDNs, the math are rendered +as images (``sphinx.ext.imgmath`` extension). If your docs build (``make +docs``) shows warnings like this:: + + WARNING: dot(1) not found, for better output quality install \ + graphviz from http://www.graphviz.org + .. + WARNING: LaTeX command 'latex' cannot be run (needed for math \ + display), check the imgmath_latex setting + +you need to install additional packages on your build host, to get better HTML +output. + +.. _system requirements: + +.. tabs:: + + .. group-tab:: Ubuntu / debian + + .. code-block:: sh + + $ sudo apt install graphviz imagemagick texlive-xetex librsvg2-bin + + .. group-tab:: Arch Linux + + .. code-block:: sh + + $ sudo pacman -S graphviz imagemagick texlive-bin extra/librsvg + + .. group-tab:: Fedora / RHEL + + .. code-block:: sh + + $ sudo dnf install graphviz graphviz-gd texlive-xetex-bin librsvg2-tools + + +For PDF output you also need: + +.. tabs:: + + .. group-tab:: Ubuntu / debian + + .. code:: sh + + $ sudo apt texlive-latex-recommended texlive-extra-utils ttf-dejavu + + .. group-tab:: Arch Linux + + .. code:: sh + + $ sudo pacman -S texlive-core texlive-latexextra ttf-dejavu + + .. group-tab:: Fedora / RHEL + + .. code:: sh + + $ sudo dnf install \ + texlive-collection-fontsrecommended texlive-collection-latex \ + dejavu-sans-fonts dejavu-serif-fonts dejavu-sans-mono-fonts + +.. _system requirements END: + +.. literalinclude:: ../conf.py + :language: python + :start-after: # sphinx.ext.imgmath setup + :end-before: # sphinx.ext.imgmath setup END + diff --git a/docs/admin/index.rst b/docs/admin/index.rst index c08cadb6..7799343b 100644 --- a/docs/admin/index.rst +++ b/docs/admin/index.rst @@ -12,3 +12,4 @@ Administrator documentation morty engines plugins + buildhosts diff --git a/docs/conf.py b/docs/conf.py index e041428f..be0c9d6e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -53,6 +53,7 @@ extlinks['ctan'] = ( 'https://ctan.org/pkg/%s', 'CTAN: ') extensions = [ + 'sphinx.ext.imgmath', 'sphinx.ext.extlinks', 'sphinx.ext.viewcode', "sphinx.ext.autodoc", @@ -79,10 +80,15 @@ issues_github_path = "asciimoo/searx" # HTML ----------------------------------------------------------------- sys.path.append(os.path.abspath('_themes')) - html_theme_path = ['_themes'] html_theme = "searx" +# sphinx.ext.imgmath setup +html_math_renderer = 'imgmath' +imgmath_image_format = 'svg' +imgmath_font_size = 14 +# sphinx.ext.imgmath setup END + html_theme_options = {"index_sidebar_logo": True} html_context = { "project_links": [ From b91e07bbf156241f6236b7e26d389e10e37553a3 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sat, 28 Dec 2019 01:26:24 +0100 Subject: [PATCH 123/238] docs(css): render HTML rst-example slightly more discreet Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/_themes/searx/static/searx.css | 33 +++++++++++++++-------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css index 05bbb49d..d6a664f0 100644 --- a/docs/_themes/searx/static/searx.css +++ b/docs/_themes/searx/static/searx.css @@ -24,10 +24,12 @@ p.sidebar-title, .sidebar p { margin: 6pt; } -.sidebar li { +.sidebar li, +.hlist li { list-style-type: disclosure-closed; } + /* admonitions */ @@ -69,25 +71,24 @@ p.admonition-title:after { */ div.rst-example { - padding-left: 12px; - padding-right: 12px; background-color: inherit; - transform: scale(0.9); - transition: transform 1s; + margin: 0; + border-top: none; + border-right: 1px solid #ccc; + border-bottom: none; border-left: none; + border-radius: none; + padding: 0; } -@media screen { - div.rst-example:hover { - transform: scale(1); - padding-left: inherit; - padding-right: inherit; - border-left: inherit; - } - - div.rst-example:hover > .admonition-title { - display: none; - } +div.rst-example > p.admonition-title { + font-family: Sans Serif; + font-style: italic; + font-size: 0.8em; + display: block; + border-bottom: 1px solid #ccc; + padding: 0.5em 1em; + text-align: right; } /* code block in figures From 10997a01e012502fedb691deb6ad220a09b4f9ed Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 30 Dec 2019 20:29:37 +0100 Subject: [PATCH 124/238] docs(admin): add weight & disabled cols to engine table BTW: remove internal suspend_end_time Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/admin/engines.rst | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/admin/engines.rst b/docs/admin/engines.rst index 40c3b9e4..c1c69bb0 100644 --- a/docs/admin/engines.rst +++ b/docs/admin/engines.rst @@ -1,7 +1,7 @@ .. _engines generic: ======= -engines +Engines ======= .. sidebar:: Further reading .. @@ -22,9 +22,11 @@ Shortcut **S** Language support **L** Timeout **TO** Time range support **TR** Disabled **D** Offline **O** ------------- ----------- -------------------- ------------ -Suspend end **SE** -------------- ----------- --------------------------------- Safe search **SS** +------------- ----------- --------------------------------- +Weigth **W** +------------- ----------- --------------------------------- +Disabled **D** ============= =========== ================================= Configuration defaults (at built time): @@ -48,7 +50,8 @@ Configuration defaults (at built time): - D - TR - O - - SE + - W + - D {% for name, mod in engines.items() %} @@ -63,6 +66,7 @@ Configuration defaults (at built time): - {{(mod.disabled and "y") or ""}} - {{(mod.time_range_support and "y") or ""}} - {{(mod.offline and "y") or ""}} - - {{mod.suspend_end_time}} + - {{mod.weight or 1 }} + - {{(mod.disabled and "y") or ""}} {% endfor %} From f9be534b2a480662800b01a7b1e37fa8e3b8a3b3 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 30 Dec 2019 21:55:15 +0100 Subject: [PATCH 125/238] docs(dev): fix minor markup typos Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/dev/search_api.rst | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index 8ca804b8..13ae6f1b 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -33,48 +33,48 @@ Parameters ``categories`` : optional Comma separated list, specifies the active search categories -``engines``: optional +``engines`` : optional Comma separated list, specifies the active search engines. -``lang``: default ``all`` +``lang`` : default ``all`` Code of the language. -``pageno``: default ``1`` +``pageno`` : default ``1`` Search page number. -``time_range``: optional +``time_range`` : optional [ ``day``, ``month``, ``year`` ] Time range of search for engines which support it. See if an engine supports time range search in the preferences page of an instance. -``format``: optional +``format`` : optional [ ``json``, ``csv``, ``rss`` ] Output format of results. -``results_on_new_tab``: default ``0`` +``results_on_new_tab`` : default ``0`` [ ``0``, ``1`` ] Open search results on new tab. -``image_proxy``: default ``False`` +``image_proxy`` : default ``False`` [ ``True``, ``False`` ] Proxy image results through searx. -``autocomplete``: default *empty* +``autocomplete`` : default *empty* [ ``google``, ``dbpedia``, ``duckduckgo``, ``startpage``, ``wikipedia`` ] Service which completes words as you type. -``safesearch``: default ``None`` +``safesearch`` : default ``None`` [ ``0``, ``1``, ``None`` ] Filter search results of engines which support safe search. See if an engine supports safe search in the preferences page of an instance. -``theme``: default ``oscar`` +``theme`` : default ``oscar`` [ ``oscar``, ``simple``, ``legacy``, ``pix-art``, ``courgette`` ] Theme of instance. @@ -83,7 +83,7 @@ Parameters instance administrator deleted, created or renamed themes on his/her instance. See the available options in the preferences page of the instance. -``oscar-style``: default ``logicodev`` +``oscar-style`` : default ``logicodev`` [ ``pointhi``, ``logicodev`` ] Style of Oscar theme. It is only parsed if the theme of an instance is @@ -93,7 +93,7 @@ Parameters instance administrator deleted, created or renamed styles on his/her instance. See the available options in the preferences page of the instance. -``enabled_plugins``: optional +``enabled_plugins`` : optional List of enabled plugins. :default: ``HTTPS_rewrite``, ``Self_Informations``, @@ -111,9 +111,9 @@ Parameters ``Vim-like_hotkeys``, ``Self_Informations``, ``Tracker_URL_remover``, ``Search_on_category_select`` -``enabled_engines``: optional : *all* :origin:`engines <searx/engines>` +``enabled_engines`` : optional : *all* :origin:`engines <searx/engines>` List of enabled engines. -``disabled_engines``: optional : *all* :origin:`engines <searx/engines>` +``disabled_engines`` : optional : *all* :origin:`engines <searx/engines>` List of disabled engines. From f602cb8e4dde214d51216fb547eb4dfdee32e191 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 30 Dec 2019 21:56:09 +0100 Subject: [PATCH 126/238] docs(admin): moved settings description from wiki to docs Move wiki entry https://github.com/asciimoo/searx/wiki/settings.yml into admin section of the docs (#1785). Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/admin/engines.rst | 3 +- docs/admin/index.rst | 1 + docs/admin/settings.rst | 181 ++++++++++++++++++++++++++++++++++++++++ docs/dev/search_api.rst | 7 +- 4 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 docs/admin/settings.rst diff --git a/docs/admin/engines.rst b/docs/admin/engines.rst index c1c69bb0..4b78c8c2 100644 --- a/docs/admin/engines.rst +++ b/docs/admin/engines.rst @@ -6,8 +6,7 @@ Engines .. sidebar:: Further reading .. - - :ref:`engines generic` - - :ref:`configured engines` + - :ref:`settings engine` - :ref:`engine settings` - :ref:`engine file` diff --git a/docs/admin/index.rst b/docs/admin/index.rst index 7799343b..b3c7f511 100644 --- a/docs/admin/index.rst +++ b/docs/admin/index.rst @@ -6,6 +6,7 @@ Administrator documentation :maxdepth: 1 installation + settings api architecture filtron diff --git a/docs/admin/settings.rst b/docs/admin/settings.rst new file mode 100644 index 00000000..0bfdcc6c --- /dev/null +++ b/docs/admin/settings.rst @@ -0,0 +1,181 @@ +.. _settings.yml: + +================ +``settings.yml`` +================ + +.. sidebar:: Further reading .. + + - :ref:`search API` + +This page describe the options possibilities of the settings.yml file. + +.. _settings global: + +Global Settings +=============== + +.. code:: yaml + + server: + port : 8888 + secret_key : "ultrasecretkey" # change this! + debug : False # debug mode, only for development + request_timeout : 2.0 # seconds + base_url : False # set custom base_url (or False) + themes_path : "" # custom ui themes path + default_theme : oscar # ui theme + useragent_suffix : "" # suffix of searx_useragent, could contain + # informations like admins email address + image_proxy : False # proxying image results through searx + default_locale : "" # default interface locale + + # uncomment below section if you want to use a proxy + + #outgoing_proxies : + # http : http://127.0.0.1:8080 + # https: http://127.0.0.1:8080 + + # uncomment below section only if you have more than one network interface + # which can be the source of outgoing search requests + + #source_ips: + # - 1.1.1.1 + # - 1.1.1.2 + + locales: + en : English + de : Deutsch + he : Hebrew + hu : Magyar + fr : Français + es : Español + it : Italiano + nl : Nederlands + ja : 日本語 (Japanese) + tr : Türkçe + ru : Russian + ro : Romanian + + +``port`` : + Port number of the searx web application if you run it directly using ``python + searx/webapp.py``. Doesn't apply to searx running on Apache or Nginx. + +``secret_key`` : + Used for cryptography purpose. + +``debug`` : + Allow a more detailed log if you run searx directly. Display *detailed* error + messages in the browser too, so this must be deactivated in production. + +``request_timeout`` : + Global timeout of the requests made to others engines in seconds. A bigger + timeout will allow to wait for answers from slow engines, but in consequence + will slow searx reactivity (the result page may take the time specified in the + timeout to load) + +``base_url`` : + The base URL where searx is deployed. Used to create correct inbound links. + +``themes_path`` : + Path to where the themes are located. If you didn't develop anything, leave it + blank. + +``default_theme`` : + Name of the theme you want to use by default on you searx instance. + +``useragent_suffix`` : + Suffix to the user-agent searx uses to send requests to others engines. If an + engine wish to block you, a contact info here may be useful to avoid that. + +``image_proxy`` : + Allow your instance of searx of being able to proxy images. Uses memory space. + +``default_locale`` : + Aearx interface language. If blank, the locale is detected by using the + browser language. If it doesn't work, or you are deploying a language + specific instance of searx, a locale can be defined using an ISO language + code, like ``fr``, ``en``, ``de``. + +.. _requests proxies: http://docs.python-requests.org/en/latest/user/advanced/#proxies +.. _PR SOCKS support: https://github.com/kennethreitz/requests/pull/478 + +``outgoing_proxies`` : + Define a proxy you wish to use, see `requests proxies`_. SOCKS proxies are + not supported / see `PR SOCKS support`. + +``source_ips`` : + If you use multiple nework interfaces, define from which IP the requests must + be made. + +``locales`` : + Locales codes and their names. Available translations of searx interface. + + +.. _settings engine: + +Engine settings +=============== + +.. sidebar:: Further reading .. + + - :ref:`engines-dev` + +.. code:: yaml + + - name : bing + engine : bing + shortcut : bi + base_url : 'https://{language}.wikipedia.org/' + categories : general + timeout : 3.0 + api_key : 'apikey' + disabled : True + language : en_US + +``name`` : + Name that will be used accross searx to define this engine. In settings, on + the result page... + +``engine`` : + Name of the python file used to handle requests and responses to and from this + search engine. + +``shortcut`` : + Code used to execute bang requests (in this case using ``!bi`` or ``?bi``) + +``base_url`` : optional + Part of the URL that should be stable accross every request. Can be useful to + use multiple sites using only one engine, or updating the site URL without + touching at the code. + +``categories`` : optional + Define in which categories this engine will be active. Most of the time, it is + defined in the code of the engine, but in a few cases it is useful, like when + describing multiple search engine using the same code. + +``timeout`` : optional + Timeout of the search with the current search engine. **Be careful, it will + modify the global timeout of searx.** + +``api_key`` : optional + In a few cases, using an API needs the use of a secret key. How to obtain them + is described in the file. + +``disabled`` : optional + To disable by default the engine, but not deleting it. It will allow the user + to manually activate it in the settings. + +``language`` : optional + If you want to use another language for a specific engine, you can define it + by using the full ISO code of language and country, like ``fr_FR``, ``en_US``, + ``de_DE``. + +``weigth`` : default ``1`` + Weighting of the results of this engine. + +.. note:: + + A few more options are possible, but they are pretty specific to some + engines, and so won't be described here. diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index 13ae6f1b..922548ff 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -1,3 +1,5 @@ +.. _search API: + ========== Search API ========== @@ -16,10 +18,9 @@ Parameters .. sidebar:: Further reading .. + - :ref:`engines-dev` + - :ref:`settings.yml` - :ref:`engines generic` - - :ref:`configured engines` - - :ref:`engine settings` - - :ref:`engine file` ``q`` : required The search query. This string is passed to external search services. Thus, From a1d9c81915b169272cf26139445f3e08e9b689b9 Mon Sep 17 00:00:00 2001 From: Robin Schneider <ypid@riseup.net> Date: Tue, 31 Dec 2019 14:24:27 +0100 Subject: [PATCH 127/238] Fix Nginx subdir URL install docs which allowed download of settings.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: #1617 There is an issue with the setup example in https://asciimoo.github.io/searx/dev/install/installation.html#installation for subdirectory URL deployments: ```nginx root /usr/local/searx; location = /searx { rewrite ^ /searx/; } try_files $uri @searx; } location @searx { uwsgi_param SCRIPT_NAME /searx; include uwsgi_params; uwsgi_modifier1 30; uwsgi_pass unix:/run/uwsgi/app/searx/socket; } ``` `try_files` causes Nginx to search for files in the server root first. If it matches a file, it is returned. Only if no file matched, the request is passed to uwsgi. The worst consequence I can think of is that `settings.yml` can be downloaded without authentication (where secrets and configuration details are stored). To fix this, I propose: ```nginx location = /searx { rewrite ^ /searx/; } location /searx/static { } location /searx { uwsgi_param SCRIPT_NAME /searx; include uwsgi_params; uwsgi_pass unix:/run/uwsgi/app/searx/socket; } ``` And add ``` route-run = fixpathinfo: ``` to `/etc/uwsgi/apps-available/searx.ini` because `uwsgi_modifier1 30` is apparently deprecated. Ref: https://uwsgi-docs.readthedocs.io/en/latest/Changelog-2.0.11.html#fixpathinfo-routing-action I assume this issue exists because some uwsgi upstream docs also use the `try_files` construct (at least I have seen this somewhere in the docs or somewhere else on the Internet but cannot find it right now again). https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html#hosting-multiple-apps-in-the-same-process-aka-managing-script-name-and-path-info also warns about this: > If used incorrectly a configuration like this may cause security problems. For your sanity’s sake, double-triple-quadruple check that your application files, configuration files and any other sensitive files are outside of the root of the static files. --- docs/admin/installation.rst | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/admin/installation.rst b/docs/admin/installation.rst index 239ce070..28a6b061 100644 --- a/docs/admin/installation.rst +++ b/docs/admin/installation.rst @@ -114,6 +114,9 @@ content: # Module to import module = searx.webapp + # Support running the module from a webserver subdirectory. + route-run = fixpathinfo: + # Virtualenv and python path virtualenv = /usr/local/searx/searx-ve/ pythonpath = /usr/local/searx/ @@ -180,14 +183,16 @@ Add this configuration in the server config file .. code:: nginx - location = /searx { rewrite ^ /searx/; } - location /searx { - try_files $uri @searx; + location = /searx { + rewrite ^ /searx/; } - location @searx { + + location /searx/static { + } + + location /searx { uwsgi_param SCRIPT_NAME /searx; include uwsgi_params; - uwsgi_modifier1 30; uwsgi_pass unix:/run/uwsgi/app/searx/socket; } @@ -338,4 +343,3 @@ References * How to: `Setup searx in a couple of hours with a free SSL certificate <https://www.reddit.com/r/privacytoolsIO/comments/366kvn/how_to_setup_your_own_privacy_respecting_search/>`__ - From 088337295aaeebf8a37d6b4e859cd59019cd3d27 Mon Sep 17 00:00:00 2001 From: Robin Schneider <ypid@riseup.net> Date: Tue, 31 Dec 2019 14:37:01 +0100 Subject: [PATCH 128/238] Simply Nginx example by using alias directive for subdirectory URL We explicitly specific the static directory here using alias to allow to host from a other subdirectory than "searx" which just so happens to match the source code directory. --- docs/admin/installation.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/admin/installation.rst b/docs/admin/installation.rst index 28a6b061..e0b3779f 100644 --- a/docs/admin/installation.rst +++ b/docs/admin/installation.rst @@ -183,11 +183,8 @@ Add this configuration in the server config file .. code:: nginx - location = /searx { - rewrite ^ /searx/; - } - location /searx/static { + alias /usr/local/searx/searx/static; } location /searx { From 3e5a3ee4e49c739fdc464d47252c684a42620d48 Mon Sep 17 00:00:00 2001 From: Robin Schneider <ypid@riseup.net> Date: Tue, 31 Dec 2019 14:38:30 +0100 Subject: [PATCH 129/238] Let Nginx deliver static files directory in all examples --- docs/admin/installation.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/admin/installation.rst b/docs/admin/installation.rst index e0b3779f..15800fc0 100644 --- a/docs/admin/installation.rst +++ b/docs/admin/installation.rst @@ -154,7 +154,10 @@ content: server { listen 80; server_name searx.example.com; - root /usr/local/searx; + root /usr/local/searx/searx; + + location /static { + } location / { include uwsgi_params; @@ -199,6 +202,10 @@ in case of single-user or low-traffic instances.) .. code:: nginx + location /searx/static { + alias /usr/local/searx/searx/static; + } + location /searx { proxy_pass http://127.0.0.1:8888; proxy_set_header Host $host; From a1b85571a25d67b752bf6072255b928866be9c4f Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:28:18 +0100 Subject: [PATCH 130/238] [fix] tmp suspend insecure engines --- searx/settings.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/searx/settings.yml b/searx/settings.yml index 2a2d2bf8..2777f9ca 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -79,9 +79,10 @@ engines: categories : science timeout : 4.0 - - name : base - engine : base - shortcut : bs +# tmp suspended: dh key too small +# - name : base +# engine : base +# shortcut : bs - name : wikipedia engine : wikipedia @@ -552,10 +553,11 @@ engines: timeout : 10.0 disabled : True - - name : scanr structures - shortcut: scs - engine : scanr_structures - disabled : True +# tmp suspended: bad certificate +# - name : scanr structures +# shortcut: scs +# engine : scanr_structures +# disabled : True - name : soundcloud engine : soundcloud From 2292e6e130dca104cb324197b63611a012e4ef3c Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:28:47 +0100 Subject: [PATCH 131/238] [fix] handle missing result size --- searx/engines/bing.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/searx/engines/bing.py b/searx/engines/bing.py index ed0b87db..24776c40 100644 --- a/searx/engines/bing.py +++ b/searx/engines/bing.py @@ -63,6 +63,8 @@ def response(resp): results = [] result_len = 0 + + dom = html.fromstring(resp.text) # parse results for result in eval_xpath(dom, '//div[@class="sa_cc"]'): @@ -89,8 +91,7 @@ def response(resp): 'content': content}) try: - result_len_container = "".join(eval_xpath(dom, '//span[@class="sb_count"]/text()')) - result_len_container = utils.to_string(result_len_container) + result_len_container = "".join(eval_xpath(dom, '//span[@class="sb_count"]//text()')) if "-" in result_len_container: # Remove the part "from-to" for paginated request ... result_len_container = result_len_container[result_len_container.find("-") * 2 + 2:] @@ -102,7 +103,7 @@ def response(resp): logger.debug('result error :\n%s', e) pass - if _get_offset_from_pageno(resp.search_params.get("pageno", 0)) > result_len: + if result_len and _get_offset_from_pageno(resp.search_params.get("pageno", 0)) > result_len: return [] results.append({'number_of_results': result_len}) From 2dc2e1e8f9c8ae0d28df56f42b2f4949d8611624 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:29:10 +0100 Subject: [PATCH 132/238] [fix] skip invalid encoded attributes --- searx/engines/flickr_noapi.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/searx/engines/flickr_noapi.py b/searx/engines/flickr_noapi.py index 198ac2cf..e1abb378 100644 --- a/searx/engines/flickr_noapi.py +++ b/searx/engines/flickr_noapi.py @@ -109,14 +109,22 @@ def response(resp): else: url = build_flickr_url(photo['ownerNsid'], photo['id']) - results.append({'url': url, - 'title': title, - 'img_src': img_src, - 'thumbnail_src': thumbnail_src, - 'content': content, - 'author': author, - 'source': source, - 'img_format': img_format, - 'template': 'images.html'}) + result = { + 'url': url, + 'img_src': img_src, + 'thumbnail_src': thumbnail_src, + 'source': source, + 'img_format': img_format, + 'template': 'images.html' + } + try: + result['author'] = author.encode('utf-8') + result['title'] = title.encode('utf-8') + result['content'] = content.encode('utf-8') + except: + result['author'] = '' + result['title'] = '' + result['content'] = '' + results.append(result) return results From 86a378bd0109684bd45c917f94068e3c98441904 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:29:28 +0100 Subject: [PATCH 133/238] [fix] handle missing thumbnail --- searx/engines/ina.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/searx/engines/ina.py b/searx/engines/ina.py index 37a05f09..ea509649 100644 --- a/searx/engines/ina.py +++ b/searx/engines/ina.py @@ -32,7 +32,7 @@ base_url = 'https://www.ina.fr' search_url = base_url + '/layout/set/ajax/recherche/result?autopromote=&hf={ps}&b={start}&type=Video&r=&{query}' # specific xpath variables -results_xpath = '//div[contains(@class,"search-results--list")]/div[@class="media"]' +results_xpath = '//div[contains(@class,"search-results--list")]//div[@class="media-body"]' url_xpath = './/a/@href' title_xpath = './/h3[@class="h3--title media-heading"]' thumbnail_xpath = './/img/@src' @@ -65,8 +65,11 @@ def response(resp): videoid = result.xpath(url_xpath)[0] url = base_url + videoid title = p.unescape(extract_text(result.xpath(title_xpath))) - thumbnail = extract_text(result.xpath(thumbnail_xpath)[0]) - if thumbnail[0] == '/': + try: + thumbnail = extract_text(result.xpath(thumbnail_xpath)[0]) + except: + thumbnail = '' + if thumbnail and thumbnail[0] == '/': thumbnail = base_url + thumbnail d = extract_text(result.xpath(publishedDate_xpath)[0]) d = d.split('/') From 1e6253ce16346fc6f439a07211b56770d06ba225 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:29:55 +0100 Subject: [PATCH 134/238] [fix] handle empty response --- searx/engines/microsoft_academic.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/searx/engines/microsoft_academic.py b/searx/engines/microsoft_academic.py index 9387b08d..9bac0069 100644 --- a/searx/engines/microsoft_academic.py +++ b/searx/engines/microsoft_academic.py @@ -45,6 +45,8 @@ def request(query, params): def response(resp): results = [] response_data = loads(resp.text) + if not response_data: + return results for result in response_data['results']: url = _get_url(result) From ad5bb994b1cff56c4f021f88bfa62f38055f1416 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:30:18 +0100 Subject: [PATCH 135/238] [fix] add py3 compatibility --- searx/engines/scanr_structures.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/engines/scanr_structures.py b/searx/engines/scanr_structures.py index 72fd2b3c..7208dcb7 100644 --- a/searx/engines/scanr_structures.py +++ b/searx/engines/scanr_structures.py @@ -29,7 +29,7 @@ def request(query, params): params['url'] = search_url params['method'] = 'POST' params['headers']['Content-type'] = "application/json" - params['data'] = dumps({"query": query, + params['data'] = dumps({"query": query.decode('utf-8'), "searchField": "ALL", "sortDirection": "ASC", "sortOrder": "RELEVANCY", From 17b6faa4c3c1cf14a327f4a3538fc70dce08b756 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 2 Jan 2020 22:37:06 +0100 Subject: [PATCH 136/238] [fix] pep8 --- searx/engines/bing.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/searx/engines/bing.py b/searx/engines/bing.py index 24776c40..b193f7c6 100644 --- a/searx/engines/bing.py +++ b/searx/engines/bing.py @@ -63,8 +63,6 @@ def response(resp): results = [] result_len = 0 - - dom = html.fromstring(resp.text) # parse results for result in eval_xpath(dom, '//div[@class="sa_cc"]'): From 7347d9b508b6003f8407cf1167b677b02a9d0b50 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sat, 4 Jan 2020 17:09:11 +0100 Subject: [PATCH 137/238] docs(user): move wiki/Searx-instances from wiki to docs Move wiki entry https://github.com/asciimoo/searx/wiki/Searx-instances into user section of the docs (#1785). Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/user/index.rst | 1 + docs/user/public_instances.rst | 257 +++++++++++++++++++++++++++++++++ 2 files changed, 258 insertions(+) create mode 100644 docs/user/public_instances.rst diff --git a/docs/user/index.rst b/docs/user/index.rst index b13aca21..329be3b1 100644 --- a/docs/user/index.rst +++ b/docs/user/index.rst @@ -5,5 +5,6 @@ User documentation .. toctree:: :maxdepth: 1 + public_instances search_syntax own-instance diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst new file mode 100644 index 00000000..c7fb1441 --- /dev/null +++ b/docs/user/public_instances.rst @@ -0,0 +1,257 @@ +.. _public instances: + +====================== +Public Searx instances +====================== + +Useful information +================== + +* Up-to-date health report available on https://stats.searx.xyz<sup>(1)</sup>, for onion (tor) services: https://stats.searx.xyz/tor.html +* Searx instances [mailing list](mailto:searx-instances@autistici.org) & [subscription page](https://www.autistici.org/mailman/listinfo/searx-instances). +* Some of the Searx instances have a CAcert SSL certificate. You can install the missing root cert [from here](http://www.cacert.org/index.php?id=3). +* You can add your own Searx instance to this page by clicking [here](https://github.com/asciimoo/searx/wiki/Searx-instances/_edit) or by clicking on the "Edit" button in the top right corner (when logged in). A GitHub account is required to make changes. + +<sup>(1)</sup> Note that most of the instances with a A+ grade in CSP column in this site are not fully functional - for example auto-completion may not work. + +List of public Searx instances +============================== + +Meta-searx instances +==================== + +These are websites that source from other searx instances. These are useful if +you can't decide which Searx instance to use: + +| clearnet host | onion host | issuer | source selection method | extra privacy features | +|--|--|--|--|-- +[Neocities](https://searx.neocities.org/) | n/a | Comodo ([verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org)) | Redirects users directly to a random selection of any known running server after entering query. Requires Javascript. [Changelog](https://searx.neocities.org/changelog.html). | Excludes servers with user tracking and analytics or are proxied through Cloudflare. | + +Alive and running +================= + +**NOTE:** Public instances listed here may yield less accurate results as they have much higher traffic and consequently have a higher chance of being blocked by search providers such as Google, Qwant, Bing, Startpage, etc. Hosting your own instance or using an instance that isn't listed here may give you a more consistent search experience. + +**BEFORE EDITING**: Please add your Searx instance by respecting the alphabetic order. + +* [**ai.deafpray.wtf/searx**](https://ai.deafpray.wtf/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=ai.deafpray.wtf/searx) +* [**bamboozle.it**](https://bamboozle.it/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=bamboozle.it) +* [**bee.jaekr.dev**](https://bee.jaekr.dev) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=bee.jaekr.dev) +* [**beezboo.com**](https://beezboo.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=beezboo.com) +* [**burtrum.org/searx**](https://burtrum.org/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=burtrum.org/searx) +* [**darmarit.cloud/searx**](https://darmarit.cloud/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=darmarit.cloud/searx) +* [**dc.ax**](https://dc.ax) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=dc.ax) +* [**dynabyte.ca**](https://dynabyte.ca) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=dynabyte.ca) +* [**goso.ga**](https://goso.ga/search) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=goso.ga) +* [**gruble.de**](https://www.gruble.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.gruble.de) +* [**haku.ahmia.fi**](https://haku.ahmia.fi/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=haku.ahmia.fi&latest) +* [**haku.lelux.fi**](https://haku.lelux.fi/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi) +* [**huyo.me**](https://huyo.me/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=huyo.me) +* [**jsearch.pw**](https://jsearch.pw) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=jsearch.pw) +* [**le-dahut.com/searx**](https://le-dahut.com/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=le-dahut.com/searx) +* [**mijisou.com**](https://mijisou.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=mijisou.com) +* [**null.media**](https://null.media) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=null.media) +* [**openworlds.info**](https://openworlds.info/) - Issuer: Let's Encrypt +* [**perfectpixel.de/searx/**](https://www.perfectpixel.de/searx/) - Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.perfectpixel.de) +* [**ransack.i2p**](http://ransack.i2p/) - I2P eepsite, only accessible with [I2P](https://geti2p.net/) ([base32 address](http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p)) +* [**rapu.nz**](https://rapu.nz/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=rapu.nz) +* [**roflcopter.fr**](https://wtf.roflcopter.fr/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=wtf.roflcopter.fr) +* [**roteserver.de/searx**](https://roteserver.de/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=roteserver.de) +* [**s.cmd.gg**](https://s.cmd.gg) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=s.cmd.gg) +* [**search.activemail.de**](https://search.activemail.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.activemail.de&latest) +* [**search.anonymize.com**](https://search.anonymize.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.anonymize.com) +* [**search.azkware.net**](https://search.azkware.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.azkware.net) +* [**search.biboumail.fr**](https://search.biboumail.fr/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.biboumail.fr) +* [**search.blankenberg.eu**](https://search.blankenberg.eu) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.blankenberg.eu) +* [**search.d4networks.com**](https://search.d4networks.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.d4networks.com) +* [**search.datensturm.net**](https://search.datensturm.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.datensturm.net) +* [**search.disroot.org**](https://search.disroot.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.disroot.org) +* [**search.ethibox.fr**](https://search.ethibox.fr) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.ethibox.fr) +* [**search.fossdaily.xyz**](https://search.fossdaily.xyz) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.fossdaily.xyz) +* [**search.galaxy.cat**](https://search.galaxy.cat) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.galaxy.cat) +* [**search.gibberfish.org**](https://search.gibberfish.org/) (as [Hidden Service](http://o2jdk5mdsijm2b7l.onion/) or [Proxied through Tor](https://search.gibberfish.org/tor/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.gibberfish.org) +* [**search.koehn.com**](https://search.koehn.com) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.koehn.com) +* [**search.lgbtq.cool**](https://search.lgbtq.cool/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.lgbtq.cool) +* [**search.mdosch.de**](https://search.mdosch.de/) (as [Hidden Service](http://search.4bkxscubgtxwvhpe.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.mdosch.de) +* [**search.modalogi.com**](https://search.modalogi.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.modalogi.com&latest) +* [**search.moravit.com**](https://search.moravit.com) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.moravit.com) +* [**search.nebulacentre.net**](https://search.nebulacentre.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.nebulacentre.net) +* [**search.paulla.asso.fr**](https://search.paulla.asso.fr/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.paulla.asso.fr) +* [**search.pifferi.info**](https://search.pifferi.info/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.pifferi.info&latest) +* [**search.poal.co**](https://search.poal.co/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.poal.co) +* [**search.privacytools.io**](https://search.privacytools.io/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.privacytools.io) - Uses Matomo for user tracking and analytics +* [**search.seds.nl**](https://search.seds.nl/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.seds.nl&latest) +* [**search.snopyta.org**](https://search.snopyta.org/) (as [Hidden Service](http://juy4e6eicawzdrz7.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.snopyta.org) +* [**search.spaeth.me**](https://search.spaeth.me/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.spaeth.me&latest) +* [**search.st8.at**](https://search.st8.at/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.st8.at) +* [**search.stinpriza.org**](https://search.stinpriza.org) (as [Hidden Service](http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.stinpriza.org&hideResults=on) +* [**search.sudo-i.net**](https://search.sudo-i.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.sudo-i.net) +* [**search.tolstoevsky.ml**](https://search.tolstoevsky.ml) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.tolstoevsky.ml) +* [**searchsin.com/searx**](https://searchsin.com/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searchsin.com/searx) +* [**searx.anongoth.pl**](https://searx.anongoth.pl) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.anongoth.pl&latest) +* [**searx.be**](https://searx.be) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.be) - Uses Fathom Analytics for user tracking and analytics +* [**searx.ca**](https://searx.ca/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ca) +* [**searx.canox.net**](https://searx.canox.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.canox.net) +* [**searx.cybt.de**](https://searx.cybt.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.cybt.de) +* [**searx.de**](https://www.searx.de/) - Issuer: COMODO [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.de) +* [**searx.decatec.de**](https://searx.decatec.de) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.decatec.de) +* [**searx.devol.it**](https://searx.devol.it/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=sears.devol.it) +* [**searx.dnswarden.com**](https://searx.dnswarden.com) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.dnswarden.com) +* [**searx.drakonix.net**](https://searx.drakonix.net/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.drakonix.net) +* [**searx.dresden.network**](https://searx.dresden.network/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.dresden.network) +* [**searx.elukerio.org**](https://searx.elukerio.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.elukerio.org/) +* [**searx.everdot.org**](https://searx.everdot.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.everdot.org/) - Crawls using YaCy +* [**searx.foo.li**](https://searx.foo.li) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.foo.li&hideResults=on) +* [**searx.fossencdi.org**](https://searx.fossencdi.org) (as [Hidden Service](http://searx.cwuzdtzlubq5uual.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.fossencdi.org) +* [**searx.fr32k.de**](https://searx.fr32k.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.fr32k.de) +* [**searx.good.one.pl**](https://searx.good.one.pl) (as [Hidden Service](http://searxl7u2y6gvonm.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.good.one.pl) +* [**searx.gotrust.de**](https://searx.gotrust.de/) (as [Hidden Service](http://nxhhwbbxc4khvvlw.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.gotrust.de) +* [**searx.hardwired.link**](https://searx.hardwired.link/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.hardwired.link) +* [**searx.hlfh.space**](https://searx.hlfh.space) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.hlfh.space) +* [**searx.info**](https://searx.info) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.info) +* [**searx.itunix.eu**](https://searx.itunix.eu/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.itunix.eu) +* [**searx.john-at-me.net**](https://searx.john-at-me.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.john-at-me.net) +* [**searx.kvch.me**](https://searx.kvch.me) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.kvch.me) +* [**searx.laquadrature.net**](https://searx.laquadrature.net) (as [Hidden Service](http://searchb5a7tmimez.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.laquadrature.net) +* [**searx.lelux.fi**](https://searx.lelux.fi/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi) +* [**searx.lhorn.de**](https://searx.lhorn.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest) +* [**searx.li**](https://searx.li/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.li) +* [**searx.libmail.eu**](https://searx.libmail.eu/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.libmail.eu/) +* [**searx.linux.pizza**](https://searx.linux.pizza) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.linux.pizza) +* [**searx.lynnesbian.space**](https://searx.lynnesbian.space/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lynnesbian.space) +* [**searx.mastodontech.de**](https://searx.mastodontech.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.mastodontech.de) +* [**searx.me**](https://searx.me) (as [Hidden Service](http://ulrn6sryqaifefld.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.me) +* [**searx.mxchange.org**](https://searx.mxchange.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.mxchange.org) +* [**searx.nakhan.net**](https://searx.nakhan.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nakhan.net) +* [**searx.nixnet.xyz**](https://searx.nixnet.xyz) (as [Hidden Service](http://searx.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nixnet.xyz) +* [**searx.nnto.net**](https://searx.nnto.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nnto.net) +* [**searx.openhoofd.nl**](https://searx.openhoofd.nl/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=openhoofd.nl) +* [**searx.openpandora.org**](https://searx.openpandora.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.openpandora.org&latest) +* [**searx.operationtulip.com**](https://searx.operationtulip.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.operationtulip.com) +* [**searx.orcadian.net**](https://searx.orcadian.net/) - Issuer: Comodo CA Limited [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.orcadian.net) +* [**searx.ouahpit.info**](https://searx.ouahpiti.info/) - Issuer: Let's Encrypt +* [**searx.pofilo.fr**](https://searx.pofilo.fr/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.pofilo.fr) +* [**searx.prvcy.eu**](https://searx.prvcy.eu/) (as [Hidden Service](http://hmfztxt3pfhevucl.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.prvcy.eu) +* [**searx.pwoss.org**](https://searx.pwoss.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.pwoss.org) +* [**searx.ro**](https://searx.ro/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ro) +* [**searx.ru**](https://searx.ru/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ru) +* [**searx.solusar.de**](https://searx.solusar.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.solusar.de) +* [**searx.targaryen.house**](https://searx.targaryen.house/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.targaryen.house) +* [**searx.tuxcloud.net**](https://searx.tuxcloud.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.tuxcloud.net) +* [**searx.tyil.nl**](https://searx.tyil.nl) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.tyil.nl) +* [**searx.wegeeks.win**](https://searx.wegeeks.win) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.wegeeks.win) +* [**searx.win**](https://searx.win/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.win&latest) +* [**searx.xyz**](https://searx.xyz/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.xyz&latest) +* [**searx.zareldyn.net**](https://searx.zareldyn.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.zareldyn.net) +* [**searx.zdechov.net**](https://searx.zdechov.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.zdechov.net) +* [**searxes.eu.org**](https://searxes.eu.org) ([As Hidden Service](http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searxes.eu.org) +* [**searxs.eu**](https://www.searxs.eu) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.searxs.eu&hideResults=on) +* [**seeks.hsbp.org**](https://seeks.hsbp.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=seeks.hsbp.org) - [PGP signed fingerprints of cert](https://seeks.hsbp.org/cert) +* [**skyn3t.in/srx**](https://skyn3t.in/srx/) - Issuer: Let's Encrypt | onion [hidden service](http://skyn3tb3bas655mw.onion/srx/) +* [**spot.ecloud.global**](https://spot.ecloud.global/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=spot.ecloud.global) +* [**srx.sx**](https://srx.sx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=srx.sx) +* [**stemy.me/searx**](https://stemy.me/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=stemy.me) +* [**suche.dasnetzundich.de**](https://suche.dasnetzundich.de) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=suche.dasnetzundich.de) +* [**suche.elaon.de**](https://suche.elaon.de) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=suche.elaon.de) +* [**suche.xyzco456vwisukfg.onion**](http://suche.xyzco456vwisukfg.onion/) +* [**suche.uferwerk.org**](https://suche.uferwerk.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=suche.uferwerk.org) +* [**timdor.noip.me/searx**](https://timdor.noip.me/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=timdor.noip.me/searx) +* [**trovu.komun.org**](https://trovu.komun.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=trovu.komun.org) +* [**unmonito.red**](https://unmonito.red/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=unmonito.red) +* [**www.finden.tk**](https://www.finden.tk/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.finden.tk) +* [**zoek.anchel.nl**](https://zoek.anchel.nl/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=zoek.anchel.nl) + +Running in exclusive private walled-gardens +=========================================== + +These instances run in walled-gardens that exclude some segment of the general public (e.g. Tor users and users sharing IPs with many other users). Caution: privacy is also compromised on these sites due to exposure of cleartext traffic to a third party other than the website operator. +* [**intelme.com**](https://intelme.com) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=intelme.com) +* [**search404.io**](https://www.search404.io/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search404.io) +* [**searx.com.au**](https://searx.com.au/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.com.au) +* [**searx.lavatech.top**](https://searx.lavatech.top/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lavatech.top) +* [**searchx.mobi**](https://searchx.mobi/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searchx.mobi) +* [**searx.org**](https://searx.org/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.org) +* [**searx.run**](https://searx.run/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.run) +* [**searx.world**](https://searx.world) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.world) - Adds Amazon affiliate links + +Running with an incorrect SSL certificate +========================================= + +* [**listi.me**](https://listi.me/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=listi.me&latest) +* [**s.matejc.com**](https://s.matejc.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=s.matejc.com) +* [**search.jollausers.de**](https://search.jollausers.de) - Incorrectly configured [SSL certificate](https://www.ssllabs.com/ssltest/analyze.html?d=search.jollausers.de) +* [**search.paviro.de**](https://search.paviro.de) - Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.paviro.de) +* [**searx.abenthung.it**](https://searx.abenthung.it/) - Issuer: Comodo CA Limited [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.abenthung.it) +* [**searx.coding4schoki.org**](https://searx.coding4schoki.org/) - Incorrectly configured [SSL Certificate](https://www.ssllabs.com/ssltest/analyze.html?d=searx.coding4schoki.org) +* [**searx.haxors.club**](https://searx.haxors.club/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.haxors.club) +* [**searx.nulltime.net**](https://searx.nulltime.net/) (as [Hidden Service](http://searx7gwtu5rh6wr.onion)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nulltime.net) +* [**searx.ch**](https://searx.ch/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ch) (cert clock problems) + +Offline +======= + +* [**a.searx.space**](https://a.searx.space) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=a.searx.space) (unstable, under construction). +* [**anyonething.de**](https://anyonething.de) - (was found to have become a pastebin on or before 2019-03-01) Issuer: Comodo CA Limited (Warning: uses Cloudflare) [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=anyonething.de) +* [**h7jwxg5rakyfvikpi.onion**](http://7jwxg5rakyfvikpi.onion/) - available only as Tor Hidden Service (down on 2019-06-26) +* [**hacktivis.me/searx**](https://hacktivis.me/searx) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=hacktivis.me/searx) +* [**icebal.com**](https://icebal.com) - (down) Issuer: Let's Encrypt +* [**netrangler.host**](https://netrangler.host) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=netrangler.host) +* [**opengo.nl**](https://www.opengo.nl) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.opengo.nl) +* [**p9e.de**](https://p9e.de/) - (down - timeout) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=p9e.de) +* [**rubri.co**](https://rubri.co) - (down) Issuer: Let's Encrypt +* [**s.bacafe.xyz**](https://s.bacafe.xyz/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=s.bacafe.xyz&latest) +* [**search.alecpap.com**](https://search.alecpap.com/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.alecpap.com) +* [**search.blackit.de**](https://search.blackit.de/) - (down) Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.blackit.de) +* [**search.deblan.org**](https://search.deblan.org/) (down) - Issuer: COMODO via GANDI [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.deblan.org) +* [**search.homecomputing.fr**](https://search.homecomputing.fr/) - (down) Issuer: CAcert [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.homecomputing.fr) +* [**search.jpope.org**](https://search.jpope.org) - (down - timeout) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.jpope.org) +* [**search.kakise.xyz**](https://search.kakise.xyz/) - down +* [**search.kosebamse.com**](https://search.kosebamse.com) - Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.kosebamse.com) +* [**search.kujiu.org**](https://search.kujiu.org) - (down) Issuer: Let's Encrypt +* [**search.mailaender.coffee**](https://search.mailaender.coffee/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.mailaender.coffee) +* [**search.matrix.ac**](https://search.matrix.ac) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=matrix.ac) +* [**search.mypsc.ca**](https://search.mypsc.ca/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.mypsc.ca) +* [**search.namedkitten.pw**](https://search.namedkitten.pw) - (SSL error) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.namedkitten.pw) +* [**search.opentunisia.org**](https://search.opentunisia.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.opentunisia.org) +* [**search.r3d007.com**](https://search.r3d007.com/) - (down) Issuer: Let's Encrypt +* [**search.static.lu**](https://search.static.lu/) - (down) Issuer: StartCom [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.static.lu) +* [**search.teej.xyz**](https://search.teej.xyz) - (down) Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.teej.xyz) +* [**search.wxzm.sx**](https://search.wxzm.sx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.wxzm.sx) +* [**searx.4ray.co**](https://searx.4ray.co/) - (no longer an instance, redirects to main page) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.4ray.co) +* [**searx.32bitflo.at**](https://searx.32bitflo.at/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.32bitflo.at) +* [**searx.ahh.si**](https://searx.ahh.si/) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ahh.si) +* [**searx.angristan.xyz**](https://searx.angristan.xyz/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.angristan.xyz) +* [**searx.antirep.net**](https://searx.antirep.net/) - (return a 502 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.antirep.net) +* [**searx.aquilenet.fr**](https://searx.aquilenet.fr/) - (down - 429 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.aquilenet.fr) +* [**searx.at**](https://searx.at/) - (return "request exception" at every search) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.at) +* [**searx.cc**](https://searx.cc/) - (down on 2019-06-26) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.cc) +* [**searx.dk**](https://searx.dk/) - (down - 429 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.dk) +* [**searx.ehrmanns.ch**](https://searx.ehrmanns.ch) - (down) Issuer: Let's Encrypt +* [**searx.glibre.net**](https://searx.glibre.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.glibre.net) +* [**searx.infini.fr**](https://searx.infini.fr) - (return a page stating that the website is not installed) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.infini.fr) +* [**searx.jeanphilippemorvan.info**](https://searx.jeanphilippemorvan.info/) - (down) Issuer: StartCom [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.jeanphilippemorvan.info) +* [**searx.lhorn.de**](https://searx.lhorn.de/) - (redirect the Searx's github repository page) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest) (only reachable from european countries) +* [**searx.lvweb.host**](https://searx.lvweb.host) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lvweb.host) +* [**searx.mrtino.eu**](https://searx.mrtino.eu) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.mrtino.eu) +* [**searx.netzspielplatz.de**](https://searx.netzspielplatz.de/) - (error page about GDPR even when browsing it from USA and Asia) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.netzspielplatz.de) +* [**searx.new-admin.net**](https://searx.new-admin.net) - (down) Issuer: Let's Encrypt +* [**searx.nogafa.org**](https://searx.nogafa.org/)- (broken CSS) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nogafa.org) +* [**searx.potato.hu**](https://searx.potato.hu) - (not a searx instance) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.potato.hu) +* [**searx.rubbeldiekatz.info**](https://searx.rubbeldiekatz.info/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.rubbeldiekatz.info/) +* [**searx.s42.space**](https://searx.s42.space) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.s42.space) +* [**searx.salcay.hu**](https://searx.salcay.hu/) - (down - blank page) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.salcay.hu) +* [**searx.selea.se**](https://searx.selea.se) - (Leads to default Apache page) Issuer: RapidSSL (HSTS preloaded, DNSSEC) [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.selea.se) | [HSTS Preload](https://hstspreload.org/?domain=searx.selea.se) +* [**searx.steinscraft.net**](https://searx.steinscraft.net/) - (down) Issuer: Cloudflare +* [**searx.techregion.de**](https://searx.techregion.de/) - (domain expired) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.techregion.de) +* [**searx.tognella.com**](https://searx.tognella.com/) - (down) Issuer: Cloudflare +* [**searx.xi.ht**](https://searx.xi.ht/) - (return a 502 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.xi.ht) +* [**searxist.com**](https://searxist.com/) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searxist.com) +* [**so.sb**](https://so.sb/) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=so.sb) +* [**srx.stdout.net**](https://srx.stdout.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=srx.stdout.net) +* [**w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion**](http://w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion/) - Hidden Service +* [**win8linux.nohost.me**](https://win8linux.nohost.me/searx/) - (down) Issuer: Let's Encrypt +* [**wiznet.tech**](https://wiznet.tech) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=wiznet.tech) +* [**www.mercurius.space**](https://www.mercurius.space/) - (down) Issuer: Let's Encrypt +* [**www.ready.pm**](https://www.ready.pm) - Issuer: WoSign [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.ready.pm) +* [**z.awsmppl.com**](https://z.awsmppl.com) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=z.awsmppl.com) +* [**zlsdzh.tk**](https://zlsdzh.tk) - (down - 404 HTTP error) Issuer: TrustAsia Technologies, Inc. [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=zlsdzh.tk)* From 200c3a31f50b2e09e8e0192cca175b7e4477d4bf Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sat, 4 Jan 2020 18:26:04 +0100 Subject: [PATCH 138/238] docs(user): move wiki/Searx-instances from wiki to docs (WIP) Move wiki entry https://github.com/asciimoo/searx/wiki/Searx-instances into user section of the docs (#1785). links has been ported from markdown to reST by:: regexpr: \[([^\]]*)\]\(([^)]*)\) substitution: `\1 <\2>`__ Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/user/public_instances.rst | 464 ++++++++++++++++++--------------- 1 file changed, 249 insertions(+), 215 deletions(-) diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst index c7fb1441..a88acc47 100644 --- a/docs/user/public_instances.rst +++ b/docs/user/public_instances.rst @@ -1,5 +1,12 @@ .. _public instances: +.. + links has been ported from markdown to reST by:: + + regexpr: \[([^\]]*)\]\(([^)]*)\) + substitution: `\1 <\2>`__ + + ====================== Public Searx instances ====================== @@ -8,9 +15,9 @@ Useful information ================== * Up-to-date health report available on https://stats.searx.xyz<sup>(1)</sup>, for onion (tor) services: https://stats.searx.xyz/tor.html -* Searx instances [mailing list](mailto:searx-instances@autistici.org) & [subscription page](https://www.autistici.org/mailman/listinfo/searx-instances). -* Some of the Searx instances have a CAcert SSL certificate. You can install the missing root cert [from here](http://www.cacert.org/index.php?id=3). -* You can add your own Searx instance to this page by clicking [here](https://github.com/asciimoo/searx/wiki/Searx-instances/_edit) or by clicking on the "Edit" button in the top right corner (when logged in). A GitHub account is required to make changes. +* Searx instances `mailing list <mailto:searx-instances@autistici.org>`__ & `subscription page <https://www.autistici.org/mailman/listinfo/searx-instances>`__. +* Some of the Searx instances have a CAcert SSL certificate. You can install the missing root cert `from here <http://www.cacert.org/index.php?id=3>`__. +* You can add your own Searx instance to this page by clicking `here <https://github.com/asciimoo/searx/wiki/Searx-instances/_edit>`__ or by clicking on the "Edit" button in the top right corner (when logged in). A GitHub account is required to make changes. <sup>(1)</sup> Note that most of the instances with a A+ grade in CSP column in this site are not fully functional - for example auto-completion may not work. @@ -23,9 +30,27 @@ Meta-searx instances These are websites that source from other searx instances. These are useful if you can't decide which Searx instance to use: -| clearnet host | onion host | issuer | source selection method | extra privacy features | -|--|--|--|--|-- -[Neocities](https://searx.neocities.org/) | n/a | Comodo ([verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org)) | Redirects users directly to a random selection of any known running server after entering query. Requires Javascript. [Changelog](https://searx.neocities.org/changelog.html). | Excludes servers with user tracking and analytics or are proxied through Cloudflare. | + +.. flat-table:: Meta-searx instances + :header-rows: 1 + :stub-columns: 0 + :widths: 2 1 2 4 4 + + * - clearnet host + - onion host + - issuer + - source selection method + - extra privacy features + + * - `Neocities <https://searx.neocities.org/>`__ + - n/a + - Comodo (`verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org>`__) + - Redirects users directly to a random selection of any known running + server after entering query. Requires + Javascript. `Changelog <https://searx.neocities.org/changelog.html>`__. + - Excludes servers with user tracking and analytics or are proxied through + Cloudflare. + Alive and running ================= @@ -34,224 +59,233 @@ Alive and running **BEFORE EDITING**: Please add your Searx instance by respecting the alphabetic order. -* [**ai.deafpray.wtf/searx**](https://ai.deafpray.wtf/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=ai.deafpray.wtf/searx) -* [**bamboozle.it**](https://bamboozle.it/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=bamboozle.it) -* [**bee.jaekr.dev**](https://bee.jaekr.dev) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=bee.jaekr.dev) -* [**beezboo.com**](https://beezboo.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=beezboo.com) -* [**burtrum.org/searx**](https://burtrum.org/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=burtrum.org/searx) -* [**darmarit.cloud/searx**](https://darmarit.cloud/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=darmarit.cloud/searx) -* [**dc.ax**](https://dc.ax) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=dc.ax) -* [**dynabyte.ca**](https://dynabyte.ca) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=dynabyte.ca) -* [**goso.ga**](https://goso.ga/search) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=goso.ga) -* [**gruble.de**](https://www.gruble.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.gruble.de) -* [**haku.ahmia.fi**](https://haku.ahmia.fi/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=haku.ahmia.fi&latest) -* [**haku.lelux.fi**](https://haku.lelux.fi/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi) -* [**huyo.me**](https://huyo.me/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=huyo.me) -* [**jsearch.pw**](https://jsearch.pw) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=jsearch.pw) -* [**le-dahut.com/searx**](https://le-dahut.com/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=le-dahut.com/searx) -* [**mijisou.com**](https://mijisou.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=mijisou.com) -* [**null.media**](https://null.media) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=null.media) -* [**openworlds.info**](https://openworlds.info/) - Issuer: Let's Encrypt -* [**perfectpixel.de/searx/**](https://www.perfectpixel.de/searx/) - Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.perfectpixel.de) -* [**ransack.i2p**](http://ransack.i2p/) - I2P eepsite, only accessible with [I2P](https://geti2p.net/) ([base32 address](http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p)) -* [**rapu.nz**](https://rapu.nz/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=rapu.nz) -* [**roflcopter.fr**](https://wtf.roflcopter.fr/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=wtf.roflcopter.fr) -* [**roteserver.de/searx**](https://roteserver.de/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=roteserver.de) -* [**s.cmd.gg**](https://s.cmd.gg) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=s.cmd.gg) -* [**search.activemail.de**](https://search.activemail.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.activemail.de&latest) -* [**search.anonymize.com**](https://search.anonymize.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.anonymize.com) -* [**search.azkware.net**](https://search.azkware.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.azkware.net) -* [**search.biboumail.fr**](https://search.biboumail.fr/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.biboumail.fr) -* [**search.blankenberg.eu**](https://search.blankenberg.eu) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.blankenberg.eu) -* [**search.d4networks.com**](https://search.d4networks.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.d4networks.com) -* [**search.datensturm.net**](https://search.datensturm.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.datensturm.net) -* [**search.disroot.org**](https://search.disroot.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.disroot.org) -* [**search.ethibox.fr**](https://search.ethibox.fr) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.ethibox.fr) -* [**search.fossdaily.xyz**](https://search.fossdaily.xyz) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.fossdaily.xyz) -* [**search.galaxy.cat**](https://search.galaxy.cat) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.galaxy.cat) -* [**search.gibberfish.org**](https://search.gibberfish.org/) (as [Hidden Service](http://o2jdk5mdsijm2b7l.onion/) or [Proxied through Tor](https://search.gibberfish.org/tor/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.gibberfish.org) -* [**search.koehn.com**](https://search.koehn.com) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.koehn.com) -* [**search.lgbtq.cool**](https://search.lgbtq.cool/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.lgbtq.cool) -* [**search.mdosch.de**](https://search.mdosch.de/) (as [Hidden Service](http://search.4bkxscubgtxwvhpe.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.mdosch.de) -* [**search.modalogi.com**](https://search.modalogi.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.modalogi.com&latest) -* [**search.moravit.com**](https://search.moravit.com) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.moravit.com) -* [**search.nebulacentre.net**](https://search.nebulacentre.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.nebulacentre.net) -* [**search.paulla.asso.fr**](https://search.paulla.asso.fr/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.paulla.asso.fr) -* [**search.pifferi.info**](https://search.pifferi.info/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.pifferi.info&latest) -* [**search.poal.co**](https://search.poal.co/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.poal.co) -* [**search.privacytools.io**](https://search.privacytools.io/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.privacytools.io) - Uses Matomo for user tracking and analytics -* [**search.seds.nl**](https://search.seds.nl/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.seds.nl&latest) -* [**search.snopyta.org**](https://search.snopyta.org/) (as [Hidden Service](http://juy4e6eicawzdrz7.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.snopyta.org) -* [**search.spaeth.me**](https://search.spaeth.me/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.spaeth.me&latest) -* [**search.st8.at**](https://search.st8.at/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.st8.at) -* [**search.stinpriza.org**](https://search.stinpriza.org) (as [Hidden Service](http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.stinpriza.org&hideResults=on) -* [**search.sudo-i.net**](https://search.sudo-i.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.sudo-i.net) -* [**search.tolstoevsky.ml**](https://search.tolstoevsky.ml) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.tolstoevsky.ml) -* [**searchsin.com/searx**](https://searchsin.com/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searchsin.com/searx) -* [**searx.anongoth.pl**](https://searx.anongoth.pl) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.anongoth.pl&latest) -* [**searx.be**](https://searx.be) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.be) - Uses Fathom Analytics for user tracking and analytics -* [**searx.ca**](https://searx.ca/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ca) -* [**searx.canox.net**](https://searx.canox.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.canox.net) -* [**searx.cybt.de**](https://searx.cybt.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.cybt.de) -* [**searx.de**](https://www.searx.de/) - Issuer: COMODO [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.de) -* [**searx.decatec.de**](https://searx.decatec.de) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.decatec.de) -* [**searx.devol.it**](https://searx.devol.it/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=sears.devol.it) -* [**searx.dnswarden.com**](https://searx.dnswarden.com) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.dnswarden.com) -* [**searx.drakonix.net**](https://searx.drakonix.net/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.drakonix.net) -* [**searx.dresden.network**](https://searx.dresden.network/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.dresden.network) -* [**searx.elukerio.org**](https://searx.elukerio.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.elukerio.org/) -* [**searx.everdot.org**](https://searx.everdot.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.everdot.org/) - Crawls using YaCy -* [**searx.foo.li**](https://searx.foo.li) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.foo.li&hideResults=on) -* [**searx.fossencdi.org**](https://searx.fossencdi.org) (as [Hidden Service](http://searx.cwuzdtzlubq5uual.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.fossencdi.org) -* [**searx.fr32k.de**](https://searx.fr32k.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.fr32k.de) -* [**searx.good.one.pl**](https://searx.good.one.pl) (as [Hidden Service](http://searxl7u2y6gvonm.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.good.one.pl) -* [**searx.gotrust.de**](https://searx.gotrust.de/) (as [Hidden Service](http://nxhhwbbxc4khvvlw.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.gotrust.de) -* [**searx.hardwired.link**](https://searx.hardwired.link/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.hardwired.link) -* [**searx.hlfh.space**](https://searx.hlfh.space) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.hlfh.space) -* [**searx.info**](https://searx.info) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.info) -* [**searx.itunix.eu**](https://searx.itunix.eu/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.itunix.eu) -* [**searx.john-at-me.net**](https://searx.john-at-me.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.john-at-me.net) -* [**searx.kvch.me**](https://searx.kvch.me) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.kvch.me) -* [**searx.laquadrature.net**](https://searx.laquadrature.net) (as [Hidden Service](http://searchb5a7tmimez.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.laquadrature.net) -* [**searx.lelux.fi**](https://searx.lelux.fi/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi) -* [**searx.lhorn.de**](https://searx.lhorn.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest) -* [**searx.li**](https://searx.li/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.li) -* [**searx.libmail.eu**](https://searx.libmail.eu/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.libmail.eu/) -* [**searx.linux.pizza**](https://searx.linux.pizza) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.linux.pizza) -* [**searx.lynnesbian.space**](https://searx.lynnesbian.space/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lynnesbian.space) -* [**searx.mastodontech.de**](https://searx.mastodontech.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.mastodontech.de) -* [**searx.me**](https://searx.me) (as [Hidden Service](http://ulrn6sryqaifefld.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.me) -* [**searx.mxchange.org**](https://searx.mxchange.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.mxchange.org) -* [**searx.nakhan.net**](https://searx.nakhan.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nakhan.net) -* [**searx.nixnet.xyz**](https://searx.nixnet.xyz) (as [Hidden Service](http://searx.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nixnet.xyz) -* [**searx.nnto.net**](https://searx.nnto.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nnto.net) -* [**searx.openhoofd.nl**](https://searx.openhoofd.nl/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=openhoofd.nl) -* [**searx.openpandora.org**](https://searx.openpandora.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.openpandora.org&latest) -* [**searx.operationtulip.com**](https://searx.operationtulip.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.operationtulip.com) -* [**searx.orcadian.net**](https://searx.orcadian.net/) - Issuer: Comodo CA Limited [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.orcadian.net) -* [**searx.ouahpit.info**](https://searx.ouahpiti.info/) - Issuer: Let's Encrypt -* [**searx.pofilo.fr**](https://searx.pofilo.fr/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.pofilo.fr) -* [**searx.prvcy.eu**](https://searx.prvcy.eu/) (as [Hidden Service](http://hmfztxt3pfhevucl.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.prvcy.eu) -* [**searx.pwoss.org**](https://searx.pwoss.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.pwoss.org) -* [**searx.ro**](https://searx.ro/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ro) -* [**searx.ru**](https://searx.ru/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ru) -* [**searx.solusar.de**](https://searx.solusar.de/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.solusar.de) -* [**searx.targaryen.house**](https://searx.targaryen.house/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.targaryen.house) -* [**searx.tuxcloud.net**](https://searx.tuxcloud.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.tuxcloud.net) -* [**searx.tyil.nl**](https://searx.tyil.nl) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.tyil.nl) -* [**searx.wegeeks.win**](https://searx.wegeeks.win) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.wegeeks.win) -* [**searx.win**](https://searx.win/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.win&latest) -* [**searx.xyz**](https://searx.xyz/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.xyz&latest) -* [**searx.zareldyn.net**](https://searx.zareldyn.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.zareldyn.net) -* [**searx.zdechov.net**](https://searx.zdechov.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.zdechov.net) -* [**searxes.eu.org**](https://searxes.eu.org) ([As Hidden Service](http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searxes.eu.org) -* [**searxs.eu**](https://www.searxs.eu) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.searxs.eu&hideResults=on) -* [**seeks.hsbp.org**](https://seeks.hsbp.org/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=seeks.hsbp.org) - [PGP signed fingerprints of cert](https://seeks.hsbp.org/cert) -* [**skyn3t.in/srx**](https://skyn3t.in/srx/) - Issuer: Let's Encrypt | onion [hidden service](http://skyn3tb3bas655mw.onion/srx/) -* [**spot.ecloud.global**](https://spot.ecloud.global/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=spot.ecloud.global) -* [**srx.sx**](https://srx.sx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=srx.sx) -* [**stemy.me/searx**](https://stemy.me/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=stemy.me) -* [**suche.dasnetzundich.de**](https://suche.dasnetzundich.de) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=suche.dasnetzundich.de) -* [**suche.elaon.de**](https://suche.elaon.de) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=suche.elaon.de) -* [**suche.xyzco456vwisukfg.onion**](http://suche.xyzco456vwisukfg.onion/) -* [**suche.uferwerk.org**](https://suche.uferwerk.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=suche.uferwerk.org) -* [**timdor.noip.me/searx**](https://timdor.noip.me/searx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=timdor.noip.me/searx) -* [**trovu.komun.org**](https://trovu.komun.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=trovu.komun.org) -* [**unmonito.red**](https://unmonito.red/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=unmonito.red) -* [**www.finden.tk**](https://www.finden.tk/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.finden.tk) -* [**zoek.anchel.nl**](https://zoek.anchel.nl/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=zoek.anchel.nl) +* `ai.deafpray.wtf/searx <https://ai.deafpray.wtf/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=ai.deafpray.wtf/searx>`__ +* `bamboozle.it <https://bamboozle.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bamboozle.it>`__ +* `bee.jaekr.dev <https://bee.jaekr.dev>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bee.jaekr.dev>`__ +* `beezboo.com <https://beezboo.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=beezboo.com>`__ +* `burtrum.org/searx <https://burtrum.org/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=burtrum.org/searx>`__ +* `darmarit.cloud/searx <https://darmarit.cloud/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=darmarit.cloud/searx>`__ +* `dc.ax <https://dc.ax>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=dc.ax>`__ +* `dynabyte.ca <https://dynabyte.ca>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=dynabyte.ca>`__ +* `goso.ga <https://goso.ga/search>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=goso.ga>`__ +* `gruble.de <https://www.gruble.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.gruble.de>`__ +* `haku.ahmia.fi <https://haku.ahmia.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.ahmia.fi&latest>`__ +* `haku.lelux.fi <https://haku.lelux.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi>`__ +* `huyo.me <https://huyo.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=huyo.me>`__ +* `jsearch.pw <https://jsearch.pw>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=jsearch.pw>`__ +* `le-dahut.com/searx <https://le-dahut.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=le-dahut.com/searx>`__ +* `mijisou.com <https://mijisou.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=mijisou.com>`__ +* `null.media <https://null.media>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=null.media>`__ +* `openworlds.info <https://openworlds.info/>`__ - Issuer: Let's Encrypt +* `perfectpixel.de/searx/ <https://www.perfectpixel.de/searx/>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.perfectpixel.de>`__ +* `ransack.i2p <http://ransack.i2p/>`__ - I2P eepsite, only accessible with `I2P <https://geti2p.net/>`__ (`base32 address <http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p>`__) +* `rapu.nz <https://rapu.nz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=rapu.nz>`__ +* `roflcopter.fr <https://wtf.roflcopter.fr/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=wtf.roflcopter.fr>`__ +* `roteserver.de/searx <https://roteserver.de/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=roteserver.de>`__ +* `s.cmd.gg <https://s.cmd.gg>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.cmd.gg>`__ +* `search.activemail.de <https://search.activemail.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.activemail.de&latest>`__ +* `search.anonymize.com <https://search.anonymize.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.anonymize.com>`__ +* `search.azkware.net <https://search.azkware.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.azkware.net>`__ +* `search.biboumail.fr <https://search.biboumail.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.biboumail.fr>`__ +* `search.blankenberg.eu <https://search.blankenberg.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.blankenberg.eu>`__ +* `search.d4networks.com <https://search.d4networks.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.d4networks.com>`__ +* `search.datensturm.net <https://search.datensturm.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.datensturm.net>`__ +* `search.disroot.org <https://search.disroot.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.disroot.org>`__ +* `search.ethibox.fr <https://search.ethibox.fr>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.ethibox.fr>`__ +* `search.fossdaily.xyz <https://search.fossdaily.xyz>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.fossdaily.xyz>`__ +* `search.galaxy.cat <https://search.galaxy.cat>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.galaxy.cat>`__ +* `search.gibberfish.org <https://search.gibberfish.org/>`__ (as `Hidden Service <http://o2jdk5mdsijm2b7l.onion/>`__ or `Proxied through Tor <https://search.gibberfish.org/tor/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.gibberfish.org>`__ +* `search.koehn.com <https://search.koehn.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.koehn.com>`__ +* `search.lgbtq.cool <https://search.lgbtq.cool/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.lgbtq.cool>`__ +* `search.mdosch.de <https://search.mdosch.de/>`__ (as `Hidden Service <http://search.4bkxscubgtxwvhpe.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mdosch.de>`__ +* `search.modalogi.com <https://search.modalogi.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.modalogi.com&latest>`__ +* `search.moravit.com <https://search.moravit.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.moravit.com>`__ +* `search.nebulacentre.net <https://search.nebulacentre.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.nebulacentre.net>`__ +* `search.paulla.asso.fr <https://search.paulla.asso.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.paulla.asso.fr>`__ +* `search.pifferi.info <https://search.pifferi.info/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.pifferi.info&latest>`__ +* `search.poal.co <https://search.poal.co/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.poal.co>`__ +* `search.privacytools.io <https://search.privacytools.io/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.privacytools.io>`__ - Uses Matomo for user tracking and analytics +* `search.seds.nl <https://search.seds.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.seds.nl&latest>`__ +* `search.snopyta.org <https://search.snopyta.org/>`__ (as `Hidden Service <http://juy4e6eicawzdrz7.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.snopyta.org>`__ +* `search.spaeth.me <https://search.spaeth.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.spaeth.me&latest>`__ +* `search.st8.at <https://search.st8.at/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.st8.at>`__ +* `search.stinpriza.org <https://search.stinpriza.org>`__ (as `Hidden Service <http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.stinpriza.org&hideResults=on>`__ +* `search.sudo-i.net <https://search.sudo-i.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.sudo-i.net>`__ +* `search.tolstoevsky.ml <https://search.tolstoevsky.ml>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.tolstoevsky.ml>`__ +* `searchsin.com/searx <https://searchsin.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchsin.com/searx>`__ +* `searx.anongoth.pl <https://searx.anongoth.pl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.anongoth.pl&latest>`__ +* `searx.be <https://searx.be>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.be>`__ - Uses Fathom Analytics for user tracking and analytics +* `searx.ca <https://searx.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ca>`__ +* `searx.canox.net <https://searx.canox.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.canox.net>`__ +* `searx.cybt.de <https://searx.cybt.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cybt.de>`__ +* `searx.de <https://www.searx.de/>`__ - Issuer: COMODO `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.de>`__ +* `searx.decatec.de <https://searx.decatec.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.decatec.de>`__ +* `searx.devol.it <https://searx.devol.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=sears.devol.it>`__ +* `searx.dnswarden.com <https://searx.dnswarden.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dnswarden.com>`__ +* `searx.drakonix.net <https://searx.drakonix.net/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.drakonix.net>`__ +* `searx.dresden.network <https://searx.dresden.network/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dresden.network>`__ +* `searx.elukerio.org <https://searx.elukerio.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.elukerio.org/>`__ +* `searx.everdot.org <https://searx.everdot.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.everdot.org/>`__ - Crawls using YaCy +* `searx.foo.li <https://searx.foo.li>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.foo.li&hideResults=on>`__ +* `searx.fossencdi.org <https://searx.fossencdi.org>`__ (as `Hidden Service <http://searx.cwuzdtzlubq5uual.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.fossencdi.org>`__ +* `searx.fr32k.de <https://searx.fr32k.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.fr32k.de>`__ +* `searx.good.one.pl <https://searx.good.one.pl>`__ (as `Hidden Service <http://searxl7u2y6gvonm.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.good.one.pl>`__ +* `searx.gotrust.de <https://searx.gotrust.de/>`__ (as `Hidden Service <http://nxhhwbbxc4khvvlw.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.gotrust.de>`__ +* `searx.hardwired.link <https://searx.hardwired.link/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.hardwired.link>`__ +* `searx.hlfh.space <https://searx.hlfh.space>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.hlfh.space>`__ +* `searx.info <https://searx.info>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.info>`__ +* `searx.itunix.eu <https://searx.itunix.eu/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.itunix.eu>`__ +* `searx.john-at-me.net <https://searx.john-at-me.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.john-at-me.net>`__ +* `searx.kvch.me <https://searx.kvch.me>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.kvch.me>`__ +* `searx.laquadrature.net <https://searx.laquadrature.net>`__ (as `Hidden Service <http://searchb5a7tmimez.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.laquadrature.net>`__ +* `searx.lelux.fi <https://searx.lelux.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi>`__ +* `searx.lhorn.de <https://searx.lhorn.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest>`__ +* `searx.li <https://searx.li/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.li>`__ +* `searx.libmail.eu <https://searx.libmail.eu/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.libmail.eu/>`__ +* `searx.linux.pizza <https://searx.linux.pizza>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.linux.pizza>`__ +* `searx.lynnesbian.space <https://searx.lynnesbian.space/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lynnesbian.space>`__ +* `searx.mastodontech.de <https://searx.mastodontech.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mastodontech.de>`__ +* `searx.me <https://searx.me>`__ (as `Hidden Service <http://ulrn6sryqaifefld.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.me>`__ +* `searx.mxchange.org <https://searx.mxchange.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mxchange.org>`__ +* `searx.nakhan.net <https://searx.nakhan.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nakhan.net>`__ +* `searx.nixnet.xyz <https://searx.nixnet.xyz>`__ (as `Hidden Service <http://searx.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nixnet.xyz>`__ +* `searx.nnto.net <https://searx.nnto.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nnto.net>`__ +* `searx.openhoofd.nl <https://searx.openhoofd.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=openhoofd.nl>`__ +* `searx.openpandora.org <https://searx.openpandora.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.openpandora.org&latest>`__ +* `searx.operationtulip.com <https://searx.operationtulip.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.operationtulip.com>`__ +* `searx.orcadian.net <https://searx.orcadian.net/>`__ - Issuer: Comodo CA Limited `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.orcadian.net>`__ +* `searx.ouahpit.info <https://searx.ouahpiti.info/>`__ - Issuer: Let's Encrypt +* `searx.pofilo.fr <https://searx.pofilo.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.pofilo.fr>`__ +* `searx.prvcy.eu <https://searx.prvcy.eu/>`__ (as `Hidden Service <http://hmfztxt3pfhevucl.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.prvcy.eu>`__ +* `searx.pwoss.org <https://searx.pwoss.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.pwoss.org>`__ +* `searx.ro <https://searx.ro/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ro>`__ +* `searx.ru <https://searx.ru/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ru>`__ +* `searx.solusar.de <https://searx.solusar.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.solusar.de>`__ +* `searx.targaryen.house <https://searx.targaryen.house/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.targaryen.house>`__ +* `searx.tuxcloud.net <https://searx.tuxcloud.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.tuxcloud.net>`__ +* `searx.tyil.nl <https://searx.tyil.nl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.tyil.nl>`__ +* `searx.wegeeks.win <https://searx.wegeeks.win>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.wegeeks.win>`__ +* `searx.win <https://searx.win/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.win&latest>`__ +* `searx.xyz <https://searx.xyz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xyz&latest>`__ +* `searx.zareldyn.net <https://searx.zareldyn.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zareldyn.net>`__ +* `searx.zdechov.net <https://searx.zdechov.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zdechov.net>`__ +* `searxes.eu.org <https://searxes.eu.org>`__ (`As Hidden Service <http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searxes.eu.org>`__ +* `searxs.eu <https://www.searxs.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.searxs.eu&hideResults=on>`__ +* `seeks.hsbp.org <https://seeks.hsbp.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=seeks.hsbp.org>`__ - `PGP signed fingerprints of cert <https://seeks.hsbp.org/cert>`__ +* `skyn3t.in/srx <https://skyn3t.in/srx/>`__ - Issuer: Let's Encrypt | onion `hidden service <http://skyn3tb3bas655mw.onion/srx/>`__ +* `spot.ecloud.global <https://spot.ecloud.global/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=spot.ecloud.global>`__ +* `srx.sx <https://srx.sx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=srx.sx>`__ +* `stemy.me/searx <https://stemy.me/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=stemy.me>`__ +* `suche.dasnetzundich.de <https://suche.dasnetzundich.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.dasnetzundich.de>`__ +* `suche.elaon.de <https://suche.elaon.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.elaon.de>`__ +* `suche.xyzco456vwisukfg.onion <http://suche.xyzco456vwisukfg.onion/>`__ +* `suche.uferwerk.org <https://suche.uferwerk.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.uferwerk.org>`__ +* `timdor.noip.me/searx <https://timdor.noip.me/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=timdor.noip.me/searx>`__ +* `trovu.komun.org <https://trovu.komun.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=trovu.komun.org>`__ +* `unmonito.red <https://unmonito.red/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=unmonito.red>`__ +* `www.finden.tk <https://www.finden.tk/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.finden.tk>`__ +* `zoek.anchel.nl <https://zoek.anchel.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=zoek.anchel.nl>`__ + + Running in exclusive private walled-gardens =========================================== -These instances run in walled-gardens that exclude some segment of the general public (e.g. Tor users and users sharing IPs with many other users). Caution: privacy is also compromised on these sites due to exposure of cleartext traffic to a third party other than the website operator. -* [**intelme.com**](https://intelme.com) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=intelme.com) -* [**search404.io**](https://www.search404.io/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search404.io) -* [**searx.com.au**](https://searx.com.au/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.com.au) -* [**searx.lavatech.top**](https://searx.lavatech.top/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lavatech.top) -* [**searchx.mobi**](https://searchx.mobi/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searchx.mobi) -* [**searx.org**](https://searx.org/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.org) -* [**searx.run**](https://searx.run/) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.run) -* [**searx.world**](https://searx.world) - Issuer: Cloudflare [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.world) - Adds Amazon affiliate links +These instances run in walled-gardens that exclude some segment of the general +public (e.g. Tor users and users sharing IPs with many other users). Caution: +privacy is also compromised on these sites due to exposure of cleartext traffic +to a third party other than the website operator. + +* `intelme.com <https://intelme.com>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=intelme.com>`__ +* `search404.io <https://www.search404.io/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search404.io>`__ +* `searx.com.au <https://searx.com.au/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.com.au>`__ +* `searx.lavatech.top <https://searx.lavatech.top/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lavatech.top>`__ +* `searchx.mobi <https://searchx.mobi/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchx.mobi>`__ +* `searx.org <https://searx.org/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.org>`__ +* `searx.run <https://searx.run/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.run>`__ +* `searx.world <https://searx.world>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.world>`__ - Adds Amazon affiliate links + Running with an incorrect SSL certificate ========================================= -* [**listi.me**](https://listi.me/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=listi.me&latest) -* [**s.matejc.com**](https://s.matejc.com/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=s.matejc.com) -* [**search.jollausers.de**](https://search.jollausers.de) - Incorrectly configured [SSL certificate](https://www.ssllabs.com/ssltest/analyze.html?d=search.jollausers.de) -* [**search.paviro.de**](https://search.paviro.de) - Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.paviro.de) -* [**searx.abenthung.it**](https://searx.abenthung.it/) - Issuer: Comodo CA Limited [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.abenthung.it) -* [**searx.coding4schoki.org**](https://searx.coding4schoki.org/) - Incorrectly configured [SSL Certificate](https://www.ssllabs.com/ssltest/analyze.html?d=searx.coding4schoki.org) -* [**searx.haxors.club**](https://searx.haxors.club/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.haxors.club) -* [**searx.nulltime.net**](https://searx.nulltime.net/) (as [Hidden Service](http://searx7gwtu5rh6wr.onion)) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nulltime.net) -* [**searx.ch**](https://searx.ch/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ch) (cert clock problems) +* `listi.me <https://listi.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=listi.me&latest>`__ +* `s.matejc.com <https://s.matejc.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.matejc.com>`__ +* `search.jollausers.de <https://search.jollausers.de>`__ - Incorrectly configured `SSL certificate <https://www.ssllabs.com/ssltest/analyze.html?d=search.jollausers.de>`__ +* `search.paviro.de <https://search.paviro.de>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.paviro.de>`__ +* `searx.abenthung.it <https://searx.abenthung.it/>`__ - Issuer: Comodo CA Limited `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.abenthung.it>`__ +* `searx.coding4schoki.org <https://searx.coding4schoki.org/>`__ - Incorrectly configured `SSL Certificate <https://www.ssllabs.com/ssltest/analyze.html?d=searx.coding4schoki.org>`__ +* `searx.haxors.club <https://searx.haxors.club/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.haxors.club>`__ +* `searx.nulltime.net <https://searx.nulltime.net/>`__ (as `Hidden Service <http://searx7gwtu5rh6wr.onion>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nulltime.net>`__ +* `searx.ch <https://searx.ch/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ch>`__ (cert clock problems) + Offline ======= -* [**a.searx.space**](https://a.searx.space) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=a.searx.space) (unstable, under construction). -* [**anyonething.de**](https://anyonething.de) - (was found to have become a pastebin on or before 2019-03-01) Issuer: Comodo CA Limited (Warning: uses Cloudflare) [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=anyonething.de) -* [**h7jwxg5rakyfvikpi.onion**](http://7jwxg5rakyfvikpi.onion/) - available only as Tor Hidden Service (down on 2019-06-26) -* [**hacktivis.me/searx**](https://hacktivis.me/searx) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=hacktivis.me/searx) -* [**icebal.com**](https://icebal.com) - (down) Issuer: Let's Encrypt -* [**netrangler.host**](https://netrangler.host) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=netrangler.host) -* [**opengo.nl**](https://www.opengo.nl) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.opengo.nl) -* [**p9e.de**](https://p9e.de/) - (down - timeout) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=p9e.de) -* [**rubri.co**](https://rubri.co) - (down) Issuer: Let's Encrypt -* [**s.bacafe.xyz**](https://s.bacafe.xyz/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=s.bacafe.xyz&latest) -* [**search.alecpap.com**](https://search.alecpap.com/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.alecpap.com) -* [**search.blackit.de**](https://search.blackit.de/) - (down) Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.blackit.de) -* [**search.deblan.org**](https://search.deblan.org/) (down) - Issuer: COMODO via GANDI [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.deblan.org) -* [**search.homecomputing.fr**](https://search.homecomputing.fr/) - (down) Issuer: CAcert [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.homecomputing.fr) -* [**search.jpope.org**](https://search.jpope.org) - (down - timeout) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.jpope.org) -* [**search.kakise.xyz**](https://search.kakise.xyz/) - down -* [**search.kosebamse.com**](https://search.kosebamse.com) - Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.kosebamse.com) -* [**search.kujiu.org**](https://search.kujiu.org) - (down) Issuer: Let's Encrypt -* [**search.mailaender.coffee**](https://search.mailaender.coffee/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.mailaender.coffee) -* [**search.matrix.ac**](https://search.matrix.ac) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=matrix.ac) -* [**search.mypsc.ca**](https://search.mypsc.ca/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.mypsc.ca) -* [**search.namedkitten.pw**](https://search.namedkitten.pw) - (SSL error) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.namedkitten.pw) -* [**search.opentunisia.org**](https://search.opentunisia.org) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.opentunisia.org) -* [**search.r3d007.com**](https://search.r3d007.com/) - (down) Issuer: Let's Encrypt -* [**search.static.lu**](https://search.static.lu/) - (down) Issuer: StartCom [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.static.lu) -* [**search.teej.xyz**](https://search.teej.xyz) - (down) Issuer: LetsEncrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.teej.xyz) -* [**search.wxzm.sx**](https://search.wxzm.sx) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=search.wxzm.sx) -* [**searx.4ray.co**](https://searx.4ray.co/) - (no longer an instance, redirects to main page) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.4ray.co) -* [**searx.32bitflo.at**](https://searx.32bitflo.at/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.32bitflo.at) -* [**searx.ahh.si**](https://searx.ahh.si/) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.ahh.si) -* [**searx.angristan.xyz**](https://searx.angristan.xyz/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.angristan.xyz) -* [**searx.antirep.net**](https://searx.antirep.net/) - (return a 502 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.antirep.net) -* [**searx.aquilenet.fr**](https://searx.aquilenet.fr/) - (down - 429 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.aquilenet.fr) -* [**searx.at**](https://searx.at/) - (return "request exception" at every search) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.at) -* [**searx.cc**](https://searx.cc/) - (down on 2019-06-26) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.cc) -* [**searx.dk**](https://searx.dk/) - (down - 429 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.dk) -* [**searx.ehrmanns.ch**](https://searx.ehrmanns.ch) - (down) Issuer: Let's Encrypt -* [**searx.glibre.net**](https://searx.glibre.net) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.glibre.net) -* [**searx.infini.fr**](https://searx.infini.fr) - (return a page stating that the website is not installed) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.infini.fr) -* [**searx.jeanphilippemorvan.info**](https://searx.jeanphilippemorvan.info/) - (down) Issuer: StartCom [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.jeanphilippemorvan.info) -* [**searx.lhorn.de**](https://searx.lhorn.de/) - (redirect the Searx's github repository page) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest) (only reachable from european countries) -* [**searx.lvweb.host**](https://searx.lvweb.host) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.lvweb.host) -* [**searx.mrtino.eu**](https://searx.mrtino.eu) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.mrtino.eu) -* [**searx.netzspielplatz.de**](https://searx.netzspielplatz.de/) - (error page about GDPR even when browsing it from USA and Asia) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.netzspielplatz.de) -* [**searx.new-admin.net**](https://searx.new-admin.net) - (down) Issuer: Let's Encrypt -* [**searx.nogafa.org**](https://searx.nogafa.org/)- (broken CSS) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.nogafa.org) -* [**searx.potato.hu**](https://searx.potato.hu) - (not a searx instance) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.potato.hu) -* [**searx.rubbeldiekatz.info**](https://searx.rubbeldiekatz.info/) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.rubbeldiekatz.info/) -* [**searx.s42.space**](https://searx.s42.space) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.s42.space) -* [**searx.salcay.hu**](https://searx.salcay.hu/) - (down - blank page) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.salcay.hu) -* [**searx.selea.se**](https://searx.selea.se) - (Leads to default Apache page) Issuer: RapidSSL (HSTS preloaded, DNSSEC) [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.selea.se) | [HSTS Preload](https://hstspreload.org/?domain=searx.selea.se) -* [**searx.steinscraft.net**](https://searx.steinscraft.net/) - (down) Issuer: Cloudflare -* [**searx.techregion.de**](https://searx.techregion.de/) - (domain expired) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.techregion.de) -* [**searx.tognella.com**](https://searx.tognella.com/) - (down) Issuer: Cloudflare -* [**searx.xi.ht**](https://searx.xi.ht/) - (return a 502 HTTP error) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searx.xi.ht) -* [**searxist.com**](https://searxist.com/) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=searxist.com) -* [**so.sb**](https://so.sb/) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=so.sb) -* [**srx.stdout.net**](https://srx.stdout.net/) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=srx.stdout.net) -* [**w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion**](http://w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion/) - Hidden Service -* [**win8linux.nohost.me**](https://win8linux.nohost.me/searx/) - (down) Issuer: Let's Encrypt -* [**wiznet.tech**](https://wiznet.tech) - (down) - Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=wiznet.tech) -* [**www.mercurius.space**](https://www.mercurius.space/) - (down) Issuer: Let's Encrypt -* [**www.ready.pm**](https://www.ready.pm) - Issuer: WoSign [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=www.ready.pm) -* [**z.awsmppl.com**](https://z.awsmppl.com) - (down) Issuer: Let's Encrypt [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=z.awsmppl.com) -* [**zlsdzh.tk**](https://zlsdzh.tk) - (down - 404 HTTP error) Issuer: TrustAsia Technologies, Inc. [Verification](https://www.ssllabs.com/ssltest/analyze.html?d=zlsdzh.tk)* +* `a.searx.space <https://a.searx.space>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=a.searx.space>`__ (unstable, under construction). +* `anyonething.de <https://anyonething.de>`__ - (was found to have become a pastebin on or before 2019-03-01) Issuer: Comodo CA Limited (Warning: uses Cloudflare) `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=anyonething.de>`__ +* `h7jwxg5rakyfvikpi.onion <http://7jwxg5rakyfvikpi.onion/>`__ - available only as Tor Hidden Service (down on 2019-06-26) +* `hacktivis.me/searx <https://hacktivis.me/searx>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=hacktivis.me/searx>`__ +* `icebal.com <https://icebal.com>`__ - (down) Issuer: Let's Encrypt +* `netrangler.host <https://netrangler.host>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=netrangler.host>`__ +* `opengo.nl <https://www.opengo.nl>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.opengo.nl>`__ +* `p9e.de <https://p9e.de/>`__ - (down - timeout) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=p9e.de>`__ +* `rubri.co <https://rubri.co>`__ - (down) Issuer: Let's Encrypt +* `s.bacafe.xyz <https://s.bacafe.xyz/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.bacafe.xyz&latest>`__ +* `search.alecpap.com <https://search.alecpap.com/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.alecpap.com>`__ +* `search.blackit.de <https://search.blackit.de/>`__ - (down) Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.blackit.de>`__ +* `search.deblan.org <https://search.deblan.org/>`__ (down) - Issuer: COMODO via GANDI `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.deblan.org>`__ +* `search.homecomputing.fr <https://search.homecomputing.fr/>`__ - (down) Issuer: CAcert `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.homecomputing.fr>`__ +* `search.jpope.org <https://search.jpope.org>`__ - (down - timeout) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.jpope.org>`__ +* `search.kakise.xyz <https://search.kakise.xyz/>`__ - down +* `search.kosebamse.com <https://search.kosebamse.com>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.kosebamse.com>`__ +* `search.kujiu.org <https://search.kujiu.org>`__ - (down) Issuer: Let's Encrypt +* `search.mailaender.coffee <https://search.mailaender.coffee/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mailaender.coffee>`__ +* `search.matrix.ac <https://search.matrix.ac>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=matrix.ac>`__ +* `search.mypsc.ca <https://search.mypsc.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mypsc.ca>`__ +* `search.namedkitten.pw <https://search.namedkitten.pw>`__ - (SSL error) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.namedkitten.pw>`__ +* `search.opentunisia.org <https://search.opentunisia.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.opentunisia.org>`__ +* `search.r3d007.com <https://search.r3d007.com/>`__ - (down) Issuer: Let's Encrypt +* `search.static.lu <https://search.static.lu/>`__ - (down) Issuer: StartCom `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.static.lu>`__ +* `search.teej.xyz <https://search.teej.xyz>`__ - (down) Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.teej.xyz>`__ +* `search.wxzm.sx <https://search.wxzm.sx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.wxzm.sx>`__ +* `searx.4ray.co <https://searx.4ray.co/>`__ - (no longer an instance, redirects to main page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.4ray.co>`__ +* `searx.32bitflo.at <https://searx.32bitflo.at/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.32bitflo.at>`__ +* `searx.ahh.si <https://searx.ahh.si/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ahh.si>`__ +* `searx.angristan.xyz <https://searx.angristan.xyz/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.angristan.xyz>`__ +* `searx.antirep.net <https://searx.antirep.net/>`__ - (return a 502 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.antirep.net>`__ +* `searx.aquilenet.fr <https://searx.aquilenet.fr/>`__ - (down - 429 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.aquilenet.fr>`__ +* `searx.at <https://searx.at/>`__ - (return "request exception" at every search) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.at>`__ +* `searx.cc <https://searx.cc/>`__ - (down on 2019-06-26) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cc>`__ +* `searx.dk <https://searx.dk/>`__ - (down - 429 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dk>`__ +* `searx.ehrmanns.ch <https://searx.ehrmanns.ch>`__ - (down) Issuer: Let's Encrypt +* `searx.glibre.net <https://searx.glibre.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.glibre.net>`__ +* `searx.infini.fr <https://searx.infini.fr>`__ - (return a page stating that the website is not installed) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.infini.fr>`__ +* `searx.jeanphilippemorvan.info <https://searx.jeanphilippemorvan.info/>`__ - (down) Issuer: StartCom `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.jeanphilippemorvan.info>`__ +* `searx.lhorn.de <https://searx.lhorn.de/>`__ - (redirect the Searx's github repository page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest>`__ (only reachable from european countries) +* `searx.lvweb.host <https://searx.lvweb.host>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lvweb.host>`__ +* `searx.mrtino.eu <https://searx.mrtino.eu>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mrtino.eu>`__ +* `searx.netzspielplatz.de <https://searx.netzspielplatz.de/>`__ - (error page about GDPR even when browsing it from USA and Asia) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.netzspielplatz.de>`__ +* `searx.new-admin.net <https://searx.new-admin.net>`__ - (down) Issuer: Let's Encrypt +* `searx.nogafa.org <https://searx.nogafa.org/>`__ - (broken CSS) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nogafa.org>`__ +* `searx.potato.hu <https://searx.potato.hu>`__ - (not a searx instance) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.potato.hu>`__ +* `searx.rubbeldiekatz.info <https://searx.rubbeldiekatz.info/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.rubbeldiekatz.info/>`__ +* `searx.s42.space <https://searx.s42.space>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.s42.space>`__ +* `searx.salcay.hu <https://searx.salcay.hu/>`__ - (down - blank page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.salcay.hu>`__ +* `searx.selea.se <https://searx.selea.se>`__ - (Leads to default Apache page) Issuer: RapidSSL (HSTS preloaded, DNSSEC) `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.selea.se>`__ | `HSTS Preload <https://hstspreload.org/?domain=searx.selea.se>`__ +* `searx.steinscraft.net <https://searx.steinscraft.net/>`__ - (down) Issuer: Cloudflare +* `searx.techregion.de <https://searx.techregion.de/>`__ - (domain expired) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.techregion.de>`__ +* `searx.tognella.com <https://searx.tognella.com/>`__ - (down) Issuer: Cloudflare +* `searx.xi.ht <https://searx.xi.ht/>`__ - (return a 502 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xi.ht>`__ +* `searxist.com <https://searxist.com/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searxist.com>`__ +* `so.sb <https://so.sb/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=so.sb>`__ +* `srx.stdout.net <https://srx.stdout.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=srx.stdout.net>`__ +* `w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion <http://w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion/>`__ - Hidden Service +* `win8linux.nohost.me <https://win8linux.nohost.me/searx/>`__ - (down) Issuer: Let's Encrypt +* `wiznet.tech <https://wiznet.tech>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=wiznet.tech>`__ +* `www.mercurius.space <https://www.mercurius.space/>`__ - (down) Issuer: Let's Encrypt +* `www.ready.pm <https://www.ready.pm>`__ - Issuer: WoSign `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.ready.pm>`__ +* `z.awsmppl.com <https://z.awsmppl.com>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=z.awsmppl.com>`__ +* `zlsdzh.tk <https://zlsdzh.tk>`__ - (down - 404 HTTP error) Issuer: TrustAsia Technologies, Inc. `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=zlsdzh.tk>`__ * + From 3bb97fcb84246f99cbbe3199f8a81fdabaaef997 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 5 Jan 2020 10:02:42 +0100 Subject: [PATCH 139/238] docs(user): public instances, fix Searxes@Danwin entry fixes: https://github.com/asciimoo/searx/issues/1770 This is not Searx at all. This is Meta-Searx with other engines. See https://github.com/asciimoo/searx/issues/1770#issuecomment-570776655 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/user/public_instances.rst | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst index a88acc47..b0cdd8d1 100644 --- a/docs/user/public_instances.rst +++ b/docs/user/public_instances.rst @@ -51,6 +51,16 @@ you can't decide which Searx instance to use: - Excludes servers with user tracking and analytics or are proxied through Cloudflare. + * - `Searxes <https://searxes.danwin1210.me/>`__ @Danwin + - onion v3 `hidden service + <http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/>`__ + - Let's Encrypt (`Verification + <https://www.ssllabs.com/ssltest/analyze.html?d=searxes.danwin1210.me>`__) + - sources data from a randomly selected running server that satisfies + admin's quality standards which is used for post-processing + - filters out privacy-hostile websites (like CloudFlare) and either marks + them as such or folds them below the high ranking results. + Alive and running ================= @@ -169,7 +179,6 @@ Alive and running * `searx.xyz <https://searx.xyz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xyz&latest>`__ * `searx.zareldyn.net <https://searx.zareldyn.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zareldyn.net>`__ * `searx.zdechov.net <https://searx.zdechov.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zdechov.net>`__ -* `searxes.eu.org <https://searxes.eu.org>`__ (`As Hidden Service <http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searxes.eu.org>`__ * `searxs.eu <https://www.searxs.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.searxs.eu&hideResults=on>`__ * `seeks.hsbp.org <https://seeks.hsbp.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=seeks.hsbp.org>`__ - `PGP signed fingerprints of cert <https://seeks.hsbp.org/cert>`__ * `skyn3t.in/srx <https://skyn3t.in/srx/>`__ - Issuer: Let's Encrypt | onion `hidden service <http://skyn3tb3bas655mw.onion/srx/>`__ From 0f4f0e517e40632f99ecfb7fe9682226c3cfddf1 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 6 Jan 2020 14:31:18 +0100 Subject: [PATCH 140/238] docs(user): move wiki/Searx-instances from wiki to docs fixed some reST markups Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/user/public_instances.rst | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst index b0cdd8d1..37138786 100644 --- a/docs/user/public_instances.rst +++ b/docs/user/public_instances.rst @@ -11,15 +11,27 @@ Public Searx instances ====================== +.. _mailing list: mailto:searx-instances@autistici.org +.. _subscription page: https://www.autistici.org/mailman/listinfo/searx-instances + + Useful information ================== -* Up-to-date health report available on https://stats.searx.xyz<sup>(1)</sup>, for onion (tor) services: https://stats.searx.xyz/tor.html -* Searx instances `mailing list <mailto:searx-instances@autistici.org>`__ & `subscription page <https://www.autistici.org/mailman/listinfo/searx-instances>`__. -* Some of the Searx instances have a CAcert SSL certificate. You can install the missing root cert `from here <http://www.cacert.org/index.php?id=3>`__. -* You can add your own Searx instance to this page by clicking `here <https://github.com/asciimoo/searx/wiki/Searx-instances/_edit>`__ or by clicking on the "Edit" button in the top right corner (when logged in). A GitHub account is required to make changes. +* Up-to-date health report available on https://stats.searx.xyz [1]_, for onion + (tor) services: https://stats.searx.xyz/tor.html + +* Searx instances `mailing list`_ & `subscription page`_. + +* Some of the Searx instances have a CAcert SSL certificate. You can install the + missing root cert `from here <http://www.cacert.org/index.php?id=3>`__. + +* To add your own Searx instance to this page send us your PR. A GitHub account + is required to send PR or add an issue. + +.. [1] Note that most of the instances with a A+ grade in CSP column in this + site are not fully functional - for example auto-completion may not work. -<sup>(1)</sup> Note that most of the instances with a A+ grade in CSP column in this site are not fully functional - for example auto-completion may not work. List of public Searx instances ============================== @@ -44,7 +56,7 @@ you can't decide which Searx instance to use: * - `Neocities <https://searx.neocities.org/>`__ - n/a - - Comodo (`verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org>`__) + - Comodo (`Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org>`__) - Redirects users directly to a random selection of any known running server after entering query. Requires Javascript. `Changelog <https://searx.neocities.org/changelog.html>`__. @@ -65,10 +77,16 @@ you can't decide which Searx instance to use: Alive and running ================= -**NOTE:** Public instances listed here may yield less accurate results as they have much higher traffic and consequently have a higher chance of being blocked by search providers such as Google, Qwant, Bing, Startpage, etc. Hosting your own instance or using an instance that isn't listed here may give you a more consistent search experience. - **BEFORE EDITING**: Please add your Searx instance by respecting the alphabetic order. +.. note:: + + Public instances listed here may yield less accurate results as they have + much higher traffic and consequently have a higher chance of being blocked by + search providers such as Google, Qwant, Bing, Startpage, etc. Hosting your + own instance or using an instance that isn't listed here may give you a more + consistent search experience. + * `ai.deafpray.wtf/searx <https://ai.deafpray.wtf/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=ai.deafpray.wtf/searx>`__ * `bamboozle.it <https://bamboozle.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bamboozle.it>`__ * `bee.jaekr.dev <https://bee.jaekr.dev>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bee.jaekr.dev>`__ From 86b51636410cdf699727c9d64ffb6520ef5a0dad Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 6 Jan 2020 15:06:36 +0100 Subject: [PATCH 141/238] docs: move wiki/Searx-instances from wiki to docs fix project link in conf.py Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index be0c9d6e..af255e23 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -94,7 +94,7 @@ html_context = { "project_links": [ ProjectLink("Source", GIT_URL), ProjectLink("Wiki", "https://github.com/asciimoo/searx/wiki"), - ProjectLink("Public instances", "https://github.com/asciimoo/searx/wiki/Searx-instances"), + ProjectLink("Public instances", "https://asciimoo.github.io/searx/user/public_instances.html"), ProjectLink("Twitter", "https://twitter.com/Searx_engine"), ] } From db9d7d47bdce4e4e68e681748af01f84f993434c Mon Sep 17 00:00:00 2001 From: frankdelange <yetangitu-f@unternet.org> Date: Tue, 7 Jan 2020 21:41:43 +0100 Subject: [PATCH 142/238] Fix double-encode error (fixes #1799) --- searx/engines/flickr_noapi.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/searx/engines/flickr_noapi.py b/searx/engines/flickr_noapi.py index e1abb378..c8ee34f7 100644 --- a/searx/engines/flickr_noapi.py +++ b/searx/engines/flickr_noapi.py @@ -118,9 +118,9 @@ def response(resp): 'template': 'images.html' } try: - result['author'] = author.encode('utf-8') - result['title'] = title.encode('utf-8') - result['content'] = content.encode('utf-8') + result['author'] = author + result['title'] = title + result['content'] = content except: result['author'] = '' result['title'] = '' From e84067816b7d9cd83569a5b90385ba40cbc4e2fe Mon Sep 17 00:00:00 2001 From: Emilien Devos <contact@emiliendevos.be> Date: Sun, 12 Jan 2020 10:48:29 +0000 Subject: [PATCH 143/238] searx.be stopped using Fathom analytics --- docs/user/public_instances.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst index 37138786..9665c58b 100644 --- a/docs/user/public_instances.rst +++ b/docs/user/public_instances.rst @@ -142,7 +142,7 @@ Alive and running * `search.tolstoevsky.ml <https://search.tolstoevsky.ml>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.tolstoevsky.ml>`__ * `searchsin.com/searx <https://searchsin.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchsin.com/searx>`__ * `searx.anongoth.pl <https://searx.anongoth.pl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.anongoth.pl&latest>`__ -* `searx.be <https://searx.be>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.be>`__ - Uses Fathom Analytics for user tracking and analytics +* `searx.be <https://searx.be>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.be>`__ * `searx.ca <https://searx.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ca>`__ * `searx.canox.net <https://searx.canox.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.canox.net>`__ * `searx.cybt.de <https://searx.cybt.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cybt.de>`__ From 8e3bd3fcbd3a075f4c7edbd0175ae3dc5a87da53 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Tue, 28 Jan 2020 15:52:50 +0100 Subject: [PATCH 144/238] [mod] add py2 deprecation warning to webapp --- searx/webapp.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/searx/webapp.py b/searx/webapp.py index 212c874c..aadefe6b 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -95,6 +95,8 @@ if sys.version_info[0] == 3: PY3 = True else: PY3 = False + logger.warning('\033[1;31m *** Deprecation Warning ***\033[0m') + logger.warning('\033[1;31m Python2 is deprecated\033[0m') # serve pages with HTTP/1.1 from werkzeug.serving import WSGIRequestHandler From b6a2aff94a5669b85785eae22a0a77a4e2d6d443 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 30 Jan 2020 11:16:15 +0100 Subject: [PATCH 145/238] [enh] update translations --- searx/settings.yml | 5 + searx/translations/ar/LC_MESSAGES/messages.mo | Bin 14049 -> 10316 bytes searx/translations/ar/LC_MESSAGES/messages.po | 150 ++- searx/translations/bg/LC_MESSAGES/messages.mo | Bin 13778 -> 9690 bytes searx/translations/bg/LC_MESSAGES/messages.po | 150 ++- searx/translations/bo/LC_MESSAGES/messages.mo | Bin 0 -> 18914 bytes searx/translations/bo/LC_MESSAGES/messages.po | 998 ++++++++++++++++ searx/translations/ca/LC_MESSAGES/messages.mo | Bin 12694 -> 12305 bytes searx/translations/ca/LC_MESSAGES/messages.po | 152 ++- searx/translations/cs/LC_MESSAGES/messages.mo | Bin 12146 -> 9765 bytes searx/translations/cs/LC_MESSAGES/messages.po | 150 ++- searx/translations/cy/LC_MESSAGES/messages.mo | Bin 12014 -> 7073 bytes searx/translations/cy/LC_MESSAGES/messages.po | 151 ++- searx/translations/da/LC_MESSAGES/messages.mo | Bin 12050 -> 11639 bytes searx/translations/da/LC_MESSAGES/messages.po | 151 ++- searx/translations/de/LC_MESSAGES/messages.mo | Bin 12686 -> 12265 bytes searx/translations/de/LC_MESSAGES/messages.po | 159 ++- .../el_GR/LC_MESSAGES/messages.mo | Bin 14021 -> 8236 bytes .../el_GR/LC_MESSAGES/messages.po | 149 ++- searx/translations/en/LC_MESSAGES/messages.mo | Bin 7565 -> 443 bytes searx/translations/eo/LC_MESSAGES/messages.mo | Bin 12014 -> 11604 bytes searx/translations/eo/LC_MESSAGES/messages.po | 151 ++- searx/translations/es/LC_MESSAGES/messages.mo | Bin 12688 -> 12277 bytes searx/translations/es/LC_MESSAGES/messages.po | 153 ++- searx/translations/et/LC_MESSAGES/messages.mo | Bin 0 -> 11423 bytes searx/translations/et/LC_MESSAGES/messages.po | 998 ++++++++++++++++ searx/translations/eu/LC_MESSAGES/messages.mo | Bin 12356 -> 11959 bytes searx/translations/eu/LC_MESSAGES/messages.po | 163 ++- .../fa_IR/LC_MESSAGES/messages.mo | Bin 14896 -> 14413 bytes .../fa_IR/LC_MESSAGES/messages.po | 155 ++- searx/translations/fi/LC_MESSAGES/messages.mo | Bin 12258 -> 11877 bytes searx/translations/fi/LC_MESSAGES/messages.po | 149 ++- .../translations/fil/LC_MESSAGES/messages.mo | Bin 12541 -> 12151 bytes .../translations/fil/LC_MESSAGES/messages.po | 151 ++- searx/translations/fr/LC_MESSAGES/messages.mo | Bin 12868 -> 12463 bytes searx/translations/fr/LC_MESSAGES/messages.po | 152 ++- searx/translations/gl/LC_MESSAGES/messages.mo | Bin 12353 -> 11948 bytes searx/translations/gl/LC_MESSAGES/messages.po | 151 ++- searx/translations/he/LC_MESSAGES/messages.mo | Bin 13386 -> 12736 bytes searx/translations/he/LC_MESSAGES/messages.po | 185 ++- searx/translations/hr/LC_MESSAGES/messages.mo | Bin 12434 -> 11991 bytes searx/translations/hr/LC_MESSAGES/messages.po | 151 ++- searx/translations/hu/LC_MESSAGES/messages.mo | Bin 12063 -> 11707 bytes searx/translations/hu/LC_MESSAGES/messages.po | 149 ++- searx/translations/ia/LC_MESSAGES/messages.mo | Bin 12068 -> 12210 bytes searx/translations/ia/LC_MESSAGES/messages.po | 38 +- searx/translations/it/LC_MESSAGES/messages.mo | Bin 12276 -> 11900 bytes searx/translations/it/LC_MESSAGES/messages.po | 179 ++- searx/translations/ja/LC_MESSAGES/messages.mo | Bin 13555 -> 13084 bytes searx/translations/ja/LC_MESSAGES/messages.po | 154 ++- searx/translations/lt/LC_MESSAGES/messages.mo | Bin 0 -> 12354 bytes searx/translations/lt/LC_MESSAGES/messages.po | 998 ++++++++++++++++ searx/translations/nl/LC_MESSAGES/messages.mo | Bin 12267 -> 11863 bytes searx/translations/nl/LC_MESSAGES/messages.po | 149 ++- .../nl_BE/LC_MESSAGES/messages.mo | Bin 12378 -> 11974 bytes .../nl_BE/LC_MESSAGES/messages.po | 151 ++- searx/translations/oc/LC_MESSAGES/messages.mo | Bin 0 -> 12157 bytes searx/translations/oc/LC_MESSAGES/messages.po | 999 ++++++++++++++++ searx/translations/pl/LC_MESSAGES/messages.mo | Bin 12768 -> 12768 bytes searx/translations/pt/LC_MESSAGES/messages.mo | Bin 12482 -> 12068 bytes searx/translations/pt/LC_MESSAGES/messages.po | 153 ++- .../pt_BR/LC_MESSAGES/messages.mo | Bin 12417 -> 12006 bytes .../pt_BR/LC_MESSAGES/messages.po | 155 ++- searx/translations/ro/LC_MESSAGES/messages.mo | Bin 12819 -> 12380 bytes searx/translations/ro/LC_MESSAGES/messages.po | 153 ++- searx/translations/ru/LC_MESSAGES/messages.mo | Bin 15970 -> 15439 bytes searx/translations/ru/LC_MESSAGES/messages.po | 151 ++- searx/translations/sk/LC_MESSAGES/messages.mo | Bin 12395 -> 10764 bytes searx/translations/sk/LC_MESSAGES/messages.po | 153 ++- searx/translations/sl/LC_MESSAGES/messages.mo | Bin 12146 -> 11768 bytes searx/translations/sl/LC_MESSAGES/messages.po | 149 ++- searx/translations/sr/LC_MESSAGES/messages.mo | Bin 15151 -> 14618 bytes searx/translations/sr/LC_MESSAGES/messages.po | 154 ++- searx/translations/sv/LC_MESSAGES/messages.mo | Bin 12035 -> 11633 bytes searx/translations/sv/LC_MESSAGES/messages.po | 159 ++- searx/translations/ta/LC_MESSAGES/messages.mo | Bin 0 -> 16267 bytes searx/translations/ta/LC_MESSAGES/messages.po | 1003 +++++++++++++++++ searx/translations/te/LC_MESSAGES/messages.mo | Bin 13839 -> 6648 bytes searx/translations/te/LC_MESSAGES/messages.po | 149 ++- searx/translations/tr/LC_MESSAGES/messages.mo | Bin 12108 -> 7189 bytes searx/translations/tr/LC_MESSAGES/messages.po | 149 ++- searx/translations/uk/LC_MESSAGES/messages.mo | Bin 15440 -> 13914 bytes searx/translations/uk/LC_MESSAGES/messages.po | 152 ++- searx/translations/vi/LC_MESSAGES/messages.mo | Bin 13433 -> 12934 bytes searx/translations/vi/LC_MESSAGES/messages.po | 151 ++- .../zh_CN/LC_MESSAGES/messages.mo | Bin 11628 -> 11157 bytes .../zh_CN/LC_MESSAGES/messages.po | 159 ++- .../zh_Hant_TW/LC_MESSAGES/messages.mo | Bin 11622 -> 11622 bytes .../zh_TW/LC_MESSAGES/messages.mo | Bin 11608 -> 11162 bytes .../zh_TW/LC_MESSAGES/messages.po | 156 ++- 90 files changed, 7600 insertions(+), 3137 deletions(-) create mode 100644 searx/translations/bo/LC_MESSAGES/messages.mo create mode 100644 searx/translations/bo/LC_MESSAGES/messages.po create mode 100644 searx/translations/et/LC_MESSAGES/messages.mo create mode 100644 searx/translations/et/LC_MESSAGES/messages.po create mode 100644 searx/translations/lt/LC_MESSAGES/messages.mo create mode 100644 searx/translations/lt/LC_MESSAGES/messages.po create mode 100644 searx/translations/oc/LC_MESSAGES/messages.mo create mode 100644 searx/translations/oc/LC_MESSAGES/messages.po create mode 100644 searx/translations/ta/LC_MESSAGES/messages.mo create mode 100644 searx/translations/ta/LC_MESSAGES/messages.po diff --git a/searx/settings.yml b/searx/settings.yml index 2777f9ca..3a10cc4c 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -776,6 +776,7 @@ locales: en : English ar : العَرَبِيَّة (Arabic) bg : Български (Bulgarian) + bo : བོད་སྐད་ (Tibetian) ca : Català (Catalan) cs : Čeština (Czech) cy : Cymraeg (Welsh) @@ -784,6 +785,7 @@ locales: el_GR : Ελληνικά (Greek_Greece) eo : Esperanto (Esperanto) es : Español (Spanish) + et : Eesti (Estonian) eu : Euskara (Basque) fa_IR : (fārsī) فارسى (Persian) fi : Suomi (Finnish) @@ -796,8 +798,10 @@ locales: ia : Interlingua (Interlingua) it : Italiano (Italian) ja : 日本語 (Japanese) + lt : Lietuvių (Lithuanian) nl : Nederlands (Dutch) nl_BE : Vlaams (Dutch_Belgium) + oc : Lenga D'òc (Occitan) pl : Polski (Polish) pt : Português (Portuguese) pt_BR : Português (Portuguese_Brazil) @@ -808,6 +812,7 @@ locales: sr : српски (Serbian) sv : Svenska (Swedish) te : తెలుగు (telugu) + ta : தமிழ் (Tamil) tr : Türkçe (Turkish) uk : українська мова (Ukrainian) vi : tiếng việt (Vietnamese) diff --git a/searx/translations/ar/LC_MESSAGES/messages.mo b/searx/translations/ar/LC_MESSAGES/messages.mo index 052e5b5225517fc86207df9b8f2b568c737b0c0b..3774e5bef793a577e4fc11ec37d7182293172b01 100644 GIT binary patch delta 2958 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 literal 14049 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 Tj%FcB`Gv0|X8SYzwd}tDE6)>L diff --git a/searx/translations/ar/LC_MESSAGES/messages.po b/searx/translations/ar/LC_MESSAGES/messages.po index 645ca0ed..0604ac16 100644 --- a/searx/translations/ar/LC_MESSAGES/messages.po +++ b/searx/translations/ar/LC_MESSAGES/messages.po @@ -4,14 +4,15 @@ # # Translators: # ButterflyOfFire ButterflyOfFire, 2018 +# ButterflyOfFire, 2018 # ButterflyOfFire, 2017-2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-09-08 08:23+0000\n" -"Last-Translator: ButterflyOfFire ButterflyOfFire\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Arabic (http://www.transifex.com/asciimoo/searx/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +33,63 @@ msgstr "" msgid "unexpected crash" msgstr "خلل غير مُتوقّع" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "ملفات" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "الرئيسية" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "موسيقى" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "شبكات التواصل الإجتماعي" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "صور" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "فيديوهات" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "علوم و تكنولوجيا" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "أخبار" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "خرائط" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "علوم" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "إنّ الإعدادات خاطئة، يرجى تعديل خياراتك" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "إعدادات غير صالحة" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "خطأ في البحث" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "قبل {minutes} ثانية" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "قبل {hours} ساعات، {minutes} دقائق" @@ -108,29 +109,28 @@ msgstr "" msgid "Compute {functions} of the arguments" msgstr "" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "المدة المستغرقة للمحرك (ثواني)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "مدة تحميل الصفحة (ثواني)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "حصيلة نتائج البحث" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "أخطاء" @@ -142,8 +142,14 @@ msgstr "{title}&nbsp;(OBSOLETE)" msgid "This entry has been superseded by" msgstr "" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" msgstr "" #: searx/plugins/https_rewrite.py:32 @@ -158,16 +164,6 @@ msgstr "تمرير الصفحات بلا حدود" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "حمّل تلقائيا الصفحة التالية عن السحب إلى أسفل النتائج" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +326,8 @@ msgstr "الطريقة" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +399,8 @@ msgstr "محركات البحث المُستخدَمة حاليًا" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +415,8 @@ msgstr "الفئة" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +434,7 @@ msgstr "حظر" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +444,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +454,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +462,14 @@ msgstr "حفظ" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "إعاد التعيين إلى الإعدادات الإفتراضية" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +640,23 @@ msgid "General" msgstr "الرئيسية" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "المحركات" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "الإضافات" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "المجيبون" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "كعكات الكوكيز" @@ -711,88 +707,78 @@ msgstr "إختر الشكل الذي ستبدو عليه هذه السمة" msgid "Style" msgstr "الشكل" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "الإختصار" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "اللغة المختارة" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "الفترة" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "متوسط الوقت" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "أقصى مدّة" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "التسمية" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "الكلمات الرمزية" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "الوصف" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "أمثلة" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "إسم الكوكي" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "القيمة" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/bg/LC_MESSAGES/messages.mo b/searx/translations/bg/LC_MESSAGES/messages.mo index f80e5afcc9c011f0abc6e92b1b16e6d1bf3c1d8b..0ee7802a882ab6828b9018b39094431280228981 100644 GIT binary patch delta 2734 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 literal 13778 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 diff --git a/searx/translations/bg/LC_MESSAGES/messages.po b/searx/translations/bg/LC_MESSAGES/messages.po index 09a013ed..63c9938f 100644 --- a/searx/translations/bg/LC_MESSAGES/messages.po +++ b/searx/translations/bg/LC_MESSAGES/messages.po @@ -4,14 +4,15 @@ # # Translators: # ubone <van_ds_ff@mail.bg>, 2015 +# ubone <van_ds_ff@mail.bg>, 2015 # ubone <van_ds_ff@mail.bg>, 2016-2017 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-01 20:31+0000\n" -"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Bulgarian (http://www.transifex.com/asciimoo/searx/language/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +33,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "файлове" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "общо" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "музика" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "социална мрежа" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "изображения" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "видео" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "новини" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "карта" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "наука" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Неправилни настройки, моля проверете предпочитанията си." -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "грешка при търсенето" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "преди {minutes} минута(минути)" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "преди {hours} час(ове), {minutes} минута(минути)" @@ -108,29 +109,28 @@ msgstr "" msgid "Compute {functions} of the arguments" msgstr "" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Страницата зарежда (сек)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Брой резултати" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Грешки" @@ -142,8 +142,14 @@ msgstr "" msgid "This entry has been superseded by" msgstr "" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" msgstr "" #: searx/plugins/https_rewrite.py:32 @@ -158,16 +164,6 @@ msgstr "Списък без страници." msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Автоматично зареждане на следващата страница." -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +326,8 @@ msgstr "Метод" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +399,8 @@ msgstr "Използвани търсачки в момента " #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +415,8 @@ msgstr "Категория" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +434,7 @@ msgstr "Забрани" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +444,7 @@ msgstr "Тези настройки се съхраняват във вашит #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +454,7 @@ msgstr "Тези бисквитки служат за ваше удобство. #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +462,14 @@ msgstr "запази" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Върни първоначалните" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +640,23 @@ msgid "General" msgstr "Общи" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Търсачки" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Добавки" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Отговори" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Бисквитки" @@ -711,88 +707,78 @@ msgstr "Избери стил за избрания облик" msgid "Style" msgstr "Стил" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Пряк път" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Средно време" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Макс. време" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Име" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Ключови думи" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Описание" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Примери" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Това е списък на бисквитки с техните стойности, които searx съхранява на вашия компютър." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Име на бисквитката" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Стойност" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/bo/LC_MESSAGES/messages.mo b/searx/translations/bo/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..7941328e6d870dac7c3533724b19d7640e19f2f9 GIT binary patch literal 18914 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 bLSjLa{qe;4s8g<5^bgzp%8yMxYu*0<_0UnS literal 0 HcmV?d00001 diff --git a/searx/translations/bo/LC_MESSAGES/messages.po b/searx/translations/bo/LC_MESSAGES/messages.po new file mode 100644 index 00000000..a2eb5cbf --- /dev/null +++ b/searx/translations/bo/LC_MESSAGES/messages.po @@ -0,0 +1,998 @@ +# Translations template for PROJECT. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# གངས་རྒྱན། <khyon_khangey@outlook.com>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-10-08 09:02+0000\n" +"Last-Translator: གངས་རྒྱན། <khyon_khangey@outlook.com>\n" +"Language-Team: Tibetan (http://www.transifex.com/asciimoo/searx/language/bo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: bo\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: searx/search.py:137 searx/search.py:182 +msgid "timeout" +msgstr "དུས་ལས་འགོངས་ཟིན།" + +#: searx/search.py:144 +msgid "request exception" +msgstr "རེ་ཞུ་ཁྱབ་ཁོངས་ལས་འགོངས་ཟིན།" + +#: searx/search.py:151 +msgid "unexpected crash" +msgstr "ནོར་འཁྲུལ་ཆེན་པོ་བྱུང་ཟིན།" + +#: searx/webapp.py:135 +msgid "files" +msgstr "ཡིག་ཆ།" + +#: searx/webapp.py:136 +msgid "general" +msgstr "སྤྱི་བཏང་།" + +#: searx/webapp.py:137 +msgid "music" +msgstr "རོལ་དབྱངས།" + +#: searx/webapp.py:138 +msgid "social media" +msgstr "སྤྱི་ཚོགས་འབྲེལ་བ།" + +#: searx/webapp.py:139 +msgid "images" +msgstr "པར་རིས།" + +#: searx/webapp.py:140 +msgid "videos" +msgstr "བརྙན་ཟློས།" + +#: searx/webapp.py:141 +msgid "it" +msgstr "ཆ་འཕྲིན་ལག་རྩལ།" + +#: searx/webapp.py:142 +msgid "news" +msgstr "གསར་འགྱུར།" + +#: searx/webapp.py:143 +msgid "map" +msgstr "ས་བཀྲ།" + +#: searx/webapp.py:144 +msgid "science" +msgstr "ཚན་རིག་ཤེས་བྱ།" + +#: searx/webapp.py:398 searx/webapp.py:653 +msgid "Invalid settings, please edit your preferences" +msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།ཁྱེད་ཀྱིས་གདམ་ཀ་ལ་བཅོས་སྒྲིག་གཏོང་རོགས།" + +#: searx/webapp.py:410 +msgid "Invalid settings" +msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།" + +#: searx/webapp.py:444 searx/webapp.py:488 +msgid "search error" +msgstr "འཚོལ་བཤེར་ལ་ནོར་འཁྲུལ་བྱུང་།" + +#: searx/webapp.py:525 +msgid "{minutes} minute(s) ago" +msgstr "སྐར་མ་ {minutes} སྔོན་ལ།" + +#: searx/webapp.py:527 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "ཆུ་ཚོད་ {hours} དང་སྐར་མ {minutes} སྔོན་ལ།" + +#: searx/answerers/random/answerer.py:53 +msgid "Random value generator" +msgstr "ངེས་མེད་གྲངས་ཀ་མཁོ་སྤྲོད།" + +#: searx/answerers/random/answerer.py:54 +msgid "Generate different random values" +msgstr "ངེས་མེད་གྲངས་ཀ་ཁ་ཤས་ཐོབ་པར་བྱེད།" + +#: searx/answerers/statistics/answerer.py:53 +msgid "Statistics functions" +msgstr "སྡོམ་བརྩིས་ཀྱི་བྱེད་ནུས།" + +#: searx/answerers/statistics/answerer.py:54 +msgid "Compute {functions} of the arguments" +msgstr " {functions} གཞི་གྲངས་གྲངས་རྩིས།" + +#: searx/engines/__init__.py:194 +msgid "Engine time (sec)" +msgstr "འཚོལ་བཤེར་དུས་ཡུན། (སྐར་ཆ།)" + +#: searx/engines/__init__.py:198 +msgid "Page loads (sec)" +msgstr "ནང་འདྲེན་དུས་ཡུན། (སྐར་ཆ།)" + +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 +#: searx/templates/simple/results.html:20 +msgid "Number of results" +msgstr "འཚོལ་འབྲས་ཀྱི་ཁ་གྲངས།" + +#: searx/engines/__init__.py:206 +msgid "Scores" +msgstr "ཐོབ་སྐར།" + +#: searx/engines/__init__.py:210 +msgid "Scores per result" +msgstr "འཚོལ་འབྲས་རེ་རེ་ཡི་ཐོབ་སྐར།" + +#: searx/engines/__init__.py:214 +msgid "Errors" +msgstr "ནོར་འཁྲུལ།" + +#: searx/engines/pdbe.py:87 +msgid "{title}&nbsp;(OBSOLETE)" +msgstr "{title}&nbsp;(དུས་ལས་འགོངས་ཟིན།)" + +#: searx/engines/pdbe.py:91 +msgid "This entry has been superseded by" +msgstr "འཚོལ་བྱང་འདི་གཞན་གྱིས་ཚབ་བྱེད་འདུག" + +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI བསྐྱར་འབྲི།" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Avoid paywalls by redirecting to open-access versions of publications when available" + +#: searx/plugins/https_rewrite.py:32 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "HTTP དྲ་ངོས་སྦྲེལ་ཐག་རྣམས HTTPS ལ་བསྒྱུར།" + +#: searx/plugins/infinite_scroll.py:3 +msgid "Infinite scroll" +msgstr "མཐའ་མེད་པའི་འཆར་ངོས།" + +#: searx/plugins/infinite_scroll.py:4 +msgid "Automatically load next page when scrolling to bottom of current page" +msgstr "དྲ་ངོས་མར་འདྲུད་ནས་ཞབས་ལ་སླེབས་དུས་རང་འགུལ་སྒོས་འཕྲོ་མའི་ནང་དོན་འཆར་པར་བྱེད།" + +#: searx/plugins/open_results_on_new_tab.py:18 +#: searx/templates/oscar/preferences.html:114 +#: searx/templates/simple/preferences.html:149 +msgid "Open result links on new browser tabs" +msgstr "ཤོག་ངོས་གསར་བ་ཞིག་ནས་དྲ་ངོས་འཆར་པར་བྱེད།" + +#: searx/plugins/open_results_on_new_tab.py:19 +msgid "" +"Results are opened in the same window by default. This plugin overwrites the" +" default behaviour to open links on new tabs/windows. (JavaScript required)" +msgstr "Results are opened in the same window by default. This plugin overwrites the default behaviour to open links on new tabs/windows. (JavaScript required)" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "རིགས་གདམ་གསེས་བཏང་ནས་འཚོལ་བཤེར་གཏོང་།" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "Perform search immediately if a category selected. Disable to select multiple categories. (JavaScript required)" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "Displays your IP if the query is \"ip\" and your user agent if the query contains \"user agent\"." + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "དྲ་གནས་རྗེས་འདེད་སྤོ་འབུད།" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "Remove trackers arguments from the returned URL" + +#: searx/plugins/vim_hotkeys.py:3 +msgid "Vim-like hotkeys" +msgstr "མགྱོགས་མྱུར་མཐེབ་གཞོང་གི་སྤྱོད་སྟངས།" + +#: searx/plugins/vim_hotkeys.py:4 +msgid "" +"Navigate search results with Vim-like hotkeys (JavaScript required). Press " +"\"h\" key on main or result page to get help." +msgstr "Navigate search results with Vim-like hotkeys (JavaScript required). Press \"h\" key on main or result page to get help." + +#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4 +#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4 +#: searx/templates/simple/404.html:4 +msgid "Page not found" +msgstr "དྲ་ངོས་རྙེད་རྒྱུ་མ་བྱུང་།" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +#, python-format +msgid "Go to %(search_page)s." +msgstr "%(search_page)s ལ་བསྐྱོད།" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +msgid "search page" +msgstr "འཚོལ་བཤེར་དྲ་ངོས།" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12 +#: searx/templates/oscar/navbar.html:7 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "རང་མོས་ཀྱི་སྒྲིག་འགོད།" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2 +#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "ངེད་ཀྱི་སྐོར།" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/legacy/preferences.html:5 +#: searx/templates/oscar/preferences.html:8 +#: searx/templates/pix-art/preferences.html:5 +#: searx/templates/simple/preferences.html:26 +msgid "Preferences" +msgstr "རང་མོས་ཀྱི་སྒྲིག་འགོད།" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/legacy/preferences.html:9 +#: searx/templates/oscar/preferences.html:33 +#: searx/templates/oscar/preferences.html:35 +#: searx/templates/simple/preferences.html:34 +msgid "Default categories" +msgstr "གཞི་བཞག་གི་རིགས།" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/legacy/preferences.html:14 +#: searx/templates/oscar/preferences.html:41 +#: searx/templates/pix-art/preferences.html:9 +#: searx/templates/simple/preferences.html:39 +#: searx/templates/simple/preferences.html:163 +msgid "Search language" +msgstr "འཚོལ་བཤེར་སྐད་རིགས།" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/legacy/preferences.html:17 +#: searx/templates/oscar/languages.html:6 +#: searx/templates/pix-art/preferences.html:12 +#: searx/templates/simple/languages.html:2 +#: searx/templates/simple/preferences.html:42 +msgid "Default language" +msgstr "སྐད་རིགས།" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/legacy/preferences.html:25 +#: searx/templates/oscar/preferences.html:47 +#: searx/templates/pix-art/preferences.html:20 +#: searx/templates/simple/preferences.html:120 +msgid "Interface language" +msgstr "མདུན་ངོས་ཀྱི་སྐད་རིགས།" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/legacy/preferences.html:35 +#: searx/templates/oscar/preferences.html:57 +#: searx/templates/simple/preferences.html:51 +msgid "Autocomplete" +msgstr "རང་ཤུགས་ཀྱིས་སྒྲུབ།" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/legacy/preferences.html:46 +#: searx/templates/oscar/preferences.html:68 +#: searx/templates/simple/preferences.html:166 +msgid "Image proxy" +msgstr "རི་མོ་མངག་བཅོལ་གྱི་ཞབས་ཞུ་སྒྲིག་ཆས།" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/legacy/preferences.html:49 +#: searx/templates/oscar/preferences.html:72 +#: searx/templates/simple/preferences.html:169 +msgid "Enabled" +msgstr "ཁ་འབྱེད་ཟིན།" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/legacy/preferences.html:50 +#: searx/templates/oscar/preferences.html:73 +#: searx/templates/simple/preferences.html:170 +msgid "Disabled" +msgstr "ཁ་རྒྱབ་ཟིན།" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/legacy/preferences.html:55 +#: searx/templates/oscar/preferences.html:77 +#: searx/templates/pix-art/preferences.html:30 +#: searx/templates/simple/preferences.html:156 +msgid "Method" +msgstr "ཐབས་ཤེས།" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/legacy/preferences.html:64 +#: searx/templates/oscar/preferences.html:86 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 +#: searx/templates/simple/preferences.html:63 +#: searx/templates/simple/preferences.html:90 +msgid "SafeSearch" +msgstr "བདེ་འཇགས་འཚོལ་བཤེར།" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/legacy/preferences.html:67 +#: searx/templates/oscar/preferences.html:90 +#: searx/templates/simple/preferences.html:66 +msgid "Strict" +msgstr "ནན་ཏན།" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/legacy/preferences.html:68 +#: searx/templates/oscar/preferences.html:91 +#: searx/templates/simple/preferences.html:67 +msgid "Moderate" +msgstr "འབྲིང་ཙམ།" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/legacy/preferences.html:69 +#: searx/templates/oscar/preferences.html:92 +#: searx/templates/simple/preferences.html:68 +msgid "None" +msgstr "གང་ཡང་མེད།" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/legacy/preferences.html:74 +#: searx/templates/oscar/preferences.html:96 +#: searx/templates/pix-art/preferences.html:39 +#: searx/templates/simple/preferences.html:131 +msgid "Themes" +msgstr "རྣམ་པ།" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "ཁ་དོག" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "སྔོན་པོ། (གཞི་བཞག)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "དམར་སྨུག" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "ལྗང་ཁུ།" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "སྔོ་སྐྱ།" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "ལི་ཁྲི།" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "དམར་པོ།" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/legacy/preferences.html:93 +#: searx/templates/pix-art/preferences.html:49 +#: searx/templates/simple/preferences.html:77 +msgid "Currently used search engines" +msgstr "ཉེ་ལམ་སྤྱད་ཟིན་པའི་འཚོལ་བྱེད་སྒུལ་བྱེད།" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/legacy/preferences.html:97 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 +#: searx/templates/pix-art/preferences.html:53 +#: searx/templates/simple/preferences.html:87 +msgid "Engine name" +msgstr "སྒུལ་བྱེད་ཀྱི་མིང་།" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/legacy/preferences.html:98 +msgid "Category" +msgstr "རིགས།" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:110 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +#: searx/templates/simple/preferences.html:86 +msgid "Allow" +msgstr "ཆོག་མཆན།" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:111 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "བཀག་སྡོམ།" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/legacy/preferences.html:119 +#: searx/templates/oscar/preferences.html:285 +#: searx/templates/pix-art/preferences.html:73 +#: searx/templates/simple/preferences.html:180 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "These settings are stored in your cookies, this allows us not to store this data about you." + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/legacy/preferences.html:121 +#: searx/templates/oscar/preferences.html:287 +#: searx/templates/pix-art/preferences.html:75 +#: searx/templates/simple/preferences.html:182 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "These cookies serve your sole convenience, we don't use these cookies to track you." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/legacy/preferences.html:124 +#: searx/templates/oscar/preferences.html:293 +#: searx/templates/pix-art/preferences.html:78 +#: searx/templates/simple/preferences.html:185 +msgid "save" +msgstr "གསོག་འཇོག" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/legacy/preferences.html:125 +#: searx/templates/oscar/preferences.html:295 +#: searx/templates/simple/preferences.html:186 +msgid "Reset defaults" +msgstr "གདོད་མའི་རྣམ་པ་ལ་སྒྲིག་འགོད་བྱེད།" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/legacy/preferences.html:126 +#: searx/templates/oscar/preferences.html:294 +#: searx/templates/pix-art/preferences.html:79 +#: searx/templates/simple/preferences.html:187 +msgid "back" +msgstr "ཕྱིར་ལོག" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/legacy/results.html:13 +#: searx/templates/oscar/results.html:136 +#: searx/templates/simple/results.html:58 +msgid "Search URL" +msgstr "འཚོལ་བཤེར་དྲ་གནས།" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/legacy/results.html:17 +#: searx/templates/oscar/results.html:141 +#: searx/templates/simple/results.html:62 +msgid "Download results" +msgstr "འཚོལ་འབྲས་ཕབ་ལེན།" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/legacy/results.html:35 +#: searx/templates/simple/results.html:10 +msgid "Answers" +msgstr "ལན།" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/legacy/results.html:43 +#: searx/templates/oscar/results.html:116 +#: searx/templates/simple/results.html:42 +msgid "Suggestions" +msgstr "འོས་སྦྱོས།" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/legacy/results.html:81 +#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78 +#: searx/templates/simple/results.html:130 +msgid "previous page" +msgstr "དྲ་ངོས་སྔོན་མ།" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/legacy/results.html:92 +#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84 +#: searx/templates/simple/results.html:145 +msgid "next page" +msgstr "དྲ་ངོས་གཞུག་མ།" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4 +msgid "Search for..." +msgstr "འཚོལ་བཤེར་ནང་དོན།" + +#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +#: searx/templates/simple/stats.html:7 +msgid "Engine stats" +msgstr "སྒུལ་བྱེད་ཀྱི་སྡོམ་རྩིས།" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/legacy/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "གདོད་མའི་ནང་དོན།" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Seeder" +msgstr "མཁོ་སྤྲོད་གཏོང་མཁན།" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Leecher" +msgstr "དང་ལེན་བྱེད་མཁན།" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/legacy/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:23 +#: searx/templates/simple/result_templates/torrent.html:6 +msgid "magnet link" +msgstr "ཐོན་ཁུངས་ཀྱི་དྲ་གནས།" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/legacy/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:24 +#: searx/templates/simple/result_templates/torrent.html:7 +msgid "torrent file" +msgstr "ས་བོན་ཡིག་ཆ།" + +#: searx/templates/legacy/categories.html:8 +#: searx/templates/simple/categories.html:6 +msgid "Click on the magnifier to perform search" +msgstr "ས་བོན་སྟེང་གི་སྦྲེལ་ཐག་ལ་རྡེབ་ནས་འཚོལ་བཤེར་གཏོང་།" + +#: searx/templates/legacy/preferences.html:84 +#: searx/templates/oscar/preferences.html:113 +#: searx/templates/simple/preferences.html:142 +msgid "Results on new tabs" +msgstr "ཤོག་ངོས་གསར་བ་ནས་འཚོལ་འབྲས་འཆར།" + +#: searx/templates/legacy/preferences.html:87 +#: searx/templates/oscar/preferences.html:117 +#: searx/templates/simple/preferences.html:145 +msgid "On" +msgstr "ཁ་ཕྱེས།" + +#: searx/templates/legacy/preferences.html:88 +#: searx/templates/oscar/preferences.html:118 +#: searx/templates/simple/preferences.html:146 +msgid "Off" +msgstr "ཁ་རྒྱབ།" + +#: searx/templates/legacy/result_templates/code.html:3 +#: searx/templates/legacy/result_templates/default.html:3 +#: searx/templates/legacy/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48 +#: searx/templates/simple/macros.html:43 +msgid "cached" +msgstr "འདྲ་བཤུས་རྒྱབ་ཚར།" + +#: searx/templates/oscar/advanced.html:4 +msgid "Advanced settings" +msgstr "མཐོ་རིམ་སྒྲིག་འགོད།" + +#: searx/templates/oscar/base.html:62 +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "ཁ་རྒྱག" + +#: searx/templates/oscar/base.html:64 +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +#: searx/templates/simple/results.html:25 +msgid "Error!" +msgstr "ནོར་འཁྲུལ་བྱུང་ཟིན།" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "Powered by" +msgstr "བཟོ་སྐུན་པ་ནི" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "མི་སྒེར་ཆ་འཕྲིན་ལ་བརྩི་གསོག་ལྡན་ཞིང་འཚོལ་བྱེད་ནང་དོན་ཕུན་སུམ་པའི་འཚོལ་བཤེར་སྒུལ་བྱེད་མ་ལག" + +#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50 +#: searx/templates/simple/macros.html:43 +msgid "proxied" +msgstr "མངག་བཅོལ་བྱེད་ཟིན།" + +#: searx/templates/oscar/macros.html:92 +msgid "supported" +msgstr "རྒྱབ་སྐྱོར་ཐོབ་ཟིན་པ།" + +#: searx/templates/oscar/macros.html:96 +msgid "not supported" +msgstr "རྒྱབ་སྐྱོར་མི་ཐོབ།" + +#: searx/templates/oscar/preferences.html:13 +#: searx/templates/oscar/preferences.html:22 +#: searx/templates/simple/preferences.html:32 +msgid "General" +msgstr "སྤྱི་བཏང་།" + +#: searx/templates/oscar/preferences.html:14 +#: searx/templates/oscar/preferences.html:134 +#: searx/templates/simple/preferences.html:76 +msgid "Engines" +msgstr "སྒུལ་བྱེད།" + +#: searx/templates/oscar/preferences.html:15 +#: searx/templates/oscar/preferences.html:207 +msgid "Plugins" +msgstr "ལྷུ་ལག" + +#: searx/templates/oscar/preferences.html:16 +#: searx/templates/oscar/preferences.html:233 +msgid "Answerers" +msgstr "ལན།" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:260 +msgid "Cookies" +msgstr "རྐང་རྗེས།" + +#: searx/templates/oscar/preferences.html:42 +#: searx/templates/simple/preferences.html:48 +msgid "What language do you prefer for search?" +msgstr "ཁྱེད་ཀྱིས་ཆེས་སྤྱོད་བདེ་པའི་འཚོལ་བཤེར་སྐད་རིགས་གང་ཡིན་ནམ།" + +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/simple/preferences.html:128 +msgid "Change the language of the layout" +msgstr "སྐད་རིགས་གདམ་གསེས་ཀྱི་དྲ་ངོས་བརྗེ་བསྒྱུར།" + +#: searx/templates/oscar/preferences.html:58 +#: searx/templates/simple/preferences.html:60 +msgid "Find stuff as you type" +msgstr "འཚོལ་བྱ་གཏགས་པ་ཇི་བཞིན་བཙལ།" + +#: searx/templates/oscar/preferences.html:69 +#: searx/templates/simple/preferences.html:173 +msgid "Proxying image results through searx" +msgstr "རི་མོ searx བརྒྱུད་ནས་མངག་བཅོལ་བྱས་ཟིན།" + +#: searx/templates/oscar/preferences.html:78 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "Change how forms are submited, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">learn more about request methods</a>" + +#: searx/templates/oscar/preferences.html:87 +#: searx/templates/simple/preferences.html:71 +msgid "Filter content" +msgstr "ནང་དོན་བཙག་བྱེད།" + +#: searx/templates/oscar/preferences.html:97 +#: searx/templates/simple/preferences.html:139 +msgid "Change searx layout" +msgstr "དྲ་ངོས་ཀྱི་རྣམ་པ་བརྗེ་བསྒྱུར།" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Choose style for this theme" +msgstr "དྲ་ངོས་རྣམ་པ་འདི་ལ་སྒྲིག་འགོད་གཏོང་།" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Style" +msgstr "ཚུགས་ཀ" + +#: searx/templates/oscar/preferences.html:151 +#: searx/templates/oscar/preferences.html:163 +#: searx/templates/simple/preferences.html:88 +msgid "Shortcut" +msgstr "མགྱོགས་མྱུར་མཐེབ་གཞོང་།" + +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 +msgid "Selected language" +msgstr "སྐད་རིགས་གདམ་གསེས།" + +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 +#: searx/templates/simple/preferences.html:91 +msgid "Time range" +msgstr "དུས་ཀྱི་ཁྱབ་ཁོངས།" + +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 +#: searx/templates/simple/preferences.html:92 +msgid "Avg. time" +msgstr "ས་སྙོམས་དུས་ཚོད།" + +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 +#: searx/templates/simple/preferences.html:93 +msgid "Max time" +msgstr "མང་མཐའི་དུས་ཚོད།" + +#: searx/templates/oscar/preferences.html:236 +msgid "This is the list of searx's instant answering modules." +msgstr "This is the list of searx's instant answering modules." + +#: searx/templates/oscar/preferences.html:240 +msgid "Name" +msgstr "མིང་།" + +#: searx/templates/oscar/preferences.html:241 +msgid "Keywords" +msgstr "ཐ་སྙད་གཙོ་བོ།" + +#: searx/templates/oscar/preferences.html:242 +msgid "Description" +msgstr "འབྲེལ་ཡོད་ངོ་སྤྲོད།" + +#: searx/templates/oscar/preferences.html:243 +msgid "Examples" +msgstr "དཔེ་བརྗོད།" + +#: searx/templates/oscar/preferences.html:263 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "འདི་ནི searx ཡི་བརྡ་སྤྲོད་ལན་སློག་གི་གསལ་ཐོ་ཞིག་ཡིན།" + +#: searx/templates/oscar/preferences.html:264 +msgid "With that list, you can assess searx transparency." +msgstr "གསལ་ཐོ་འདི་བརྒྱུད་ནས། ཁྱེད་ཀྱིས searx དྲ་ཚིགས་ཀྱི་བདེན་པ་རང་བཞིན་ལ་མཉམ་ཚོར་ལེན་ཐུབ།" + +#: searx/templates/oscar/preferences.html:269 +msgid "Cookie name" +msgstr "རྗེས་འདེད་ཀྱི་ཡིག་ཆའི་མིང་།" + +#: searx/templates/oscar/preferences.html:270 +msgid "Value" +msgstr "ཚད་གཞི།" + +#: searx/templates/oscar/preferences.html:289 +msgid "Search URL of the currently saved preferences" +msgstr "ཉེ་ལམ་རང་མོས་སྒྲིག་འགོད་ཁྲོད་དུ་གསོག་འཇོག་བྱས་ཟིན་པའི་དྲ་གནས་འཚོལ་བཤེར།" + +#: searx/templates/oscar/preferences.html:289 +msgid "" +"Note: specifying custom settings in the search URL can reduce privacy by " +"leaking data to the clicked result sites." +msgstr "Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites." + +#: searx/templates/oscar/results.html:17 +msgid "Search results" +msgstr "འཚོལ་འབྲས།" + +#: searx/templates/oscar/results.html:21 +#: searx/templates/simple/results.html:84 +msgid "Try searching for:" +msgstr "འཚོལ་བཤེར་ནང་དོན་ནི།" + +#: searx/templates/oscar/results.html:100 +#: searx/templates/simple/results.html:25 +msgid "Engines cannot retrieve results" +msgstr "འཚོལ་བཤེར་སྒུལ་བྱེད་ལ་ནོར་འཁྲུལ་ཅུང་ཟད་བྱུང་།" + +#: searx/templates/oscar/results.html:131 +msgid "Links" +msgstr "སྦྲེལ་ཐག" + +#: searx/templates/oscar/search.html:8 +#: searx/templates/oscar/search_full.html:11 +#: searx/templates/simple/search.html:5 +msgid "Start search" +msgstr "འཚོལ་བཤེར་མགོ་རྩོམ།" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "སྡོམ་རྩིས།" + +#: searx/templates/oscar/time-range.html:3 +#: searx/templates/simple/time-range.html:3 +msgid "Anytime" +msgstr "དུས་ངེས་མེད།" + +#: searx/templates/oscar/time-range.html:6 +#: searx/templates/simple/time-range.html:6 +msgid "Last day" +msgstr "ཉིན་སྔོན་མ།" + +#: searx/templates/oscar/time-range.html:9 +#: searx/templates/simple/time-range.html:9 +msgid "Last week" +msgstr "གཟའ་སྔོན་མ།" + +#: searx/templates/oscar/time-range.html:12 +#: searx/templates/simple/time-range.html:12 +msgid "Last month" +msgstr "ཟླ་བ་སྔོན་མ།" + +#: searx/templates/oscar/time-range.html:15 +#: searx/templates/simple/time-range.html:15 +msgid "Last year" +msgstr "ལོ་སྔོན་མ།" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "མཉམ་འཇོག་བྱེད།" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "བལྟས་སོང་ན་ཁྱེད་ཀྱིས་ཐེངས་དང་པོ་ངེད་དྲ་བ་སྤྱོད་བཞིན་པ་རེད།" + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "ཆ་འཕྲིན།" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "ཉེ་བར་དྲ་ངོས་རྗེས་འདེད་གང་ཡང་མེད།" + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "ཉེ་བར་ཐོབ་རུང་བའི་ཡིག་ཆ་གང་ཡང་མེད།" + +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +msgid "Engines cannot retrieve results." +msgstr "འཙོལ་བཤེར་གཏོང་མི་ནུས། དགོངས་དག" + +#: searx/templates/oscar/messages/no_results.html:10 +#: searx/templates/simple/messages/no_results.html:10 +msgid "Please, try again later or find another searx instance." +msgstr "ཏོག་ཙམ་འགོར་རྗེས་ཡང་བསྐྱར་ཚར་ལྟ་བྱོས།" + +#: searx/templates/oscar/messages/no_results.html:14 +#: searx/templates/simple/messages/no_results.html:14 +msgid "Sorry!" +msgstr "དགོངས་དག" + +#: searx/templates/oscar/messages/no_results.html:15 +#: searx/templates/simple/messages/no_results.html:15 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "འཚོལ་འབྲས་གང་ཡང་མ་ཐོབ། ཁྱེད་ཀྱིས་འཚོལ་བཤེར་ཐ་སྙད་གཞན་པ་ནས་ཚོད་ལྟ་བྱེད་རོགས།" + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "ཡག་བྱུང་།" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "སྒྲིག་འགོད་བདེ་ལེགས་ངང་གསོག་འཇོག་བྱས་ཟིན།" + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "ཨ། བྱ་འདི།" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "ནོར་འཁྲུལ་ཆ་གེ་མོ་ཞིག་བྱུང་ཟིན།" + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "show media" +msgstr "སྨྱན་གཟུགས་འཆར་པར་བྱེད།" + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "hide media" +msgstr "སྨྱན་གཟུགས་སྦས་པར་བྱེད།" + +#: searx/templates/oscar/result_templates/images.html:30 +msgid "Get image" +msgstr "པར་རིས་ཕབ་ལེན།" + +#: searx/templates/oscar/result_templates/images.html:33 +msgid "View source" +msgstr "ཡོངས་ཁུངས་ལ་ལྟ།" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "show map" +msgstr "ས་བཀྲ་འཆར།" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "hide map" +msgstr "ས་བཀྲ་སྦས།" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "show details" +msgstr "ངོ་སྤྲོད་འཆར།" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "hide details" +msgstr "ངོ་སྤྲོད་སྦས།" + +#: searx/templates/oscar/result_templates/torrent.html:7 +#: searx/templates/simple/result_templates/torrent.html:11 +msgid "Filesize" +msgstr "ཡིག་ཆའི་ཆེ་ཆུང་།" + +#: searx/templates/oscar/result_templates/torrent.html:9 +#: searx/templates/simple/result_templates/torrent.html:12 +msgid "Bytes" +msgstr "གྲངས་གནས།" + +#: searx/templates/oscar/result_templates/torrent.html:10 +#: searx/templates/simple/result_templates/torrent.html:13 +msgid "kiB" +msgstr "kB" + +#: searx/templates/oscar/result_templates/torrent.html:11 +#: searx/templates/simple/result_templates/torrent.html:14 +msgid "MiB" +msgstr "MB" + +#: searx/templates/oscar/result_templates/torrent.html:12 +#: searx/templates/simple/result_templates/torrent.html:15 +msgid "GiB" +msgstr "GB" + +#: searx/templates/oscar/result_templates/torrent.html:13 +#: searx/templates/simple/result_templates/torrent.html:16 +msgid "TiB" +msgstr "TB" + +#: searx/templates/oscar/result_templates/torrent.html:15 +#: searx/templates/simple/result_templates/torrent.html:20 +msgid "Number of Files" +msgstr "ཡིག་ཆའི་ཁ་གྲངས།" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "show video" +msgstr "བརྙན་ཟློས་འཆར།" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "hide video" +msgstr "རྙན་ཟློས་སྦས།" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "གང་བྱུང་དྲ་ཚིགས་འཆར་པར་བྱེད།" + +#: searx/templates/simple/base.html:31 +msgid "No item found" +msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།" + +#: searx/templates/simple/preferences.html:89 +msgid "Supports selected language" +msgstr "རྒྱབ་སྐྱོར་ཐོབ་པའི་སྐད་རིགས་གདམ་གསེས།" + +#: searx/templates/simple/preferences.html:118 +msgid "User interface" +msgstr "མདུན་ངོས།" + +#: searx/templates/simple/preferences.html:154 +msgid "Privacy" +msgstr "མི་སྒེར་གསང་དོན།" diff --git a/searx/translations/ca/LC_MESSAGES/messages.mo b/searx/translations/ca/LC_MESSAGES/messages.mo index 2ec3e0503020d55596038bcab0cb861a6deacf79..43b3d6d4716b9b136731e7a6aa7723f07ac29078 100644 GIT binary patch delta 3166 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 K{<Ud|!~O#%icgUM delta 3465 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 diff --git a/searx/translations/ca/LC_MESSAGES/messages.po b/searx/translations/ca/LC_MESSAGES/messages.po index 460091cd..44d46665 100644 --- a/searx/translations/ca/LC_MESSAGES/messages.po +++ b/searx/translations/ca/LC_MESSAGES/messages.po @@ -4,14 +4,15 @@ # # Translators: # Calbasi <joan@calbasi.net>, 2018 +# Ecron <ecron_89@hotmail.com>, 2019 # jmontane, 2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-12-15 15:10+0000\n" -"Last-Translator: jmontane\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-10-17 13:46+0000\n" +"Last-Translator: Ecron <ecron_89@hotmail.com>\n" "Language-Team: Catalan (http://www.transifex.com/asciimoo/searx/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +33,63 @@ msgstr "Excepció en la petició" msgid "unexpected crash" msgstr "Fallada no esperada" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "fitxers" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "general" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "música" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "xarxes socials" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "imatges" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "vídeos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "informàtica" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "notícies" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "ciència" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "La configuració no és vàlida, editeu-la" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "La configuració no és vàlida" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "error en la cerca" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "fa {minutes} minuts" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "fa {hours} hores i {minutes} minuts" @@ -108,29 +109,28 @@ msgstr "Funcions estadístiques" msgid "Compute {functions} of the arguments" msgstr "Calcula {functions} dels arguments" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Temps del motor (segons)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Càrrega de la pàgina (segons)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Nombre de resultats" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Valoració" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Valoració segons el resultat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Errors" @@ -142,9 +142,15 @@ msgstr "{title}&nbsp;(OBSOLET)" msgid "This entry has been superseded by" msgstr "Aquesta entrada ha estat substituïda per" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "No hi ha resum disponible per a aquesta publicació." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Reescriptura DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evita els llocs de pagaments redirigint a versions d'accés obert de les publicacions si és possible" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -158,16 +164,6 @@ msgstr "Desplaçament infinit" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Carrega automàticament la pàgina següent en desplaçar-se al final de la pàgina actual" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Reescriu l'Open Access DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Evita els llocs de pagaments redirigint a versions d'accés obert de les publicacions si és possible" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +326,8 @@ msgstr "Mètode" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +399,8 @@ msgstr "Motors de cerca usats actualment" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +415,8 @@ msgstr "Categoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +434,7 @@ msgstr "Bloca" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +444,7 @@ msgstr "Aquesta configuració es desa en les galetes. Això ens permet no emmaga #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +454,7 @@ msgstr "Aquestes galetes només són per a la vostra conveniència. No les usem #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +462,14 @@ msgstr "desa" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Restaura els valors predeterminats" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +640,23 @@ msgid "General" msgstr "General" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motorrs" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Connectat" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Resposter" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Galetes" @@ -711,88 +707,78 @@ msgstr "Trieu un estil per a aquest tema" msgid "Style" msgstr "Estil" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Solucionador de l'Open Access DOI" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Redirigeix cap a versions d'accés obert de les publicacions si són disponibles (cal un connector)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Drecera" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Llengua seleccionada" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Interval de temps" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Temps amitjanat" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Temps màxim" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Aquest és el llistat dels mòduls de resposta ràpida del searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nom" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Paraules clau" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descripció" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exemples" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Aquest és el llistat de les galetes, i els seu valor, que el searx té desats en el vostre equip." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Amb aquest llistat, podeu avaluar la transparència del searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nom de la galeta" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valor" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL de cerca de les preferències desades actualment" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/cs/LC_MESSAGES/messages.mo b/searx/translations/cs/LC_MESSAGES/messages.mo index eded7150ad2118d2b95d4a055d3c4d821c0fb917..55d4024292303a4c8a4b969130df2abe0dc96855 100644 GIT binary patch delta 2971 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 ZvdLcI$+h=+O6@xy+ul%=X*U;L`VS1mU>N`a delta 5262 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 Jc+reK{{pKbN$vmu diff --git a/searx/translations/cs/LC_MESSAGES/messages.po b/searx/translations/cs/LC_MESSAGES/messages.po index 8d3ce3c3..a1421235 100644 --- a/searx/translations/cs/LC_MESSAGES/messages.po +++ b/searx/translations/cs/LC_MESSAGES/messages.po @@ -4,14 +4,15 @@ # # Translators: # Clon <fillip1@seznam.cz>, 2017 +# Clon <fillip1@seznam.cz>, 2017 # Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>, 2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-12-18 12:03+0000\n" -"Last-Translator: Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Czech (http://www.transifex.com/asciimoo/searx/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +33,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "soubory" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "obecné" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "hudba" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociální media" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "obrázky" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videa" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "zprávy" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "věda" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Neplatné nastavení, upravte svoje předvolby" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Neplatné nastavení" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "chyba vyhledávání" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "před {minutes} minutamy" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "před {hours} hodinami, {minutes} minutami" @@ -108,29 +109,28 @@ msgstr "Statistické funkce" msgid "Compute {functions} of the arguments" msgstr "Vypočítá {functions} daného argumentu" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Strojový čas (s)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Načítání stránky (s)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Počet výsledků" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Chyby" @@ -142,10 +142,16 @@ msgstr "{title}&nbsp;(ZASTARALÉ)" msgid "This entry has been superseded by" msgstr "Tato položka byla nahrazena" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" msgstr "" +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Předejít placené sekce přesměrováním na verze s otevřený přístupem pokud je to možné" + #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" msgstr "Pokud je to možné přepsat HTTP linky na HTTPS" @@ -158,16 +164,6 @@ msgstr "Nekonečné rolování" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Automaticky načíst další stránku při dorolování na konec současné" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Předejít placené sekce přesměrováním na verze s otevřený přístupem pokud je to možné" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +326,8 @@ msgstr "Metoda" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +399,8 @@ msgstr "Nyní používaný vyhledávač" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +415,8 @@ msgstr "Kategorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +434,7 @@ msgstr "Blokovat" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +444,7 @@ msgstr "Tato nastavení jsou uložena ve vašem cookies, to nám umožňuje tako #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +454,7 @@ msgstr "Tato cookie slouží výhradně vašemu pohodlí, neužíváme je pro va #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +462,14 @@ msgstr "uložit" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Obnovit základní" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +640,23 @@ msgid "General" msgstr "Obecné" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Vyhledávače" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Zásuvné moduly" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Odpovědi" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -711,88 +707,78 @@ msgstr "Vybrat styl tohoto motivu" msgid "Style" msgstr "Styl" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Zkratka" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Zvolený jazyk" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Čásový interval" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Prům. čas" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Max. čas" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Toto je seznam modulů okamžité odpovědi searxu." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Jméno" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Klíčová slova" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Popis" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Příklady" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Toto je seznam cookies a jejich hodnot které searx ukládá ve vašem počítači." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "S tímto seznamem můžete posoudit průhlednost searxu" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Název cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Hodnota" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/cy/LC_MESSAGES/messages.mo b/searx/translations/cy/LC_MESSAGES/messages.mo index 066d268e039d802aef887834f7d93c916ecf0143..238ecce80611fd670511c917fb91aa8f9beb1c49 100644 GIT binary patch delta 2733 zcmYM$d2Ccw6vy#fsepx2WNU3%UV)aDI(1r%wTMw$2%w=Q1p$NGw0+Y)JM*5jQ)|U! z47dYga)S$TMX&-<f`w=z3buiuk{CA<i5QnC5fg%OP5eW@Ke>rbJD+>*+<VV?=e?Qq z+-)z{Wxt+~yUp<P2!B)gTbZlq|DVmHjk%O?3to&b;w88XN8vu_TR4{ZFlyZi9EYE} z_*>-HoZ)36p2t#SvL=_)N|-3e3T!|f(B)i*V~G1u2{)o@+=LVGNgR)_pw=BgB|75f zKS1p}<@^q35T8Yl{3b8Yn2}6WIcre|)H@q+3h_;-gIbZj<}Mt88TbCZsKU3RI<XB^ z;0{!Q2eBHD;pO-{jwZjEN!dzRh0K{NQ3<YdE=46?fl9Czl^}sCJVX`Ji#n$t)u9cT zkB_)`8x|06N8QprnAOHZ3@*YWScb!>gMUILK94HwFXY#ZAiL%ZQ2Pr}_qqh1#<{3_ zJcK&uB&v|pr~-aQt^a#0{nvs#-c?1Hq8`Fos4KZ1C*xAox;v1)Ch6iHR7dVZ74`rY z<7W5%0G1QKfz9{@s^BuR>w+rB(SO~eE16J5i+Rz3t565tib~vx+7RI!ybrZ*2ddSt zx%hQdX9iJ)zJt1u<EZ_gIKM)jdnU_3tv`pV>=#tx-(8$Tzm(`=RH8AcXJb5aF{T*x za8;o8)w}scsP!vQ1+769bSG+E+Qr#^2CDF3RE1le+ued)r~=+ZC4Sq@523E$V{E~b zSb>#PQ;02iE{9JE@|L-UHfw)?DyZjzS+kyjD%<FM5>?RiNE6Jfs0|0*{JW@!>lo@; zIfXOvPprmb-c%=-qB^h)bzTeVLe`=RN#I0%{<|2cm045=wxC+{3>M)|H~+5lIL>DN zGc3cuP@R}Q=|Z7psPkf|bFM)ZxEPiAE>uS{I6|NQ2N|ekkD?BG3AJ$mxhON}Jce_L zzr+QY%SS_rZa}STMs=(esmZKEmYRo99o~-W<baF!VOA|V#6T^3A64N|7k`X8_%j#( zh<e!0q7wX#YHa~uk1D(fufiFqb626xTZ_6NAJyS?sDkdFqVInOk1@en<_X+~J8?R$ zq%HqFET}78?|ckZz|*LEx)=5Ru^;tJ45Jc#gF5$T)Vdt*r&>P>6&DuKe<hg4geok< zX;_1rZ${ng)wl%jM|J8b>Iy!<%kU&B(RoxSMlz`a^HFgrs#6tMjx{b`lVzX|B-}(2 zRY-)YbUo@yHlbSo6e{rms<j84@1Y7i?%qG);xAo%8nyl`s*}ID`Rqk}U#ju~RH8Ce zE90ob8c+!rqc*NY71rwPM(x{xDsT&G{R_xlG<#8rhfp0jfjZ|4q%$Svdj{*7IE%9| z$v*?y_;`u^a7=^UKeozl$lp*9bp^f`CeprXj2PQh;~MNA<EGo|3Vb_QFvI>@P-z>+ zpPK7uI-_>8ENC#xqISPKk?~EFb~Qy_knz)AGU^T6i9+9YPN>KU?MD-?utO8eN3{6u zcK4)1xhvYDZhK~Og{_>@WA{&KwLcU#=X2c3AnkkIiLk@Bn~Un~=S5fNC0e82jA>1@ zb=f_a4cM;YyT?S`-F}$yl0nM1{}exG2TRt}#$)k1ucm%}&DB-$+IT!~d2_7AzbEJk zqA<3Q0_S_R@tXQryf#)l&#S4MKd;_iJGF35Q#8Cg9eAsTUk>{NZ$VFxQKm%L-j@h6 z*LS27L8`hfN)O&Mb!JXZoqcxN68rG<N_+E+&H0PMKCi8>EijF|*cxw<{oI>9dbuBT z2Z=DW%S-3jmeS>Re`(DAQ#x;O&CJO;v4y><)PH?z>`!<4?cGtzaExgRytd9nnC$KA zZ})t)&@2qn_R#DrM&6Q6CH&A<m0fG&<<+^3QCp|==KMHnMMp%QUc0GcnjNZmz^<<J z?GtlvR1+KflVQ~ECDJ`MUe#o`R@LSAhaH{$skTlN4j)L_j>}Km+haCAne>B{m$}eR ITUdSgU;p27GXMYp literal 12014 zcmds+dypkpUB{0kBw<Mc;UzES>=Jfo$=o|LyF$VwOPHP6Y!>#FnaN8evFCQ*dppy& z`=%drx7h+MC@D}w^bY}{1WgqxT2?B`qfjWsQ~^@F%8H0cfq;~VC>6vAg;nwMJ$-s+ z7B(fp2ai;CK7CG~K9Aq|{eI_ne)qGFJNGvX|NR;Np3c8-JW{2t|330)V=kfiQK(m+ zgO7q=g6G4pdHx5ykn)4@5WJ9r+AYIX_;XO--vcj(@ABmjzzZmU1ilsiHGDigeUULc z;hpel@E$k?KMK{)1D^j0FQxnlI%R0H2WnpX;ZMOU;koc;_&9hAd@Q^js{JdV#(yn* z34FbO|L;)!ocEZf-NlfpnWsX@V-M8(=fP*d1!!Ra&x5b<d<|6pzvlUykgm;L@Ja9< zsD3^KE&K$O-0p|xz;8pfdk|{fPh#?V|8%JN?}ofG`=I7`5Ne$#Ape^+{&Zmhr{P^t z^ZB^vr{E6CpNH!AtDX-)%}a~bxEDb6e=*eePlH<LrBL&{%-7FA$@>bp0S`cp|8~e$ znJ@bH_rsj>15opinKX~4hU)KEpvJiqJ_5c0J{i6V{v>=md=~r&)I7cpnX>s7lzexf zL>YVvyd1s;YCZ3VTJK*%$?ra2|MyUO^kpb{U-X1#9+$%FC{Mu|_)@6;{{X%oz8mt1 zx$cSR1dO2izXNJsZ-83YTYUXJutWJhQ1bW+)cU^(p8_vnaP_|n>iapU@2`Ne&lf_; zWdQlajG@}S3Tl7ufK17}(bwM%wSVt~TJL+{Q{jjF`!B-Xl)nO3;3Ww6#V~@hzxTrv z@Qd)da6g-%{kaWlohj7%Yl!I09Z>WCZK!eYh8p)BQ2X<KsQLaC)c1c2CAWWo`{0EL zVHREu_5B!1pEjVrI}NAcEByOEgxc48pw|CxDEWK<s{fCBej4igFG1<kSE1JNHK_Uh zn=d~IHSReGN#i~W$}TR3+OH==tz$RTcbEJ6MW}gP2en@}Lw&#Q>&H;@I|cRKFZuGX zL(TWiQ1ksg&p-C>-wQRL4@1r46Hw!P+Q0t-)O@}MwLUq^WpF-}oPHLvb>@|xZ-W2y z6UO`rl-~UoPE!5;5mdkL@_ZlEd_U-UA3Q|)^HA;g{B+~j=b+~QDyV(G6RMv#`}*I7 zZ>4-Ul%8CVvy>jka2I?P?83J}?Z>B}<n|eODf~QC|L5684v&FM!8{Ra9{ZvCJpi>o z*FnkgRwy~&244a<AS!0=gL?ljQ18D9wa#-<cJ13GQ171!HGUU93$8%Pw}x8ZFG7v? zYN&o*2etmYpw@K{)co#)7Je2=-VZ{p^D#8izC0eP-^-xd?}O^^Dya6?`tnUs_7!?g z;Ik?JGQ0}D18P2B_wUU!oB2E*N<O=w{K9jg*83u;b=>63KMy765tRHl;5qO#)VzMd zmtO-nDBl6KZ|5Q;&1*kA2VMhn_(CYXd@t1aAA{=u3!eWBweD{~?aQ~J<naWAEk832 z&xJjxeuhx;tziaV4KIh^gqq*%?nZ9&Q2Tcc)H<(&bZu^dxH$7lsD9rFuY+%aGw^;W zf4XxIx(Y9csI2)%$p7ZNsixm9JfHIOp!8+I*RQ}1<y)Zk;a5H12yrRq_o3wQ7x0nr zlThD(2Ff1(6>8p(-rLOMNl@*kq4Z!M)czgx^*2Jz<0Vk~5<%I;?Y{m_sCB;{uE6)e z7sJP*G^n6S;I;6zQ1bp8sQtV6vPN!?gPQL%pyt0HN<PQnd9df--v+fmFZcC#!V4(B z4kA+X7Pt?70M5d1`S;JBZuVh6RDV}ML}0Fl`hEx>4R429|I6SGcn8#YZ-5uVx4}oj zcY6Lg)H*&4FN7cS<-hag&q1~SD%3tb;Ooz2^R&K8pvKt)wLkly<h<m|N1^oR7I-1- z!HeJ+YMw9md@WQzZ-$!h+o0P2DU=?55NaNug<9{Ip~kr%UIf1d_1*axndI|icp5$f zVtVFHQ2o3Q%5FXh%|f^lq`fG#MO2n?Iw;ISl4KLJkQS3Dk8;ZHNvz9w6q$vp%zD{q zoJ3_)7zJhA3zDR^Nfv}QjZT$z91J2m8AhosdU=*4^lZz_u4QGJjcnGpy(-V6v}tG- zHU?eWbiR?rAz#-MIxOs3ZSyFM^Qfn}sfTPFrJbPHi;BW-FugcS3-vdy))Hn>y0RNM z*a+ezSW6;vFv)uB{H-E86-ND_O3J<FU|mLqSq#c(kma>m90n;<9%d8U&+<`WgFLcD zwKj^&D4e!e1$LN6{R6v(WjUUonTgWwBwmllOfKkV`Cvw+nQQBDl$Wgk*3~>ni++^f zdNR)>uH>1^(d|`Kl(&wea+rn1E*6#?*hSkYPlIIF^OGpZQ#;BSHdxE5lK1Wd>p!?^ zCU|~3%YwG2Y!cM8YwOBkL`^!VBzXkVlzodVD_BigCy`diySPvTc5@M_t=lYh?MJ~N zjr(y#i_EeVNdm<P^4^e!^kEjWB+L0b8dqgxPxq^oonZ@J)(#ougKEUaBHAolk0YA~ z8pS<R*X%l~QWZ|;)U}P$L7Zwc>L4{s%?4TaQack<-&VEDqXMmp#~Rrz#f3IG)WaB& z6qYsT_Q**aH$p&)d2Lznu6Vr525HzdU;?>CR_Ndv4SQKy1~E#tYpcbsu35?^sZ;Mf zD$t+897>yE54p)V%k<Ah8Mp>ol~ZdwRYbkLeA2AblO?8Urj0IH=0?Or+qG-=Q183u zP@ZS`&IZinR3K|C%r!B8<CjKyK&`Bn!ulw(=%TFpeH%FO*b+rGhodyggT#~V4C6j3 zD~X`JA$GbEU^4{`kP*7UC-FgZIFoifizR9EZk46)ExP7#9!06SHVVSRR^y%Kh(566 zJUdmJBWXWQF(mH{R7SI$vC@!9=KY|zrM^@#GJaswCw*tdv}M5oI*t96&3=wCPfZ@r zV2+fyqHNtJ@p`1U&X}u0E~GJ?ew-Jj+nTO<QB+T|JS@!7fVwcKn}-p?8#a%VC|Ylx zYSwIyMp17V!8l##EBQQ`ZMWMs$AVLhA3Nr(+#Ew*$FdMH<13HL5{?HO@qm&yt9H-r zBrb>chIrI*a~@{pdW0%Zy$~<9;&k2l13Y24w`)(LDJbZ0m!*}AcND~_#jqO<YP>I- zG+^U~Q8MnD;~8G1DD$AlR^r@R-?-%twmDGOob4L%wn{@jPMLUCM)S59N4>aTOOm~+ zkS}ld$T9=@oJK9|^~*=4zsxAC*xGR(Zv?$s4xNo#*Y{yi2GS&b)RPy&A^7<h430`2 zuSRRAG0x0s_O^0sDJS}Ub7E+VG(h7{q~-*tgI#D&houuo)L)ixOq}J#BxjJO-jB*5 zwa!_Ra)M3lTAoehAxgw%PGApc|4C`IoB$i+4BA!5gc~`XJi}vRG9w)iWrVxK#RRQO ztC3N{i57)j>%Euc&{WzH-X%u6+txV1?%DOgoOCuYZA<)HFpvr)jE2B+i@k;Tx(wmw zZc9$FKlmlgqsw;{4yG_CGad0En_|$YP3t+?>=kv`u6D}VzTX?28+ld@5V{T_v%Jky zpl|XhB`3r(4w--M<ksT8k7L_TjomyM`1Z;vK0S^y{G`-)owFaa_J@t_=cuAI31?d6 zDT_h@X^(bVf8-Y`%5^($pb62cRa#6F6U6DU^L6`0*RJZI^wVJE+$oJaI@>mOEgE9d zI&%Cn@jBb|Ncux?pq?LcAKQ6()pIJh9J#UVwX3TqeUJ37(u$O6oE1f^*k&c@M=Q+< zz0$)A6{dlXZ@*=xdG92$_1GTRJ`h7ki(mtZZ1<zSHO^Yj&6hS$VP9s}{;X~lyKTvA z+)=p_MYup}8?E0AQ>bZTPCs-}Im_)=#F7j*%<{5FfU}Y*1d<|7bT&=$EFJJV%X4nl zD`k+EP8W$$D3ozQG+Nlr$b`x~?$L{)AG1;o21H>BS$H0g8KUr($J#fSwyM~uFo19j z71$C|nl+AV(}Q-cnsF5Mniz-Pa&*)MAvhn^ryEfk>tvc{1vbpmJ*DCw>Fc)d*j}gD z`n2o&+;pyiqEQU1QCZiy9}n}Fk`gYXVRUQdkLb&_Zr(Xh+XR)qZ$3bjxQ!tJ!5RlQ zp)LwTOvV7X1E=>iVumOm$D$&3zdl7!)W^9G4;n`xDQQS;6B^-X=)%NYtKs!`^jFA# z?4jEEr4nzY8;8ChWno1m!)F|ytK2yhkKlg^s%7`?Y{{J~$f=XoDH73_XzIMVUVb}n zqY86_f*5l{j8iW#)1IEsJZ7n2qe^pQlqA}oXs5Yx7!X6W;dGd}D55b9cVsq0UTtpF zv0b{xh-un2)3Fy6g^p;qMr~_ajM>7phh7KmVc5YwI8Jr5nPww;>k23p?gvfpJ}x$H z=gb-nOfMkv2+gKCYV)O{QV%q<-6A|5p=a1NeMN+(am$Gr#v$rQ|8Y_@g;6l}4?3xu z#|>I##`*lh#HCqh6Lc}alghL4JT@bOsh;7SEcoNEdq#?f8p)=ZBdWk56C~1qU5U(g z$HKFGCcafsrGmtmPud$#bgCCM!M$9PDSFO$Oe+-yziq*NU+C7>uFDlP$L7JU%RM&h zDzaY8q}<7Dnm~PP&bor?N`)S~Fj(R<6)V&>VHv$VD2B#$R2Z3Z9LkpcVXM2Ub9e-3 zO>`<FZx7+-8p6@+m%+*7E_++|oUS=NL_xVr2~)-1X?uDUr(CqCY96TMq|eMl)|YXa zL@(Q&t`*}er%oJPIdSyR>Y=?l%5P%{og-oAhUU^dZyV*@u^ef`I>(AZ9Ci*?gQByV z&D%rA7LFW!!NStg@}ZTL9Vbt$b{6x<1?-(AVvKpaZ+7nT&fHvQcFyjbo8Lco+3eix zEDbx$?5u9(TkW1lqt5Je?A-qO=geL<%YQo*YIiW_v>;-^X6*tuIIDOB3%n|z@B;lA zyNYhF9_7{Z`KY<w&f8wSS?H`r!D!xMy2a2=`P=zqGU+;_i~G^3F3F0S040h?SvKP= za;CNHnO;4!cL(th_n^)-y7$l9l=Gfqao}gJ)X~r5fvNPsfw{f*YCCJ^tqS{8m~#cY z^MJj=?%r)vJ<Yjh`*^c|$FU>F4sD5ht~<M9vAK|SR=Ix7TUo^nSJpVa()NY{-nTqZ zmHo~YTkRwv;<C=6w3mhWiFtd)T3qgEZf<B~=U_c=4+d*dV)u2Q%Lv@g3R(tXP}ypt zYkQCqg5LW(m02jGwMm^j>f(HTnh)!V4Mw<2voI;M&S0{Z3<Fw{;nD5vhdQaVJe<^A zXfks+;S8G!a^#dH<aMIBj9J7YYO4G}n;-ch&+HtJCR})Xb($m<r!gnmO{S@f1D!GK zRXUi|X|(2FF7bgv*^sj`fp$<M0bA=t7?G`Fhn3rjQ3AcKQL#xKhWz7j<jl|ex`W3Y z8pBDPpfO0SGDnkm^1Y>Z4y6;@oAi(`fBw77&S4ZU4B4o5TkgFZ1@(Joj<^-JC9Xt+ zoGcVGTHyRhs*H92U#EAD29rFQ)THM2kT(g^q{eJ8B6E0a1`i|CbCU2VCc8ri$7982 z$bY<9#{d}Y_EEl<Mx<Dj6y4c?o|z9hNpdz$-;d!(IEwmFoP1~gXNh}KK+1*So<JJG zPjWOWX6Iv$&3GJVq~7{{g3CBHt#5hAY|x@6&mAd@l1UVXE+=%XCMb;0k`!|L{yk=e zP?EJQ445KGA*T|YsGDlP-LoOtIH`-XRCVn_7zRaPLpMWA#BHN8GtnNx(h+adK}Pr+ zV;2l(>r_{{6w|;K-06Tzlo{oiMoliT-&IOnOLZGqnVS*KBv1JkN}zqJMi}E(F}KpC zlySD|Y##*+Lyfmtxv6$?%u58JEX*v`#h|jINqt5}X$doT`J}~qL=1?pLjfi~D)}TS z8!A{K0Ypz~iFEDg2a;1FBp^d#uaTkXoH*_)u#iooKY|@ia9CTprJF}dKzj3G=a&{Z zg1Az+joohX1fUc0Wx*O#P`(MpkS5|KGLj4=oEXeymwpV=O#~i;EK$gDk_(<R09lj6 zZ;eyQr??-KdKLbUvQCQ`5zh}k?X(c{TM6zV9|pJ@ACAcbouL7J+^9SAwDImlh$^mu zQW$AMZixeM=ln2I=3OiQ#qSkPl)N6IJpj!iYQRTY^(J@L>KavN_PI^rX4-CJuX-dH z7r0=jb}QYySCM0D5NFX=#Qg9RREozix&Ors)uIbtNN$hhESpoK323r53w4(K)b^#d zt*>>*y$?lnx}lyZBw|p^gk^4Rr6eB*lXRy!ic4S1?LmdroCG?qCTn`g_QWK*U6v}| ziLUpCIfmYjb=Eu;=PExqEHnWf0r?=WM@<Z}$oZ5FNVuRBaT6<To8T((-o1BK93PR6 zn~~2?5fJL2CiIhf@Y8EvlMtZswv^M4L#k@2CfeoVUAh=ovFNl7_EdI&uOXb{*q-L+ zk>+=ao3wLSS&u!HWLyvs*8Lz>vg!NJQ4u{U9B8gmXUkG85BV{s=5QZqSg!`OpEt{! z0nTO^g8x74CNCsXy?(z=3FuR9$KRd2x<<(>;^V;U<jo^H8mgdc17Qe1ND=w;`$0e7 zjP|qtpUf3kmSLUXlhb?Oo|uQ7ylRi=UK^Ye^YkhgsEvZOc1Ox)dECCDb<V)}8UL>D z5?Vf7rFs=>Op)2ZrM8^IL_?I|a=EQugbB(~$sC)bS!Y*Sg`_0pati{!Q~`}QOVg{v zPKXBLum=;)GR-hC&Vw`t+<v<i_&s#WOS)-v;~^2*%weFgzg3#ed9=R7$FrLP*({HZ zf7}v?uV@6aSxuNbBDN)vC0}j0R0m<?#MiE`O^dn91-WIH9Q*FPnCrICg@+&;;f>`t zGu)4^233=7*cN5+<Cl-Sbw%X|g3(k^?QPeIBm*MGEJ5Iv<u?{`Kf0QEe;<<))=7z3 hHTQg7D7O-5+~&?mo>gh(;w!1)w%pkn)en(6`!8GWnN0uy diff --git a/searx/translations/cy/LC_MESSAGES/messages.po b/searx/translations/cy/LC_MESSAGES/messages.po index 3344c6d1..04d8a21d 100644 --- a/searx/translations/cy/LC_MESSAGES/messages.po +++ b/searx/translations/cy/LC_MESSAGES/messages.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PROJECT project. # # Translators: -# Aled Powell <aled@aledpowell.cymru>, 2019 +# Cymrodor <aled@aledpowell.cymru>, 2019 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2019-01-05 13:50+0000\n" -"Last-Translator: Aled Powell <aled@aledpowell.cymru>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Welsh (http://www.transifex.com/asciimoo/searx/language/cy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,63 +31,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "ffeiliau" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "cyffredinol" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "cerddoriaeth" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "cyfryngau cymdeithasol" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "delweddau" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "fideos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "Technoleg" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "newyddion" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "map" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "gwyddoniaeth" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Gosodiadau annilys. Addasa dy ddewisiadau." -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Gosodiadau annilys" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "gwall chwilio" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} munud yn ôl" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} awr, {minutes} munud yn ôl" @@ -107,29 +107,28 @@ msgstr "" msgid "Compute {functions} of the arguments" msgstr "" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Nifer o ganlyniadau" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Sgoriau" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Gwallau" @@ -141,8 +140,14 @@ msgstr "" msgid "This entry has been superseded by" msgstr "" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" msgstr "" #: searx/plugins/https_rewrite.py:32 @@ -157,16 +162,6 @@ msgstr "" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Dull" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Categori" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Rhwystro" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "cadw" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Ailosod rhagosodiadau" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Cyffredin" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Peiriannau" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Ategolion" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Atebwyr" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cwcis" @@ -710,88 +705,78 @@ msgstr "Dewis arddull ar gyfer y thema hon" msgid "Style" msgstr "Arddull" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Llwybr Byr" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Iaith a ddewiswyd" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Cyfnod amser" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Enw" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Allweddeiriau" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Disgrifiad" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Enghreifftiau" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Dyma restr y cwcis, a'u gwerthoedd, mae searX yn eu cadw ar eich dyfais." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Enw cwci" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Gwerth" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/da/LC_MESSAGES/messages.mo b/searx/translations/da/LC_MESSAGES/messages.mo index 8813c0779acefe7975c2906ec4593ac820f705b9..a3cfb17da1fe21090189a7061b96bee9639e71de 100644 GIT binary patch delta 3170 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 MV`)gBd`L&+e;$@eCjbBd delta 3537 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 diff --git a/searx/translations/da/LC_MESSAGES/messages.po b/searx/translations/da/LC_MESSAGES/messages.po index f235ccdf..848b986f 100644 --- a/searx/translations/da/LC_MESSAGES/messages.po +++ b/searx/translations/da/LC_MESSAGES/messages.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-02-22 01:48+0000\n" -"Last-Translator: Mikkel Kirkgaard Nielsen <memb_transifex@mikini.dk>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Morten Krogh Andersen <spam1@krogh.net>\n" "Language-Team: Danish (http://www.transifex.com/asciimoo/searx/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +32,63 @@ msgstr "forespørgsels-undtagelse" msgid "unexpected crash" msgstr "uventet nedlukning" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "filer" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "generelt" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musik" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociale medier" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "billeder" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videoer" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "nyheder" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "kort" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "videnskab" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Ugyldige indstillinger, redigér venligst dine valg" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ugyldig indstilling" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "søgefejl" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "for {minutes} minut(ter) siden" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "for {hours} time(r) og {minutes} minut(ter) siden" @@ -108,29 +108,28 @@ msgstr "Statistiske funktioner" msgid "Compute {functions} of the arguments" msgstr "Beregn {functions} af parametrene" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Søgemaskine-tid (sek)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Sideindlæsninger (sek)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Antal resultater" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Vægtninger" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Vægtninger pr. resultat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Fejl" @@ -142,9 +141,15 @@ msgstr "{title}&nbsp;(OVERFLØDIG)" msgid "This entry has been superseded by" msgstr "Denne værdi er blevet overskrevet af" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Intet sammendrag er tilgængelig for denne publikation." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Omskriv DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Undgå betalingsmure ved at viderestille til en åbent tilgængelig version, hvis en sådan findes" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -158,16 +163,6 @@ msgstr "Uendelig scrolling" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Indlæs automatisk næste side, når der scrolles til bunden af den nuværende side" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open Access DOI-omskrivning" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Undgå betalingsmure ved at viderestille til en åbent tilgængelig version, hvis en sådan findes" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +325,8 @@ msgstr "Metode" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +398,8 @@ msgstr "Pt. anvendte søgemaskiner" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +414,8 @@ msgstr "Kategori" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +433,7 @@ msgstr "Blokér" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +443,7 @@ msgstr "Disse indstillnger gemmes cookies på din enhed. Dette gør, at vi ikke #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +453,7 @@ msgstr "Disse cookies er kun til dine data. Vi benytter ikke disse til at spore #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +461,14 @@ msgstr "gem" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Nustil til standard" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +639,23 @@ msgid "General" msgstr "Generelt" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Søgemaskiner" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plugins" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Svarere" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -711,88 +706,78 @@ msgstr "Vælg stil for dette tema" msgid "Style" msgstr "Stil" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI-forløser" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Omdiriger til open-access-udgaver af publikationer hvis tilgængelig (plugin påkrævet)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Genvej" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Valgt sprog" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Tidsinterval" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Gns. tid" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Maks-tid" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Dette er listen over searx's installationens svar-moduler" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Navn" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Nøgleord" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Beskrivelse" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Eksempler" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Dette er listen over de cookies og værdier searx gemmer på din computer" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Med denne liste, kan du bekræfte gennemsigtigheden af searx" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookie-navn" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Værdi" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Søge-URL for den nuværende gemte indstilling" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/de/LC_MESSAGES/messages.mo b/searx/translations/de/LC_MESSAGES/messages.mo index a525fbf1e898bfd856f3335de39fc939e44ae557..79ad35beb670d4d9ec5e53451b95351a5c5c96ee 100644 GIT binary patch delta 3279 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 Ip`MQa0huFpE&u=k delta 3640 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 diff --git a/searx/translations/de/LC_MESSAGES/messages.po b/searx/translations/de/LC_MESSAGES/messages.po index 64f253eb..6aa03b18 100644 --- a/searx/translations/de/LC_MESSAGES/messages.po +++ b/searx/translations/de/LC_MESSAGES/messages.po @@ -8,7 +8,9 @@ # Thomas Pointhuber, 2014-2015 # Ettore Atalan <atalanttore@googlemail.com>, 2016 # Jona Abdinghoff <jona.abdinghoff@gmail.com>, 2016 +# Marc Abonce Seguin, 2019 # Mario Siegmann <mario_siegmann@web.de>, 2017 +# Bamstam, 2019 # Max <theshirinzu@gmail.com>, 2015 # pointhi, 2014 # rike, 2014 @@ -21,9 +23,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-12-28 11:02+0000\n" -"Last-Translator: S R <acc-transifex@rie.hm>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-12-11 07:07+0000\n" +"Last-Translator: Marc Abonce Seguin\n" "Language-Team: German (http://www.transifex.com/asciimoo/searx/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -44,69 +46,69 @@ msgstr "Abbruch der Anfrage" msgid "unexpected crash" msgstr "Unerwarteter Absturz" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "Dateien" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "Allgemein" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "Musik" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "Soziale Medien" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "Bilder" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "Videos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "Neuigkeiten" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "Karte" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "Wissenschaft" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Ungültige Einstellungen. Bitte diese überprüfen" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ungültige Einstellungen" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "Suchfehler" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "vor {minutes} Minute(n)" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "vor {hours} Stunde(n), {minutes} Minute(n)" #: searx/answerers/random/answerer.py:53 msgid "Random value generator" -msgstr "Zufallszahlengenerator" +msgstr "Zufallswertgenerator" #: searx/answerers/random/answerer.py:54 msgid "Generate different random values" @@ -120,29 +122,28 @@ msgstr "Statistikfuntionen" msgid "Compute {functions} of the arguments" msgstr "{functions} der Argumente berechnen" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Suchmaschinen Zeit (sek)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Ladezeit (sek)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Trefferanzahl" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Punkte" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Punkte pro Treffer" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Fehler" @@ -154,9 +155,15 @@ msgstr "{title}&nbsp;(OBSOLET)" msgid "This entry has been superseded by" msgstr "Dieser Eintrag wurde überschrieben von" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Keine Zusammenfassung für die Veröffentlichung verfügbar." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI umschreiben" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Bezahlbeschränkungen durch die Weiterleitung zu der verfügbaren Open-Access-Version vermeiden" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -170,16 +177,6 @@ msgstr "Unendliches Scrollen" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Lädt automatisch die nächste Seite, wenn das Ende der aktuellen Seite erreicht wurde" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open-Access-DOI umschreiben" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Bezahlbeschränkungen durch die Weiterleitung zu der verfügbaren Open-Access-Version vermeiden" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -224,7 +221,7 @@ msgstr "An Vim angelehnte Tastenkombinationen" msgid "" "Navigate search results with Vim-like hotkeys (JavaScript required). Press " "\"h\" key on main or result page to get help." -msgstr "Navigiere in der Ergebnisseite mit Vim ähnlichen Tastaturkombinationen (es wird JavaScript benötigt).\nDrücke \"h\" auf der Start- bzw. Ergebnisseite, um ein Hifefenster anzuzeigen" +msgstr "In der Ergebnisseite mit Vim-ähnlichen Tastaturkombinationen navigieren (es wird JavaScript benötigt).\nAuf der Start- bzw. Ergebnisseite \"h\" drücken, um ein Hilfe-Fenster anzuzeigen." #: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4 #: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4 @@ -342,8 +339,8 @@ msgstr "Methode" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -415,8 +412,8 @@ msgstr "Aktuell benutzte Suchmaschinen" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -431,8 +428,8 @@ msgstr "Kategorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -450,7 +447,7 @@ msgstr "Blockieren" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -460,7 +457,7 @@ msgstr "Diese Informationen werden in Cookies auf Ihrem Rechner gespeichert, dam #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -470,7 +467,7 @@ msgstr "Diese Cookies dienen einzig Ihrem Komfort. Wir verwenden sie nicht, um S #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -478,14 +475,14 @@ msgstr "Speichern" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Zurücksetzen" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -656,23 +653,23 @@ msgid "General" msgstr "Allgemein" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Suchmaschinen" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Erweiterungen" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Antworten" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -723,88 +720,78 @@ msgstr "Stil für dieses Thema auswählen" msgid "Style" msgstr "Aussehen" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI resolver" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Weiterleitung zu frei zugänglichen Versionen von Veröffentlichungen, wenn verfügbar (Plugin benötigt)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Abkürzung" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Ausgewählte Sprache" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Zeitbereich" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "mittlere Zeit" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "max. Zeit" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Dies ist die Liste der in searx verfügbaren Module für Sofortantworten " -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Name" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Schlüsselwörter" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Beschreibung" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Beispiele" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Die nachfolgende Liste zeigt alle Cookies, die searx auf deinem Computer speichert." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Mit dieser Liste können Sie die Transparenz von searx einschätzen" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookie-Name" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Wert" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Such-URL für die aktuell gespeicherten Einstellungen" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." @@ -856,7 +843,7 @@ msgstr "Letzte Woche" #: searx/templates/oscar/time-range.html:12 #: searx/templates/simple/time-range.html:12 msgid "Last month" -msgstr "Letzten Monat" +msgstr "Letzter Monat" #: searx/templates/oscar/time-range.html:15 #: searx/templates/simple/time-range.html:15 diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.mo b/searx/translations/el_GR/LC_MESSAGES/messages.mo index 2bc6a57a37efa41224006dcfd72f1bb1cb3f9d53..62d32b580a380b81f4f555a681ea1e165d41b7e1 100644 GIT binary patch delta 2561 zcmYk+32anF7{KvqX*t?b4tr2&%WErFVcXpnEiE7wkc695sFH}VZ6EDIcOUElRKx;B z&;&U$5|JYo2^s{7r6ABk8U<p2@D@xoF(3&TqL|<jFu`EN|JS}mH@o|rZ{Ex|Gv9l= zm;6V|8*dMc+ogDg_+;`q*+ZiLUbA{BHGpt7#^Yk-txQKhCJ{$au5ZL-d<T2u2Tp%8 zW)Xjaad;62D%Gei)96pfElk7*C=>s}MHov!Q!PQcUWc+^7-eG{oa-8g67NL=JFq9- za{Li_t6v-+VlwNiziFg#A+b;QLb)g>$wyhpjbm^kN`hsMAxt2C6M3sGjyqB2??st^ z0A(XBC?`MV*pB^JUv<)ulSEOfe+Oludl-wq;xPOJB~d!7O2x8KN?nK+zJOAx7L-bT z;ly8|9PkQu<wu!!4;!DM@rcF<?9D8i%I!EF`w~yXemEa9um&Z;TPPcU59QhU2xa5v zFcmMMZ1^ThCGH|`^&4M<@kt`}mjP*99gbPZL!qXkl<*al35!t1`A{~v0%gN%QN|ra zDeYk=Zb7NUN#w20@g*C(j57Zl#~+fYza;*dj;@`dl;{ac;-@Hy<0%8xR|zN;N#RSz z=Q?o#%D4$A3%`g=Rnt+%RXTAM%0?`djjU;O8coiCZ72)xMOpBG(|-gjh|gd;CQ|?F zF-qm(SmH<AA9*H5@s)yQn1^$57=}=ufe)SdbCgOqen&%gavx{nBPTBB#(IcnqLg|a z%7jB`;2AuO-=p07CN9de(TuWiJIXD+jq<F-^Pp8=3cifBNM#yT2MsC7*Ek5Tqx@0a z$3pDIamuj-rKD?6626U6iT6?dCywF}OyJ2Ahok%-OvW6na{4zRds5AqFTejb8j|of zN+lkkEc6&<Bk|O26y_ntQL|BQ&Fd)R>hKMWpd|hsM`90lC#4^QH?aa`egUUsh?<0h z<o91mV+>j-8`+1l;1MjrZ?O{lQeQbq4azOqj8gg*r~fKWBYuD`9LsO4>*P3<coR}2 zbs42Hx3N)v*Z<IvfyvZOPT<B#I0fZ|O*jE}pd`MAa?73|YpFPPAsf#|neRfGU+(m; zM;X5zCEsqxLz&cHPI`h4a;aM=56@$i(r5A|iOWzHnvRm7+UZ|`^7Cy(nZFt3ARnWY z_##Tan<yuLigF85vb!rVEc?~&2`|whC9OqSXgf-x!zhWbqLl0>ltjG<D4NPdiA(TH zoQ15Rk_~+&F-QNIn66usQj@26!)C1&Y*16IdMl{Qk~?(Iepd$sO*5dT2bNkvzc=i& z0y+9X|0TJ;!19oqWqE51zZEnK3JTP0GhAoYs5xH0speP#Q`Zd~r*8~w&xq9e0wFao zXf8E_W}w=Xwr`cUx<MzUWG98puu)?!^+xK$Aw4g3dLPpptgbT_RLs)%Q)lS1G_O9N zwjeLqV1&A^_yV;Cdnr?u-uj5CDt+c^BV<K_)uz5NXncaV%8G<lmA87i{w!m%ewb05 zvEqL#(_ZDXA|Ydix7O6l2Cq!Cf@~^mEcMl!y62DuX?|ZI5;jBYjPAzB&?v)OYv~h1 z78bc(?h?aOTILxy+Fj&!C(N7csvup6qPV6~yfUN6?J0G+i(Ey;hNq;gxKvNfOdm1F zx^UR<Gb%3}2sHSN2_autw&xAhtoHiC<+XmVufCw#^0$RE<6>e;bVJq*eJyLTzL7mK z%id$RMmO1~?KZnJy1_nfw<`P7=!WPv`<&g{w$s=V(^ixl8=Gu5bM<Jn$v$hJw>x#q zvl)8uutz#=_zT1BefBZ?jNNIUB*jK$Z<P@;T}g6+V|-fm=@Bd27LGg{(_d0Wx033N zeTt=9wVChH9r+V<!{~f{$CaVykJ+u`T_g1#SBkb=&9U|_U0Rr<OAC(Zo`w7MP)~t= z&6B5hc&gH)P0=k~S<c$+_E8mGZy%@YUA@2Pgsv=JtM3+%Zz~x)E+&OjZjhmzu+s>4 P-x7WBxr=(o^I87_nKQ-I literal 14021 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 diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.po b/searx/translations/el_GR/LC_MESSAGES/messages.po index 073f2f61..c93f81ae 100644 --- a/searx/translations/el_GR/LC_MESSAGES/messages.po +++ b/searx/translations/el_GR/LC_MESSAGES/messages.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-01-17 10:03+0000\n" -"Last-Translator: xinomilo <dimitris@stinpriza.org>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Greek (Greece) (http://www.transifex.com/asciimoo/searx/language/el_GR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +32,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "αρχεία" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "γενικά" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "μουσική" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "κοινωνικά δίκτυα" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "εικόνες" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "νέα" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "χάρτης" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "επιστήμη" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "λάθος αναζήτησης" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} λεπτά πριν" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "" @@ -108,29 +108,28 @@ msgstr "" msgid "Compute {functions} of the arguments" msgstr "" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Χρόνος μηχανής (δευτ)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Φόρτωση σελίδας (δευτ)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Αριθμός αποτελεσμάτων" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Λάθη" @@ -142,8 +141,14 @@ msgstr "" msgid "This entry has been superseded by" msgstr "" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" msgstr "" #: searx/plugins/https_rewrite.py:32 @@ -158,16 +163,6 @@ msgstr "" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +325,8 @@ msgstr "Μέθοδος" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +398,8 @@ msgstr "Μηχανές αναζήτησης που χρησιμοποιούντ #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +414,8 @@ msgstr "Κατηγορία" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +433,7 @@ msgstr "Αποκλεισμός" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +443,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +453,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +461,14 @@ msgstr "αποθήκευση" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Επαναφορά προεπιλογών" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +639,23 @@ msgid "General" msgstr "Γενικά" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Μηχανές" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Πρόσθετα" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "" @@ -711,88 +706,78 @@ msgstr "" msgid "Style" msgstr "" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Συντόμευση" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Επιλεγμένη γλώσσα" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Όνομα" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Λέξεις κλειδιά" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Περιγραφή" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Παραδείγματα" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Τιμή" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/en/LC_MESSAGES/messages.mo b/searx/translations/en/LC_MESSAGES/messages.mo index 0c270c06dd37bd020aada67c0e67abcc16b8eb94..cff5556948a1c4671d6c68c1d5dda17bb595fd29 100644 GIT binary patch delta 60 vcmeCR-p#CYPl#nI0}wC*u?!HafH+7%2gvRPO6mgX&89+KjI8E*23!mP;^+pA literal 7565 zcmeH}?QbPj9mkJ6mLjY2;PRw7Ed;vKd;1`)(0y>*ZI>;!Y-ziT2xOhkJ@?+Bb7!tI zbKAYF#zaGa5FR4<!T`n)(HLI{LgWn?6b%8137{_wx)=g4gy;*v7>GeX-<i3)@WMa9 zq|NPo=A1d_{2tHmoFk{7@Lj{-E&QL)|MUrJ9s3LWj5(2J3!V&9_;Gj`o&s+x`5mZn z55P_Ep|brb<Y%7X@i2TEo&oDj9)LH)A@~5){NI-R9Xyrxi%@d^0zU)afKu`Jeq&CD zeNgM42XBNI!cW3)LCw1tYMuL`^!{<#|2RB}_LETapMlc*1^8+B3e^0!AtKHD@OXFv zi%HKusQyh*_M8p*nPDE1b2*fLGjJGw8EU;-pyuBRHSS(0`9FZt=O<8d9x3}DhqCu6 z_zC!H_$l~O`TcdMd4Gqp`&}5r6Ipy0>_Ex=1;hmNOUMxO9J~<z5lY_sa0Gq;<%jBN z##{_{K+SVda@tVx*USFfAwP2;59#+1JO}<9=Kh45_X<>gy#{6Pf1v!<$Dp&|`B3A= zAu5<F%Jv>8edo*eb?_qEUxiEXR(L&p1@41iKndA%E0mshK*@O!%I}Xtt@i|!yl0^F zc^=Bnm!a%F0>|M=ICT_W0X6?7sCcxY=6B!_{CfHQVJLt96v~drpw@pHYW?R*{sC&8 zSE1H<9UceYg3|vVP<p;ywm*Q9e;h_>ULREcod)@2Hbadcg1FXP3N>yDN}nsC^w|fc z&kZn-Ysq%`{V<fA+sgJ`Q2N~u7vV!t_Wl!YhMy(L@BElCTcPIt24_p&^HB0$g3|NV zl7E95_YNdv=Do7rcV?m2CipP@n<1afQ&4r{MJT!NK+Qj&q!9;UZa0+NOQGt-b}0M5 z0#VHzgt9w<suPEy{PriPd2hnp-%xsgQ1+inF_8UdK+QiFO79CGKQqol^Jk&#yap<M z*F))du<UnG_QX(fz6~YkZYcd8fWz=-Q0x5}YX0j`<KBdl|1T(g<b26F8LIzOD0|O@ zq^>y!5+bvu{Jsrp-ZYfmUxG2b0q%k?K*>Gr>>@ADg3{B%3*j)7yldbH+z;i4Tj0g; zKB#<p5=zdqQ1X9Y_Wu<sFW-XF?>(qGaSD&zpHTD0q3XmHP<9=F^4md3NK6Vf?sh1@ z+*7t6gwpqiW&06$5$z}75<CJ`C&te$>cm}8_8fuI^ED_r??U;#@4RBYO;GaAh0<pL z%FfS0*?k!thd07ecn{S4UqQv=S*ZChz#;f@`TgHe{yq+4Wk)~M`kSHFw<RxuT4yWN zI@_S?#1xeNGf;NVmhJse@~?xMcMvKsYfy2IpvHd_Djs)0jr$&yKHrDZ=SNWbJO=Z) zmVCDS{t}d&SIhPrQ2M<M7vXzQ_Rg^xNiEaSrko7Jc->4!>AFi&Gug>vKW?={m$|&r z^0L4;lWUEt&4QLQQ(^3{^6WS}RC9H&6J}e?R5x>}+3jVn5hq=<yXi#@XPfc5t;b0# zwO-<E+F5A@nX3)k?VfEWuD)ZinPu&Xkr5YF*Mrrd?P`Hnjg!WRS|fYAZI@*3P<C)R z@uIZul7kCLEbYPz7Two6F3k?MT-J<h>7Y$qxMPs9E{VKwaA)YeB(kj-vEEAD$@rd6 zu;qm9Bi_!QmMLQo+0g4UuGg0}9X(N_<6%Zzw?(@c5eELMjibD;<u#(99=OD2u|-{3 zYqg-?G`qt%b!K-Q#tF}OHE=faaA5I{w>nAUqAcv%PU>pqEbF315XqNaFEZ1Gf306Q zHlTkxNWGQN)%4Ov>C~cCVrLg@P^gKWN!JFc9Squo){APz0AwT<YohF<1N}J4ydYxu zu@Qq+Gaau-VeHj#TuOvfGZPhJXL9`tOUm~&^YQ_O;xkDSlSg}k(51o6PA^2oN)Ezl zqEVW4>UHboy4#F6n=4)95-)`4hgazdrp%RzbCKEWyjp5I?E$klsF6pxdu=^mH#M^w zZQDtFsB2~;1%QN&qX8Pot$Y5lNSfKqhD5@K!K#y6^1SS%LDa}sJ;b6(n&o+3HFM7S zO_!LtAX-h$oSdPAs#dFJ-aAxmhWR}I%sjfz$2BZq(_9@#JUXovtR{7GM|`N=bLhUN zO(PGZ_L1G#yC5^<^3)Ec&fj7dK9Wv&rKSCmITD6Yd%dLSqI&3jHdfV^$)RK{I&F*K z1#ITtXi}(ZhpzJ0yd^&g+Qr5Q5?4bWn<jN6paN|_G=$a24O{PoA&<zHd%ZBoy2Z{Q z)l&9#l?6JaKx!6ZDhV0A(lrZgbKWDL%w_W)>dMu5e0zz-HcH}717~O(nnf~u(Y4|= zXS2lfS1CyZsnKbXJE^TFaVy_<iOV`kgpB=*bBs^Pnz9z9G}jaKv3r-77l<^$lRwm2 zlH=NOng&>Cmb|)KDz@s9PheA1K>N7V&J^EsDdj5(rVJ=sy&BPLQx?j-+6znXOE2t8 z&XFhdW*NS~b>5mbf5*o~sa)J;@n)Q4KGleq_1rOj^Ju;=#j0WQ<GMEUdJ;zsro>6o z9WYComt^G(8cE=@NT<=DRuZ(-EH_;XLjjeM!1+gOP!!vmmwA@V2ts8*)oK`V_w(9? zrY<2Wd9_JnWmFukxhPO@htb8>;^^Wm&lIZVhvwn@Jd~PRE!QMqh54Qih79l5Y!DTT zm-2=QG#Yw3o!I@Ujbe5tiLKGaw?g5(zL#q=fgkb-JR6zq*VA5wkp3XCYaVBp%u(5A zv=)>*iCu1-PQMPN16|qH%W<QDv5~hHH1fh?IE|E-N($0MshXGrTGJc|9O0rI`+CPm znYos8h{XrYwT|6`iyW^_k2=&lU23t!QoyuRbX=C<`=Yrv$eQS^!5A}~5A(f<x|xzI zr2)7$O53<G^2r>Jb%Hg|?^ejSHdO)H!?uaS`KBgwJlRb;73Yk}Pe-%D0ONa<yP7$g z5(<FQL?I$OdX8kDaX{6oh5}3~aiZjfyQ$J#WBnjZP2OmE?eax+t9V^wRBW20u*s`H zYJ$wH;$|JBY+`L!-rJ@{RrXEf)>9sbGTYXXK%6KrUZ~X5#lRF!E6NM+Ye7t&<U_Ts zOzP*^X;N*Yo^E+VB8rz>xBRuxEsgyE33;tG#mPo~=%CgPbS58_8s&RXQ^Mno8pmw6 zSJ0}qETpQL9!ZN6ZE+|cjjeJ$znmO9*sJDnlgvrK!L6y245eF!?cr7sk%)8^FLZK( z$L4?aQ($i*<dxZ4<p6b)4L@NQ7WZ8>vwPVdm|0w!-FJ2WqH9xID)VV0s8yyqjkK~H zPuQ9H$=SJGlhf0SGfPYT3;UKUyAzjZdu5svXTpw;j%}@sj#b9T?AX?c(aSCw9UC2G zU}X`fOVY7%mulSSNA1{U6XWB>xH&J)Dr}o54LzJWVfXBxo3mF>&d=EG9}&H?f3DmX z6C~)-MrGM~E%n&#b91}GKzGEQ{Tw&k7%F>o!JM#BJ8z~t#<$txb;nR-2X@%8E&cPe z^E1a>GFBb!-(B2BD$CqGCaiL4gv(SAZL@yUOQ=peI$6DP`LS{34YV>7`EiX+HDNDb z39|m;+QQjend(m1DR0GvcD%Y32^-hyyuNN+t2eII8`o-1f{knS#<hCmTD@_t?rvPG J|Ie<~{{_zOB+dW; diff --git a/searx/translations/eo/LC_MESSAGES/messages.mo b/searx/translations/eo/LC_MESSAGES/messages.mo index cfad4d49edc896a44b3b1a1826a4e7de691f9285..c693ac69f0aace36afc68f015b5f5e886582069a 100644 GIT binary patch delta 3141 zcmYM#e@vBC9LMp4{J6+f5Cl<FyrRg@tM^`92#WSYT`moOmD405cbiCX9U4x?x^u>~ zrbRJyPMtc%w$jqwX^hPNuymSbT3T~Rx>PcmTe%X;R__nb*<u%7=bYzx&i8x1=RB8t z72hulcc;X(8GbtW9mQ`~ta|_d>~b5EOm{cx(#JRukD&`cx1Pa4^e^Bn>_Xj_#o%Hr zL_NO&6LFK%51VZ?;u+Y5?bwb(@tMKKjKxYEi5oB%ccUgcZ9R|U>0d%(ng^)FqKPsZ z-57&;$kb*crr=Z@V#3BeOG6J<q7tdW3S8TN0~4br{26uMUDQMmP?d>Ea;^`<G4wOh zgVQk%E3L1f=C8FjU?TBNn8q-C8x^P>J$M*Z!f!Ade?;Bag{r`Pd;K9QvFIVj&@@S? z1jnFOT8Mni4E{{S`B;cy3@f8UG~_W%z>}!JXRY6%61#>9d<zxeF6y~H)Jmf$hZ2oP zjSoVVJ`Ec%1KAz(t{vZ#O#SN_IKY51PbXcPCI>Z932LG;9DuVi8|R<`hLG5%0oe_+ z2}8IIi!qLaq{OGA7B(AIsReetVkq_3;R!OJ(!PZXybmW~J8I&~xE*gIAJdddlGuWp zxC52YDbxba+3_y)((gg7JT1*x=r|lfzbH&Y0p_75SdN-t1?qKt4OM~nkdN8PAKiBp zwFMo>+~!L=eigMvH&83>!3?}_uP3s~3G~x&5r(JHc!5R>>UHbIa!gD&<}rK`RgpH- zN_U_tZ~&>Y=|C;uD^%dCsKD1zThoh5_#f2sF~gn8C1HU0rkIA03#(8Q>_i=!eW(Wy zVlE!G*RP=Vv<p>%o2Ux?h6?bPHJ1A7`5~yYla5+Q1}eeK{yzJkPeXwxq5@Awo&FNk zo;`(H$pX}aFWd1tR3c5NEqep?{5Ctj6P4h8)N@B{{{$-GvzVaw|B@Pb&ED_}Dxp76 ziTsTU6w5|x!ojG7GEgflz=aq<RjL`Ow)x0<8V^Pp(~U~BnS-VIwqsbC?V+JSAKDAY zP>1R>oQ0QAujg>SPv>DSD!~R+B2B0Xx1#20!vnYn*$p!@(>cr)$j3C={*FxcUlSc? zKr1<c*?0<dsP3R9?n8>u|NW}cWsGquF%CJ{#)nE|HY$N7sD)MGdaOmQya)CCLsTUP zc*4%aNgii{JXF9^<YS)XkKT$Es05p>TTp>oQHk!h9zrGhDeC%V)Rz2&3K-91I)rJc zEgBJ~p$hm>fs2u9n;EDTEk{jMi#m+!uzwHHPk%d3!?X5!T$U3k6_wan)Ykdz_~WSg z=Aq(+m(b9Sm8cu*P%C{Mm1(o>zll2CEw~ZePzj9~=PV!xx6t>Zz85;JU!%6-I%?it z)E3;wBEA2QXeblkc;_p43Tox$Sc5NNDV|5YB`yw#5=}upmxWqUKC-Q5GU`k$##mg1 zlW?^i--}1-AIA*ho0SusJ=%y`(IM1?ov6M10u{I$^YM<oo|@y7Iuo^J1*qqr##nqF zRoUhCdJSrx&8YiYF`oEl9}TVO1JrBRi7vc=n&<~q$*v)<u(@r=qc~Y?yK&(x%)@mU zLUJ@cxD*rfoC>bQX!`q6@!rR<-p@~HD5GyN4!f<lP<z*lx~~tFP%>rEO43n*vT!QS z!O7T+3e<`5coJ2KGnkE6?D(U6>OYWy*aGK<Bvimm)IXVgRASRniOogbzX%ne0`*!| zVGP!x?puQj+-R?FL^u5w)V#aUg+~ggzcTA!Kog%qmF6O9f*bb6Ur~X6M>qb9y3bwc zjE_WZT`p?AGCMvOb^lV-{6T97b>DhF4W0JQsLXfZbGR3YVg5wzd6w6CJIcI~bMCeQ z?(!$*c<O`e>Z{iVBNd6uqFZk#cSbIzERBjZrM}||_`JSikH4hUKc&DI@c9zvmwOim z8>-h-hw8jDtJVffJprG;#On)q14SNxacNOWYuTvufvc+<8>^~AuZCJTjOvRjjx>(m i-yh0bA8ZKL*MuS?J@=wpr;NWHnV(%76-mgs>G}_p!aUgk delta 3462 zcmY+_d2Ccw6vy$~meRdi3MkUrCrc@mDKo7BET96#fJ!P@iN!6i<ynUgGwm#8Q%68Z zh#*L#R&hfys6<H}iV$lIf<^@baf!<xE+EDj6mdaKP4N56+{8$rpZD&4@7#0Fy{~+- z_~$#4Ukw@bsNv6>{43+%@7cQh@6XW!V@kL^hMM{s^YAq0;92XRSjhbaoP&kj=(&a1 zgtw#K@5N$#BYmGV?{SgKz)^e=KgCj9U1ZD^xCKXIFIM3(RG{<Le{c-<nM7r6GY*wl z9hT!X9E8m{1n<O)u@ehS(wMbeD1nFZ4t(4`@CPc;;EU3Mi;>*SWvGsfL(N}>6*v<e zba61QwQfYk-)emV32mOo;jC|Zxlo|@(ZLg_)}6yF9Khjt0af{M(${<$s^Usy%G9C~ zoQ0~i5&3Ic_)&u~oQTh(5;~4aU3|_(K7NY|e8zenm6*!a!nvpgic#;4L{&Nlm1wmc zpM+}pRP4eTs08*RyJb$<`Ew=oKgz&)22??iw7E1ZQ2`%9EwlwQu?H{3?RW|9#j$u4 zmB_D1&gO4ai}N{15gdV2a3iXqgQ$W(D5d{u;U{+D8`NR?0oC%Nq3J}%-~#Tea1yRU zE$|9Hjt7ue%z|N@3-nM6Y(^#4gDUJ<JKl>v?)#Hms3kw5I`9{cz+6_>0;5m?0;m8} zQJ?AcsLr$@ub2+ha~n`wv>D0CJZZ=Gptf)ys^EUS43qEM2Toxn13%);SVDhqLl5;C z9>hjGg_E(4eb5#yMO7L`bzmjZeX|)=z;mdD_n;Q;Lv7JPB;lm_hzkYy0@b?juoeqx zgCDO!1?WH>sxDNetFa2#+WFn6z3oMH-~g&a@1f!!w|<Fw|1@Um`#-~lDmjbF@HcyZ z0kv=zebT~tsIQ|KwPly0Dyc-hH^q+6MkTTUwPnqy_uK7w2P(l8SfKBJy&ZT2mGLvE zjCWaIxASkI68aF8$O+U!U)uSTsD#d<D%7vdg^+{l)M8}!%sT6KOn#VQOo|I-dOyD} z6>ux6q8`*jJMH*us6(|6=im|4p)I-GnE7}GD!~XUkpwE<22`AfaVPd5yKH7u(0`rg zMHR*{W@4!OZKyzdP?hxISnNj~s*|X|=a5}8f1^5A>ZHGhGE@S!sD)>v3Yw2Au^CnH z$4)Z+;%Nr7CqJVC4xj=I<LGOlN@U2?Ab(9GKa^Ofbp>jnBr3s;)*e*6U3UH;YAcSQ z*85#A=<sEXO7BfJs`7Hw!lO|gsYWF<7qw6`>JYY~D(S=kuEXirXXk%KEo4Tg6DvY( zSs7|PIgtwmyb878Y*Ym|pdMU|s&px4VW+)MpicF@xDMA~4Q7u?Cw3*OkXg71=c0Zu zd}{px*^;Cg;6e-Ju)*5HV$|Wd#OlX7?&qNrybt*uW!9rQ@)Wk?t5}aCD$`$26RLo_ zQ13-hg)T>qi&=xi^!@MPBAbCX@J4(KCt?1$^kJ&UUhZ!~zATf;25Jw>`JpYi4i&fw zwbyr|KHn8M0oU32*HA6rkJ{3Av557}NiLMYFR0d^w-02GPX`)>TF8gFI1N=<1L|{Z zLRA<<#py&nw;Yx519p5na@@=goP&ojxtxnU(xhm!2AlCER4X&9(|bMxwct$D)+|6J zv=j&93TqMzxZi+!ZW}70-I$NPsCD{r8lI}A|5tKRF)_VR6DsptQJrvcEOyxO$1sok zXYKsUSit>$)PFvQQHgzyO6+^o^FLu0{)vS+fP*mCNB{L;kuSaQP}BqEsK66YfhVI{ zd_5|$g{Z(Tsx$4V#8;!9dk__86DrOVsOMg^<9(>Ddq)8j@H0E{J?e$uPzzkJ=GCO1 zD@C39QK-c0@D{AcYTSz2^M2G<@>xyl$%02SQ`3uY&6?o0#Ntu6HSPpsj@#u1LvBmR zbMB5ro%lTrbtGCs!B#gOjD)+ll)PO%v$fTW#hix5c}~=eMM7O()HHT@VdsAn%cH@# zmzq1|u8hG;f>EzE-aW5y$`GfjBa~<hhIz9y!SIstshy?Ua*_d`Kj72`>gxj4{(#?~ ze^aAxq1P3Rv8J!VjeGS@tv@i;7YO)jYaRd8`ntMmKY#LXbYpQ}Q`8N|LT)?~t#=k3 z+R++vyPU<5#40y*=+$;-`XW~&HR+LH`?WD|RoGot)4J+vUJth=+%~WKk&$OJCa2bv zy^xs-RGi7GN~pBNvWP?3;Wn=&<kAN<B$#jxZwxwKXh|gO9`5TNKKiE#ZYUUao!O1^ zeCkFp6fyJN(A{2i*?$x7KJA7NKOIR8j80_aG*EbZJlNe(9vJFWxi(b9341iwjg3!5 I#-7gk7huP%yZ`_I diff --git a/searx/translations/eo/LC_MESSAGES/messages.po b/searx/translations/eo/LC_MESSAGES/messages.po index cd7ffe80..1f06ed5b 100644 --- a/searx/translations/eo/LC_MESSAGES/messages.po +++ b/searx/translations/eo/LC_MESSAGES/messages.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-11-22 08:33+0000\n" -"Last-Translator: Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: pizzaiolo\n" "Language-Team: Esperanto (http://www.transifex.com/asciimoo/searx/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,63 +34,63 @@ msgstr "escepto de peto" msgid "unexpected crash" msgstr "neatendita paneo" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "dosieroj" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "ĝenerala" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "muziko" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociaj retoj" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "bildoj" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videoj" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "komputiko" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "novaĵoj" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapo" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "scienco" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Nevalidaj agordoj, bonvolu redakti viajn agordojn" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Nevalidaj agordoj" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "serĉa eraro" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "antaŭ {minutes} minuto(j)" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "antaŭ {hours} horo(j), {minutes} minuto(j)" @@ -110,29 +110,28 @@ msgstr "Statistikaj funkcioj" msgid "Compute {functions} of the arguments" msgstr "Kalkulas {functions} el la argumentoj" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Motora tempo (s)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Paĝŝarĝo (sekundoj)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Nombro da rezultoj" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Poentaroj" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Poentaroj por unu rezulto" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Eraroj" @@ -144,9 +143,15 @@ msgstr "{title}&nbsp;(MALNOVA)" msgid "This entry has been superseded by" msgstr "Tiu ĉi enigo estis anstataŭigita per" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Neniu resumo atingeblas por tiu ĉi eldonaĵo." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI-reverko" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Eviti pagomurojn per direkto al malfermaliraj versioj de eldonaĵoj, se eblas" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -160,16 +165,6 @@ msgstr "Senfina rulumado" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Aŭtomate ŝarĝi sekvan paĝon rulumante al la subo de la nuna paĝo" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Malfermalira COI-ŝanĝo" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Eviti pagomurojn per direkto al malfermaliraj versioj de eldonaĵoj, se eblas" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -332,8 +327,8 @@ msgstr "Metodo" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -405,8 +400,8 @@ msgstr " Aktuale uzataj serĉiloj" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -421,8 +416,8 @@ msgstr "Kategorio" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -440,7 +435,7 @@ msgstr "Bloki" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -450,7 +445,7 @@ msgstr "Tiuj ĉi agordoj estas konservitaj en viaj kuketoj, kio ebligas al ni ne #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -460,7 +455,7 @@ msgstr "Tiuj kuketoj estas nur por via plaĉo, ni ne uzas ilin por spuri vin." #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -468,14 +463,14 @@ msgstr "konservi" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Reagordi al defaŭlto" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -646,23 +641,23 @@ msgid "General" msgstr "Ĝenerala" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motoroj" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Aldonaĵoj" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Respondiloj" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Kuketoj" @@ -713,88 +708,78 @@ msgstr "Elekti stilon por ĉi tiu temo" msgid "Style" msgstr "Stilo" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Malfermalira COI-solvilo" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Direkti al malfermaliraj versioj de eldonaĵoj, se eblas (aldonaĵo necesas)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Fulmoklavo" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Elekti lingvon" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Tempa intervalo" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Mezkvanta tempo" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Maksimuma tempo" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Tio ĉi estas listo de tuje respondantaj moduloj de Searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nomo" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Ŝlosilvortoj" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Priskribo" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Ekzemploj" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Ĉi tio estas listo de kuketoj kaj iliaj valoroj, kiujn searx konservas en via komputilo." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Kun tiu listo, vi povas kontroli la travideblecon de searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nomo de kuketo" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valoro" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Serĉo-URL kun aktuale konservitaj agordoj" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/es/LC_MESSAGES/messages.mo b/searx/translations/es/LC_MESSAGES/messages.mo index 358cce8cbdc45b8872884f05c013129df183282b..c955563506f45b4f3dea3fe037ca700bbc779cf6 100644 GIT binary patch delta 3153 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 Dp;Se} delta 3465 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 diff --git a/searx/translations/es/LC_MESSAGES/messages.po b/searx/translations/es/LC_MESSAGES/messages.po index 4c276303..ef67c839 100644 --- a/searx/translations/es/LC_MESSAGES/messages.po +++ b/searx/translations/es/LC_MESSAGES/messages.po @@ -11,16 +11,16 @@ # juanda097 <juanda097@protonmail.ch>, 2017 # Marc Abonce Seguin, 2016 # Marc Abonce Seguin, 2018 -# Oscar <ocf@openmailbox.org>, 2015 +# O <b204fbaf817497f9ea35edbcc051de81_265921>, 2015 # rivera valdez <riveravaldezmail@gmail.com>, 2016 # wefwefew ewfewfewf <nnnedmz0d@moakt.ws>, 2016 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-02-16 05:29+0000\n" -"Last-Translator: Marc Abonce Seguin\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Carmen Fernández B.\n" "Language-Team: Spanish (http://www.transifex.com/asciimoo/searx/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -41,63 +41,63 @@ msgstr "solicitud de excepción" msgid "unexpected crash" msgstr "choque inesperado" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "Archivos" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "General" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "Música" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "Medios sociales" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "Imágenes" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "Vídeos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "Informática" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "Noticias" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "Mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "Ciencia" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Parámetros incorrectos, por favor, cambia tus preferencias" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ajustes no válidos" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "error en la búsqueda" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "hace {minutes} minuto(s)" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "hace {hours} hora(s) y {minutes} minuto(s)" @@ -117,29 +117,28 @@ msgstr "Funciones de estadística" msgid "Compute {functions} of the arguments" msgstr "Computar {functions} de parámetros" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Motor de tiempo (seg)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Tiempo de carga (segundos)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Número de resultados" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Puntuaciones" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Puntuaciones por resultado" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Errores" @@ -151,9 +150,15 @@ msgstr "{title}&nbsp;(OBSOLETO)" msgid "This entry has been superseded by" msgstr "Esta entrada la ha sustituido" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "No hay resúmenes disponibles para esta publicación." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Cambiar a DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evitar barreras de pago redireccionando a las versiones de acceso libre de las publicaciones cuando estén disponibles" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -167,16 +172,6 @@ msgstr "Deslizamiento infinito" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Cargar automáticamente la siguiente página al deslizarse hasta el final de la página actual" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Evitar barreras de pago redireccionando a las versiones de acceso libre de las publicaciones cuando estén disponibles" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -339,8 +334,8 @@ msgstr "Método" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -412,8 +407,8 @@ msgstr "Motores de búsqueda actualmente en uso" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -428,8 +423,8 @@ msgstr "Categoría" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -447,7 +442,7 @@ msgstr "Bloquear" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -457,7 +452,7 @@ msgstr "Esta configuración se guarda en sus cookies, lo que nos permite no alma #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -467,7 +462,7 @@ msgstr "Estas cookies son para su propia comodidad, no las utilizamos para rastr #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -475,14 +470,14 @@ msgstr "Guardar" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Restablecer configuración por defecto" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -653,23 +648,23 @@ msgid "General" msgstr "General" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motores" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plugins" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Respondedores" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -720,88 +715,78 @@ msgstr "Elige un estilo para este tema" msgid "Style" msgstr "Estilo" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Redireccionar a versiones de acceso abierto de las publicaciones cuando estén disponibles (se requiere plugin)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Atajo" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Idioma elegido" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Rango de tiempo" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Tiempo promedio" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Tiempo máximo" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Esta es la lista de los módulos de respuesta inmediata de searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nombre" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Plabras clave" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descripción" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Ejemplos" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Esta es la lista de cookies y sus valores que searx está almacenando en tu ordenador." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Con esa lista puedes valorar la transparencia de searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nombre de la cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valor" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Buscar URL de las preferencias guardadas actualmente" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/et/LC_MESSAGES/messages.mo b/searx/translations/et/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..e0818bc78a58840f67f279739c3619db5d91b62d GIT binary patch literal 11423 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 G&Hn=TG8<U{ literal 0 HcmV?d00001 diff --git a/searx/translations/et/LC_MESSAGES/messages.po b/searx/translations/et/LC_MESSAGES/messages.po new file mode 100644 index 00000000..580307ed --- /dev/null +++ b/searx/translations/et/LC_MESSAGES/messages.po @@ -0,0 +1,998 @@ +# Translations template for PROJECT. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# Madis Otenurm, 2019 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-04-20 20:39+0000\n" +"Last-Translator: Madis Otenurm\n" +"Language-Team: Estonian (http://www.transifex.com/asciimoo/searx/language/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: searx/search.py:137 searx/search.py:182 +msgid "timeout" +msgstr "ajalõpp" + +#: searx/search.py:144 +msgid "request exception" +msgstr "taotluse viga" + +#: searx/search.py:151 +msgid "unexpected crash" +msgstr "ootamatu krahh" + +#: searx/webapp.py:135 +msgid "files" +msgstr "failid" + +#: searx/webapp.py:136 +msgid "general" +msgstr "üldine" + +#: searx/webapp.py:137 +msgid "music" +msgstr "muusika" + +#: searx/webapp.py:138 +msgid "social media" +msgstr "sotsiaalmeedia" + +#: searx/webapp.py:139 +msgid "images" +msgstr "pildid" + +#: searx/webapp.py:140 +msgid "videos" +msgstr "videod" + +#: searx/webapp.py:141 +msgid "it" +msgstr "infotehnoloogia" + +#: searx/webapp.py:142 +msgid "news" +msgstr "uudised" + +#: searx/webapp.py:143 +msgid "map" +msgstr "kaardid" + +#: searx/webapp.py:144 +msgid "science" +msgstr "teadus" + +#: searx/webapp.py:398 searx/webapp.py:653 +msgid "Invalid settings, please edit your preferences" +msgstr "Sobimatud seaded, palun muuda oma eelistusi" + +#: searx/webapp.py:410 +msgid "Invalid settings" +msgstr "Sobimatud seaded" + +#: searx/webapp.py:444 searx/webapp.py:488 +msgid "search error" +msgstr "otsingu viga" + +#: searx/webapp.py:525 +msgid "{minutes} minute(s) ago" +msgstr "{minutes} minut(it) tagasi" + +#: searx/webapp.py:527 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "{hours} tund(i), {minutes} minut(it) tagasi" + +#: searx/answerers/random/answerer.py:53 +msgid "Random value generator" +msgstr "Juhusliku väärtuse generaator" + +#: searx/answerers/random/answerer.py:54 +msgid "Generate different random values" +msgstr "Genereeri erinevaid juhuslikke väärtusi" + +#: searx/answerers/statistics/answerer.py:53 +msgid "Statistics functions" +msgstr "Statistikafunktsioonid" + +#: searx/answerers/statistics/answerer.py:54 +msgid "Compute {functions} of the arguments" +msgstr "Arvuta argumentide {functions}" + +#: searx/engines/__init__.py:194 +msgid "Engine time (sec)" +msgstr "Mootori aeg (s)" + +#: searx/engines/__init__.py:198 +msgid "Page loads (sec)" +msgstr "Lehe laadimisi (s)" + +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 +#: searx/templates/simple/results.html:20 +msgid "Number of results" +msgstr "Tulemuste arv" + +#: searx/engines/__init__.py:206 +msgid "Scores" +msgstr "Skoorid" + +#: searx/engines/__init__.py:210 +msgid "Scores per result" +msgstr "Skoorid tulemuste kohta" + +#: searx/engines/__init__.py:214 +msgid "Errors" +msgstr "Vead" + +#: searx/engines/pdbe.py:87 +msgid "{title}&nbsp;(OBSOLETE)" +msgstr "{title}&nbsp;(VANANENUD)" + +#: searx/engines/pdbe.py:91 +msgid "This entry has been superseded by" +msgstr "See üksus on asendatud:" + +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI taaskirjutamine" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Väldi maksumüüre, suunates võimalusel väljaannete avatud ligipääsuga versioonidele" + +#: searx/plugins/https_rewrite.py:32 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "Kirjuta võimalusel HTTP lingid HTTPSiks" + +#: searx/plugins/infinite_scroll.py:3 +msgid "Infinite scroll" +msgstr "Lõpmatu kerimine" + +#: searx/plugins/infinite_scroll.py:4 +msgid "Automatically load next page when scrolling to bottom of current page" +msgstr "Laadi lehe lõppu kerimisel järgmine leht automaatselt" + +#: searx/plugins/open_results_on_new_tab.py:18 +#: searx/templates/oscar/preferences.html:114 +#: searx/templates/simple/preferences.html:149 +msgid "Open result links on new browser tabs" +msgstr "Ava tulemuste lingid uutel brauserikaartidel" + +#: searx/plugins/open_results_on_new_tab.py:19 +msgid "" +"Results are opened in the same window by default. This plugin overwrites the" +" default behaviour to open links on new tabs/windows. (JavaScript required)" +msgstr "Tulemused avatakse vaikimisi samas aknas. See plugin kirjutab vaikimisi käitumise üle, et avada lingid uutel kaartidel/akendel. (JavaScript nõutud)" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "Otsi kategooria valimisel" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "Teosta otsing koheselt, kui kategooria on valitud. Keela mitme kategooria valimiseks. (Nõuab JavaScripti)" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "Kuvab sinu IP'd, kui päringuks on \"ip\" ning kasutajaagenti, kui päringuks on \"user agent\"." + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "Jälitajate eemaldus URList" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "Eemaldab jälitavad argumendid tagastatud URList" + +#: searx/plugins/vim_hotkeys.py:3 +msgid "Vim-like hotkeys" +msgstr "Vim-sarnased kiirklahvid" + +#: searx/plugins/vim_hotkeys.py:4 +msgid "" +"Navigate search results with Vim-like hotkeys (JavaScript required). Press " +"\"h\" key on main or result page to get help." +msgstr "Navigeeri otsingutulemusi Vim-i sarnaste kiirklahvidega (nõuab JavaScripti). Abi saamiseks vajuta avalehel või tulemuste lehel klahvi \"h\"." + +#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4 +#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4 +#: searx/templates/simple/404.html:4 +msgid "Page not found" +msgstr "Lehte ei leitud" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +#, python-format +msgid "Go to %(search_page)s." +msgstr "Mine %(search_page)s." + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +msgid "search page" +msgstr "otsinguleht" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12 +#: searx/templates/oscar/navbar.html:7 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "eelistused" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2 +#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "teave" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/legacy/preferences.html:5 +#: searx/templates/oscar/preferences.html:8 +#: searx/templates/pix-art/preferences.html:5 +#: searx/templates/simple/preferences.html:26 +msgid "Preferences" +msgstr "Eelistused" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/legacy/preferences.html:9 +#: searx/templates/oscar/preferences.html:33 +#: searx/templates/oscar/preferences.html:35 +#: searx/templates/simple/preferences.html:34 +msgid "Default categories" +msgstr "Vaikimisi kategooriad" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/legacy/preferences.html:14 +#: searx/templates/oscar/preferences.html:41 +#: searx/templates/pix-art/preferences.html:9 +#: searx/templates/simple/preferences.html:39 +#: searx/templates/simple/preferences.html:163 +msgid "Search language" +msgstr "Otsingukeel" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/legacy/preferences.html:17 +#: searx/templates/oscar/languages.html:6 +#: searx/templates/pix-art/preferences.html:12 +#: searx/templates/simple/languages.html:2 +#: searx/templates/simple/preferences.html:42 +msgid "Default language" +msgstr "Vaikimisi keel" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/legacy/preferences.html:25 +#: searx/templates/oscar/preferences.html:47 +#: searx/templates/pix-art/preferences.html:20 +#: searx/templates/simple/preferences.html:120 +msgid "Interface language" +msgstr "Liidese keel" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/legacy/preferences.html:35 +#: searx/templates/oscar/preferences.html:57 +#: searx/templates/simple/preferences.html:51 +msgid "Autocomplete" +msgstr "Automaattäide" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/legacy/preferences.html:46 +#: searx/templates/oscar/preferences.html:68 +#: searx/templates/simple/preferences.html:166 +msgid "Image proxy" +msgstr "Pildiproksi" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/legacy/preferences.html:49 +#: searx/templates/oscar/preferences.html:72 +#: searx/templates/simple/preferences.html:169 +msgid "Enabled" +msgstr "Lubatud" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/legacy/preferences.html:50 +#: searx/templates/oscar/preferences.html:73 +#: searx/templates/simple/preferences.html:170 +msgid "Disabled" +msgstr "Keelatud" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/legacy/preferences.html:55 +#: searx/templates/oscar/preferences.html:77 +#: searx/templates/pix-art/preferences.html:30 +#: searx/templates/simple/preferences.html:156 +msgid "Method" +msgstr "Meetod" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/legacy/preferences.html:64 +#: searx/templates/oscar/preferences.html:86 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 +#: searx/templates/simple/preferences.html:63 +#: searx/templates/simple/preferences.html:90 +msgid "SafeSearch" +msgstr "SafeSearch" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/legacy/preferences.html:67 +#: searx/templates/oscar/preferences.html:90 +#: searx/templates/simple/preferences.html:66 +msgid "Strict" +msgstr "Range" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/legacy/preferences.html:68 +#: searx/templates/oscar/preferences.html:91 +#: searx/templates/simple/preferences.html:67 +msgid "Moderate" +msgstr "Mõõdukas" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/legacy/preferences.html:69 +#: searx/templates/oscar/preferences.html:92 +#: searx/templates/simple/preferences.html:68 +msgid "None" +msgstr "Puudub" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/legacy/preferences.html:74 +#: searx/templates/oscar/preferences.html:96 +#: searx/templates/pix-art/preferences.html:39 +#: searx/templates/simple/preferences.html:131 +msgid "Themes" +msgstr "Teemad" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Värv" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Sinine (vaikimisi)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Violetne" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Roheline" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "Erksinine" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Oranž" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Punane" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/legacy/preferences.html:93 +#: searx/templates/pix-art/preferences.html:49 +#: searx/templates/simple/preferences.html:77 +msgid "Currently used search engines" +msgstr "Hetkel kasutatud otsingumootorid" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/legacy/preferences.html:97 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 +#: searx/templates/pix-art/preferences.html:53 +#: searx/templates/simple/preferences.html:87 +msgid "Engine name" +msgstr "Mootori nimi" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/legacy/preferences.html:98 +msgid "Category" +msgstr "Kategooria" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:110 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +#: searx/templates/simple/preferences.html:86 +msgid "Allow" +msgstr "Luba" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:111 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "Keela" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/legacy/preferences.html:119 +#: searx/templates/oscar/preferences.html:285 +#: searx/templates/pix-art/preferences.html:73 +#: searx/templates/simple/preferences.html:180 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "Need seaded salvestatakse sinu küpsistes, see lubab meil sinu kohta andmeid mitte salvestada." + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/legacy/preferences.html:121 +#: searx/templates/oscar/preferences.html:287 +#: searx/templates/pix-art/preferences.html:75 +#: searx/templates/simple/preferences.html:182 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "Need küpsised on vaid mugavuse tarbeks, me ei kasuta neid sinu jälitamiseks." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/legacy/preferences.html:124 +#: searx/templates/oscar/preferences.html:293 +#: searx/templates/pix-art/preferences.html:78 +#: searx/templates/simple/preferences.html:185 +msgid "save" +msgstr "salvesta" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/legacy/preferences.html:125 +#: searx/templates/oscar/preferences.html:295 +#: searx/templates/simple/preferences.html:186 +msgid "Reset defaults" +msgstr "Lähtesta vaikeseaded" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/legacy/preferences.html:126 +#: searx/templates/oscar/preferences.html:294 +#: searx/templates/pix-art/preferences.html:79 +#: searx/templates/simple/preferences.html:187 +msgid "back" +msgstr "tagasi" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/legacy/results.html:13 +#: searx/templates/oscar/results.html:136 +#: searx/templates/simple/results.html:58 +msgid "Search URL" +msgstr "Otsingu URL" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/legacy/results.html:17 +#: searx/templates/oscar/results.html:141 +#: searx/templates/simple/results.html:62 +msgid "Download results" +msgstr "Laadi tulemused alla" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/legacy/results.html:35 +#: searx/templates/simple/results.html:10 +msgid "Answers" +msgstr "Vastused" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/legacy/results.html:43 +#: searx/templates/oscar/results.html:116 +#: searx/templates/simple/results.html:42 +msgid "Suggestions" +msgstr "Soovitused" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/legacy/results.html:81 +#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78 +#: searx/templates/simple/results.html:130 +msgid "previous page" +msgstr "eelmine leht" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/legacy/results.html:92 +#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84 +#: searx/templates/simple/results.html:145 +msgid "next page" +msgstr "järgmine leht" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4 +msgid "Search for..." +msgstr "Otsi..." + +#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +#: searx/templates/simple/stats.html:7 +msgid "Engine stats" +msgstr "Mootori statistika" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/legacy/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "originaalne kontekst" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Seeder" +msgstr "Seemendaja" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Leecher" +msgstr "Kaanija" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/legacy/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:23 +#: searx/templates/simple/result_templates/torrent.html:6 +msgid "magnet link" +msgstr "magnetlink" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/legacy/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:24 +#: searx/templates/simple/result_templates/torrent.html:7 +msgid "torrent file" +msgstr "torrentifail" + +#: searx/templates/legacy/categories.html:8 +#: searx/templates/simple/categories.html:6 +msgid "Click on the magnifier to perform search" +msgstr "Klõpsa luubile otsingu teostamiseks" + +#: searx/templates/legacy/preferences.html:84 +#: searx/templates/oscar/preferences.html:113 +#: searx/templates/simple/preferences.html:142 +msgid "Results on new tabs" +msgstr "Tulemused uutel kaartidel" + +#: searx/templates/legacy/preferences.html:87 +#: searx/templates/oscar/preferences.html:117 +#: searx/templates/simple/preferences.html:145 +msgid "On" +msgstr "Sees" + +#: searx/templates/legacy/preferences.html:88 +#: searx/templates/oscar/preferences.html:118 +#: searx/templates/simple/preferences.html:146 +msgid "Off" +msgstr "Väljas" + +#: searx/templates/legacy/result_templates/code.html:3 +#: searx/templates/legacy/result_templates/default.html:3 +#: searx/templates/legacy/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48 +#: searx/templates/simple/macros.html:43 +msgid "cached" +msgstr "vahemälus" + +#: searx/templates/oscar/advanced.html:4 +msgid "Advanced settings" +msgstr "Täpsemad seaded" + +#: searx/templates/oscar/base.html:62 +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "Sulge" + +#: searx/templates/oscar/base.html:64 +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +#: searx/templates/simple/results.html:25 +msgid "Error!" +msgstr "Viga!" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "Powered by" +msgstr "Põhineb" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "privaatsust austaval, häkitaval metaotsingu mootoril" + +#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50 +#: searx/templates/simple/macros.html:43 +msgid "proxied" +msgstr "proksitud" + +#: searx/templates/oscar/macros.html:92 +msgid "supported" +msgstr "toetatud" + +#: searx/templates/oscar/macros.html:96 +msgid "not supported" +msgstr "mittetoetatud" + +#: searx/templates/oscar/preferences.html:13 +#: searx/templates/oscar/preferences.html:22 +#: searx/templates/simple/preferences.html:32 +msgid "General" +msgstr "Üldine" + +#: searx/templates/oscar/preferences.html:14 +#: searx/templates/oscar/preferences.html:134 +#: searx/templates/simple/preferences.html:76 +msgid "Engines" +msgstr "Mootorid" + +#: searx/templates/oscar/preferences.html:15 +#: searx/templates/oscar/preferences.html:207 +msgid "Plugins" +msgstr "Pluginad" + +#: searx/templates/oscar/preferences.html:16 +#: searx/templates/oscar/preferences.html:233 +msgid "Answerers" +msgstr "Vastajad" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:260 +msgid "Cookies" +msgstr "Küpsised" + +#: searx/templates/oscar/preferences.html:42 +#: searx/templates/simple/preferences.html:48 +msgid "What language do you prefer for search?" +msgstr "Mis keelt sa otsinguks eelistad?" + +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/simple/preferences.html:128 +msgid "Change the language of the layout" +msgstr "Muuda paigutuse keelt" + +#: searx/templates/oscar/preferences.html:58 +#: searx/templates/simple/preferences.html:60 +msgid "Find stuff as you type" +msgstr "Otsi asju kirjutamise ajal" + +#: searx/templates/oscar/preferences.html:69 +#: searx/templates/simple/preferences.html:173 +msgid "Proxying image results through searx" +msgstr "Proksin pilditulemusi läbi searx-i" + +#: searx/templates/oscar/preferences.html:78 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "Muuda viisi, kuidas väljad edastatakse, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">loe taotlusmeetodite kohta lisaks</a>" + +#: searx/templates/oscar/preferences.html:87 +#: searx/templates/simple/preferences.html:71 +msgid "Filter content" +msgstr "Filtreeri sisu" + +#: searx/templates/oscar/preferences.html:97 +#: searx/templates/simple/preferences.html:139 +msgid "Change searx layout" +msgstr "Muuda searx-i paigutust" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Choose style for this theme" +msgstr "Vali sellele teemale stii" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Style" +msgstr "Stii" + +#: searx/templates/oscar/preferences.html:151 +#: searx/templates/oscar/preferences.html:163 +#: searx/templates/simple/preferences.html:88 +msgid "Shortcut" +msgstr "Otsetee" + +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 +msgid "Selected language" +msgstr "Valitud keel" + +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 +#: searx/templates/simple/preferences.html:91 +msgid "Time range" +msgstr "Ajavahemik" + +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 +#: searx/templates/simple/preferences.html:92 +msgid "Avg. time" +msgstr "Keskmine aeg" + +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 +#: searx/templates/simple/preferences.html:93 +msgid "Max time" +msgstr "Maksimaalne aeg" + +#: searx/templates/oscar/preferences.html:236 +msgid "This is the list of searx's instant answering modules." +msgstr "See on searx-i koheste vastajate moodulite nimekiri." + +#: searx/templates/oscar/preferences.html:240 +msgid "Name" +msgstr "Nimi" + +#: searx/templates/oscar/preferences.html:241 +msgid "Keywords" +msgstr "Märksõnad" + +#: searx/templates/oscar/preferences.html:242 +msgid "Description" +msgstr "Kirjeldus" + +#: searx/templates/oscar/preferences.html:243 +msgid "Examples" +msgstr "Näited" + +#: searx/templates/oscar/preferences.html:263 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "See on küpsiste ja nende väärtuste nimekiri, mida searx hoiab sinu arvutis." + +#: searx/templates/oscar/preferences.html:264 +msgid "With that list, you can assess searx transparency." +msgstr "Selle nimekirjaga saad sa hinnata searx-i läbipaistvust." + +#: searx/templates/oscar/preferences.html:269 +msgid "Cookie name" +msgstr "Küpsise nimi" + +#: searx/templates/oscar/preferences.html:270 +msgid "Value" +msgstr "Väärtus" + +#: searx/templates/oscar/preferences.html:289 +msgid "Search URL of the currently saved preferences" +msgstr "Otsingu URL hetkel salvestatud eelistuste kohta" + +#: searx/templates/oscar/preferences.html:289 +msgid "" +"Note: specifying custom settings in the search URL can reduce privacy by " +"leaking data to the clicked result sites." +msgstr "Märkus: täpsemate seadete määramine otsingu URLis võib vähendada privaatsust, lekitades andmed klõpsatud tulemuste saitidele." + +#: searx/templates/oscar/results.html:17 +msgid "Search results" +msgstr "Otsingutulemused" + +#: searx/templates/oscar/results.html:21 +#: searx/templates/simple/results.html:84 +msgid "Try searching for:" +msgstr "Proovi otsida:" + +#: searx/templates/oscar/results.html:100 +#: searx/templates/simple/results.html:25 +msgid "Engines cannot retrieve results" +msgstr "Mootorid ei saa tulemusi tagastada" + +#: searx/templates/oscar/results.html:131 +msgid "Links" +msgstr "Lingid" + +#: searx/templates/oscar/search.html:8 +#: searx/templates/oscar/search_full.html:11 +#: searx/templates/simple/search.html:5 +msgid "Start search" +msgstr "Alusta otsingut" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "statistika" + +#: searx/templates/oscar/time-range.html:3 +#: searx/templates/simple/time-range.html:3 +msgid "Anytime" +msgstr "Igal ajal" + +#: searx/templates/oscar/time-range.html:6 +#: searx/templates/simple/time-range.html:6 +msgid "Last day" +msgstr "Viimane päev" + +#: searx/templates/oscar/time-range.html:9 +#: searx/templates/simple/time-range.html:9 +msgid "Last week" +msgstr "Viimane nädal" + +#: searx/templates/oscar/time-range.html:12 +#: searx/templates/simple/time-range.html:12 +msgid "Last month" +msgstr "Viimane kuu" + +#: searx/templates/oscar/time-range.html:15 +#: searx/templates/simple/time-range.html:15 +msgid "Last year" +msgstr "Viimane aasta" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "Tähelepanu!" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "Tundub, et kasutad searx-i esimest korda." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "Teave!" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "hetkel pole ühtegi küpsist määratud." + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "Hetkel andmed puuduvad." + +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +msgid "Engines cannot retrieve results." +msgstr "Mootorid ei saa tulemusi tagastada." + +#: searx/templates/oscar/messages/no_results.html:10 +#: searx/templates/simple/messages/no_results.html:10 +msgid "Please, try again later or find another searx instance." +msgstr "Palun proovi hiljem uuesti või leia teine searx-i eksemplar." + +#: searx/templates/oscar/messages/no_results.html:14 +#: searx/templates/simple/messages/no_results.html:14 +msgid "Sorry!" +msgstr "Vabandust!" + +#: searx/templates/oscar/messages/no_results.html:15 +#: searx/templates/simple/messages/no_results.html:15 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "me ei leidnud ühtegi tulemust. Palun kasuta teist päringut või otsi rohkematest kategooriatest." + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "Hästi tehtud!" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "Seaded edukalt salvestatud." + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "Oh kurja!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "Midagi läks valesti." + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "show media" +msgstr "kuva meedia" + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "hide media" +msgstr "peida meedia" + +#: searx/templates/oscar/result_templates/images.html:30 +msgid "Get image" +msgstr "Hangi pilt" + +#: searx/templates/oscar/result_templates/images.html:33 +msgid "View source" +msgstr "Vaata allikat" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "show map" +msgstr "kuva kaart" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "hide map" +msgstr "peida kaart" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "show details" +msgstr "kuva andmeid" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "hide details" +msgstr "peida andmed" + +#: searx/templates/oscar/result_templates/torrent.html:7 +#: searx/templates/simple/result_templates/torrent.html:11 +msgid "Filesize" +msgstr "Failisuurus" + +#: searx/templates/oscar/result_templates/torrent.html:9 +#: searx/templates/simple/result_templates/torrent.html:12 +msgid "Bytes" +msgstr "Baite" + +#: searx/templates/oscar/result_templates/torrent.html:10 +#: searx/templates/simple/result_templates/torrent.html:13 +msgid "kiB" +msgstr "kiB" + +#: searx/templates/oscar/result_templates/torrent.html:11 +#: searx/templates/simple/result_templates/torrent.html:14 +msgid "MiB" +msgstr "MiB" + +#: searx/templates/oscar/result_templates/torrent.html:12 +#: searx/templates/simple/result_templates/torrent.html:15 +msgid "GiB" +msgstr "GiB" + +#: searx/templates/oscar/result_templates/torrent.html:13 +#: searx/templates/simple/result_templates/torrent.html:16 +msgid "TiB" +msgstr "TiB" + +#: searx/templates/oscar/result_templates/torrent.html:15 +#: searx/templates/simple/result_templates/torrent.html:20 +msgid "Number of Files" +msgstr "Failide arv" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "show video" +msgstr "kuva video" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "hide video" +msgstr "peida video" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "Laadi juurde..." + +#: searx/templates/simple/base.html:31 +msgid "No item found" +msgstr "Üksust ei leitud" + +#: searx/templates/simple/preferences.html:89 +msgid "Supports selected language" +msgstr "Toetab valitud keelt" + +#: searx/templates/simple/preferences.html:118 +msgid "User interface" +msgstr "Kasutajaliides" + +#: searx/templates/simple/preferences.html:154 +msgid "Privacy" +msgstr "Privaatsus" diff --git a/searx/translations/eu/LC_MESSAGES/messages.mo b/searx/translations/eu/LC_MESSAGES/messages.mo index db58fdc84a43693ae6888e02acab8b032b8f48d8..0c66d026cc7187ac0a2860b953f2ab86baa9f05f 100644 GIT binary patch delta 3189 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 delta 3474 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 QoV3igNZe08RxvE?Z^b6FZvX%Q diff --git a/searx/translations/eu/LC_MESSAGES/messages.po b/searx/translations/eu/LC_MESSAGES/messages.po index b6fa194e..c47634df 100644 --- a/searx/translations/eu/LC_MESSAGES/messages.po +++ b/searx/translations/eu/LC_MESSAGES/messages.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PROJECT project. # # Translators: -# beriain <beriain@bitmessage.ch>, 2018 -# beriain <beriain@bitmessage.ch>, 2018 +# beriain, 2018 +# beriain, 2018-2019 # Txopi <txopi@ikusimakusi.eus>, 2016 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-11-06 16:39+0000\n" -"Last-Translator: beriain <beriain@bitmessage.ch>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-26 15:18+0000\n" +"Last-Translator: beriain\n" "Language-Team: Basque (http://www.transifex.com/asciimoo/searx/language/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,63 +33,63 @@ msgstr "salbuespena eskaeran" msgid "unexpected crash" msgstr "ustekabeko gelditzea" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "fitxategiak" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "orokorra" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musika" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" -msgstr "multimedia soziala" +msgstr "media soziala" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "irudiak" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "bideoak" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" -msgstr "it" +msgstr "informatika" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "berriak" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "zientzia" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Ezarpen ez baliodunak, mesedez editatu zure hobespenak" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ezarpen ez baliodunak" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "bilaketa akatsa" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "duela {minutes} minutu" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "duela {hours} ordu eta {minutes} minutu" @@ -109,29 +109,28 @@ msgstr "Funtzio estatistikoak" msgid "Compute {functions} of the arguments" msgstr "Parametroen {functions} zenbatu" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Bilatzailearen denbora (seg)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Orri kargak (seg)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Emaitza kopurua" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Balorazioak" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Balorazioak emaitza bakoitzeko" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Erroreak" @@ -143,9 +142,15 @@ msgstr "{title}&nbsp;(ZAHARKITUA)" msgid "This entry has been superseded by" msgstr "Sarrera hau hurrengoarekin ordezkatu da" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Ez dago abstrakturik eskuragarri argitalpen honetarako." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI berridazketa" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Ordainketa hormak sahiestu argitalpenen sartze-askeko bertsioetara berbidaliz ahal denean" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -159,16 +164,6 @@ msgstr "Korritze amaigabea" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Hurrengo orria automatikoki kargatu uneko orriaren behekaldera mugitzerakoan" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Berridatzi Open Access DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Ordainketa hormak sahiestu argitalpenen sartze-askeko bertsioetara berbidaliz ahal denean" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +326,8 @@ msgstr "Metodoa" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +399,8 @@ msgstr "Erabiliak izaten ari diren bilatzaileak" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +415,8 @@ msgstr "Kategoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,17 +434,17 @@ msgstr "Blokeatu" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" "These settings are stored in your cookies, this allows us not to store this " "data about you." -msgstr "Ezarpen hauek zure cookietan gurdetzen dira, honek zuri buruzko informaziorik ez gordetzea baimentzen digu." +msgstr "Ezarpen hauek zure cookietan gordetzen dira, honek zuri buruzko informaziorik ez gordetzea baimentzen digu." #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +454,7 @@ msgstr "Cookie hauek zure onurarako besterik ez dira, ez ditugu zure jarraipenik #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +462,14 @@ msgstr "gorde" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Berrezarri lehenetsiak" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +640,23 @@ msgid "General" msgstr "Orokorra" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Bilatzaileak" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Pluginak" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Erantzun emaileak" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookieak" @@ -683,7 +678,7 @@ msgstr "Gauzak aurkitu idatzi bitartean" #: searx/templates/oscar/preferences.html:69 #: searx/templates/simple/preferences.html:173 msgid "Proxying image results through searx" -msgstr "Irudien emaitzak searx bitartez proxyatu" +msgstr "Irudien emaitzak searx proxyaren bidez pasatu" #: searx/templates/oscar/preferences.html:78 msgid "" @@ -712,88 +707,78 @@ msgstr "Gai honetarako estiloa hautatu" msgid "Style" msgstr "Estiloa" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI ebatzi" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Argitalpenen sartze-askeko bertsioetara berbidali ahal denean (plugina behar du)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Lasterbidea" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Hautatutako hizkuntza" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Denbora tartea" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr " Batezbesteko denbora" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Gehienezko denbora" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Hau da searxen berehalako erantzunen moduluen zerrenda." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Izena" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Gako-hitzak" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Deskripzioa" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Adibideak" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Hau searxek zure ordenagailuan gordetzen ari den cookien eta haien balioen zerrenda bat da." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Zerrenda horrekin, searxen gardentasuna balioztatu dezakezu." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookiearen izena" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Balioa" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Une honetan gordetako hobespenen bilaketa URLa" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/fa_IR/LC_MESSAGES/messages.mo b/searx/translations/fa_IR/LC_MESSAGES/messages.mo index 4ef71416b35ef8365ee325edad9bafee663e68c3..a2f50338647770a6065e78208cbb207308c65487 100644 GIT binary patch delta 3128 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 delta 3484 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 RBg={0I8rOchUe#H`~_+D>H7cx diff --git a/searx/translations/fa_IR/LC_MESSAGES/messages.po b/searx/translations/fa_IR/LC_MESSAGES/messages.po index 0e568e1d..6689dafe 100644 --- a/searx/translations/fa_IR/LC_MESSAGES/messages.po +++ b/searx/translations/fa_IR/LC_MESSAGES/messages.po @@ -4,15 +4,17 @@ # # Translators: # Aurora, 2018 +# Aurora, 2018 # Jim <inactive+Jim11@transifex.com>, 2017 -# Mostafa Ahangarha <ahangarha@gmail.com>, 2018 +# Jim <inactive+Jim11@transifex.com>, 2017 +# Mostafa Ahangarha <ahangarha@riseup.net>, 2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-04-16 16:41+0000\n" -"Last-Translator: Aurora\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Persian (Iran) (http://www.transifex.com/asciimoo/searx/language/fa_IR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,63 +35,63 @@ msgstr "خطا در درخواست" msgid "unexpected crash" msgstr "ایست ناگهانی" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "فایل ها<br>" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "فراگیر" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "موسیقی" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "رسانه اجتماعی" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "تصاویر<br>" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "ویدیو ها<br>" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "فناوری اطلاعات" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "اخبار" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "نقشه" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "دانش<br>" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "تنظیمات نادرست است، لطفا اولویت‌های جستجو را تغییر دهید" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "تنظیمات اشتباه" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "خطای جستجو" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} دقیقه پیش" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} ساعت و {minutes} دقیقه پیش" @@ -109,29 +111,28 @@ msgstr "توابع آماری" msgid "Compute {functions} of the arguments" msgstr "پردازش {عملکرد های} نشانوند ها<br>" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "زمان موتور(ثانیه)<br>" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "زمان بارگذاری صفحه (ثانیه)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "تعداد نتایج" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "امتیازات<br>" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "امتیازات بر نتیجه<br>" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "خطاها" @@ -143,9 +144,15 @@ msgstr "{title}&nbsp;(OBSOLETE)" msgid "This entry has been superseded by" msgstr "این ورودی معلق شده است توسط" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "هیچ چکید ای برای این نشریه در دسترس نیست.<br>" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "امتناع از منابع غیر رایگان با تغییر مسیر به نسخه ی رایگان نشریات اگر در دسترس باشد<br>" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -159,16 +166,6 @@ msgstr "پایین رفتن بی‌پایان" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "بارگذاری خودکار صفحه بعد در صورت پیمایش تا پایین صفحه کنونی" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "بازنویسی Open Access DOI<br>" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "امتناع از منابع غیر رایگان با تغییر مسیر به نسخه ی رایگان نشریات اگر در دسترس باشد<br>" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +328,8 @@ msgstr "روش<br>" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +401,8 @@ msgstr "موتورهای جستجوی در حال استفاده" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +417,8 @@ msgstr "دسته" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,7 +436,7 @@ msgstr "انسداد<br>" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -449,7 +446,7 @@ msgstr "این تنظیمات در کوکی های شما ذخیره شده ان #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +456,7 @@ msgstr "این کوکی ها برای راحتی شماست، ما از این #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +464,14 @@ msgstr "ذخیره" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "بازنشانی پیشفرض ها<br>" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +642,23 @@ msgid "General" msgstr "کلی<br>" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "موتور ها<br>" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "افزونه ها" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "پاسخگو ها<br>" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "کوکی ها<br>" @@ -712,88 +709,78 @@ msgstr "سبک این پوسته را انتخاب کنید" msgid "Style" msgstr "سبک" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "حل کننده ی Open Access DOI<br>" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "هدایت به نسخه رایگان نشریات اگر در دسترس باشد(نیازمند به افزونه)<br>" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "میانبر<br>" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "زبان انتخابی<br>" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "بازه ی زمانی<br>" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "زمان میانگین" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "حداکثر زمان" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "این، فهرست ماژول‌های پاسخ بلادرنگ searx است." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "نام" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "کلیدواژه ها<br>" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "شرح<br>" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "مثال ها<br>" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "این، لیست کوکی‌ها و مقادیری است که searx روی دستگاه شما ذخیره می‌کند." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "با آن لیست، می‌توانید شفافیت searx را ارزیابی کنید." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "نام کوکی<br>" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "مقدار<br>" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "آدرس جستجو بر اساس تنظیمات ذخیره شده<br>" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/fi/LC_MESSAGES/messages.mo b/searx/translations/fi/LC_MESSAGES/messages.mo index b3905ca2f4b33b4af510d1570da1167b5af70370..90cd78d9e24c2c263a8759b060dd39a934d318a0 100644 GIT binary patch delta 3140 zcmYM$4NR3)9LMo<c~1}(MUoJ1g0FC|my2}+--o$b8ThtJK`Om&s7WC&R=8(2oNrA{ zg-kSZN-L+NU0Kwey2=;K<<wPX=+rb@YOT3O>RNq&+_S|le9k$~dHJ9JInN!}%5Ic6 zmy@Cz3_tDsrt#Yut=j)T+vAPtLv;u0(I@y2wqYzDv7W#L>Sypt>_qh&MB_}%L5*L5 ziMT3UcT6LNI2yKN3$|cie7dJGk75}<f-7(s?m$g++<F?bsGmdDG+n5`B3Wf1#$yx? zN2WGjOv2IF+c?HNOF;w6P=PGMQmpFkz{IEte@6AYg_@`fm6@ns;phD^gL*o;aU8~A znRNkb{#UFun8^CZq0k@KqZVpGH||5F@LP<;3#fjbs0`e-&+nlEi|lO-MbirvU<PWZ zImpM1=Z_bQF$W!V6wzJ^vJHFSVbsDM*7K;qE}<5_fm+}eYTVzbow`Ve0*ynpC!kWF zj5U~woQ`?Nwm0`7|CKcCra_UX5H3YC6g5#kYND|ifs=7CPC+eLfvjz6kkc@$umT$~ zfH7Po1wIb7vB{`RO|$K#eaXKrPml(sb}ee*oj4L(P!oTL@8WgjW9s@5ByL1a+>Q$9 zE7S%~+4fHKP``=Vd2(`iqnS8>dY(f;3rs~#P=cCZ9_n?hMrB|V@-a>PQNIJIBWOqF zHpguHMbr^pMeXz^rs7@uJds@vp`MI0&>2Hv4uy@V*X=eIVPc9gkK<faMjB8%eGip^ z-AI;AJ8A>ppccM}TKEd;Xl|nd{s%Qa>fvzadZC~7O@M-r2MbXXG@&ldPSn5;aTxBi z&%Z~VX(uWJ*HIbz6Scs7Yc%=Q_}-|ylY-hvDk{MA?mFi`f`S(Iq81*7y8Zd6Gb=>x zWEyJV%eH+9Dv&zVk=3KdH`?|lRDios<M!M7AymK}*hBCCITi4d?eHrqpubRoJU}fJ z%|U9yo~VFQQ9I1W>F7sgY9*3w(`r4AM_tBTMjcf%7fbWEqN4>4QcwVgQLkYK>Z|id zoPu4*wJ;ND)ZKU<HNi)yKw5462r8gs_!*u?1yY}G45wnYBTc3av+;a7=dX$Wr9nn# za4r~+igW~a9|dZHLev5!sEOyHGV&%W#jEY}EvWHL_&V;f^(=R|Umj|s<K0g9HW$&L zTRjhziCWbA{T3>vdr%9XM;*mQRAARo0o+DD=AJc`S4sUwqXI2N^`C>fghAV0?od$2 z6{v{UAi<igsMNOG=N+gFoJAeQZ|FtWAimwuhYGv`bs68lBzzk+Pcv%A`%&v1MQzAA zX*--j-S#V}Tl_mJ(z~e0yKK8F)0lPCV^D!?LZ$v=+=gwaFQnqEa3Dd{e6^^B>rnI6 zBYSYndi!8McJCM!c?T}TPMm<V28RbWq5}QE)>}~lwBs238ukBzYe@Jt8;Hu#5L9M@ z*o?K9#`-2@X!yH+6e@-DQIS@l2GpV!ScAHp4H%0DQT-30j^+gFE?lwRK?QmriOIxq zk<{Odx@-BE!1`t?1uZZemC^+mgUc}*>rn&O+UE`S`CcSBCWN!_0xn1I@Nfq9;&aqb z;z)Fl2p?%N>Ii0{qsZn`(B-Q~?RYarVT*0wgL-d2$2j}}yLXDZgm-WPre*W(iKQ5e zn^66?q2}L(e*6>_z>RG3ua1A%4qeumoN(%rt(mAy<YEK{FcJ&w^Kqz*J%d_s25R0C z`+PoX!AjKYSZC{7a>&0Td!Gi~+I^_k<V(~<=THm(gqq+g#^Wv2xGrmq#|CW8L}fA; zHBTXS2Z#yOXP_?oi|U{=f6aDSjVq~dzzj?#zY6Rz<m=l!<qe&RZ-|I5nmEN>8LX`= zuL_1r6K6+m{-w_sp|eRZxI%UPHpKdU9$&znn_rOoM7GcG^Yth$@=OoblrJr>SmK%V zQdO|P?f2#8dwhP6KhK>TD9FnXjZO2rT!GN515ZYzOk#RZb@lw<;>E$>l11f}3oFX2 as+WcW?g3Gomt{Q&9T>dT71}j)eB6JhKSjj= delta 3459 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 diff --git a/searx/translations/fi/LC_MESSAGES/messages.po b/searx/translations/fi/LC_MESSAGES/messages.po index dbec358d..57b3e431 100644 --- a/searx/translations/fi/LC_MESSAGES/messages.po +++ b/searx/translations/fi/LC_MESSAGES/messages.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-13 07:36+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" "Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" "Language-Team: Finnish (http://www.transifex.com/asciimoo/searx/language/fi/)\n" "MIME-Version: 1.0\n" @@ -31,63 +31,63 @@ msgstr "pyyntöpoikkeus" msgid "unexpected crash" msgstr "odottamaton kaatuminen" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "tiedostot" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "yleiset" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musiikki" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sosiaalinen media" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "kuvat" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videot" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "uutiset" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "kartta" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "tiede" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Virheelliset asetukset, muokkaa siis asetuksia" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Virheelliset asetukset" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "hakuvirhe" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} min sitten" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} t, {minutes} min sitten" @@ -107,29 +107,28 @@ msgstr "Tilastolliset funktiot" msgid "Compute {functions} of the arguments" msgstr "Laske argumenttien {functions}" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Hakukoneen aika (s)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Sivun lataus (s)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Tulosten määrä" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Pisteet" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Pisteet per tulos" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Virheet" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(VANHENTUNUT)" msgid "This entry has been superseded by" msgstr "Tämän kohdan on korvannut" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Tästä julkaisusta ei ole yhteenvetoa." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI-uudelleenkirjoitus" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Vältä maksumuureja ohjaamalla julkaisujen avoimiin versioihin jos mahdollista" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Loputon vieritys" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Lataa automaattisesti seuraava sivu, kun nykyisen sivun loppu saavutetaan" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open Access DOI -uudelleenkirjoitus" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Vältä maksumuureja ohjaamalla julkaisujen avoimiin versioihin jos mahdollista" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Tapa" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "Nyt käytetyt hakukoneet" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Luokka" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Estä" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Nämä asetukset tallennetaan evästeisiisi. Näin Searxin ei tarvitse t #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Kyseiset evästeet palvelevat ainoastaan sinua, eikä niitä käytetä s #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "Tallenna" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Palauta oletukset" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Yleiset" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Hakukoneet" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Lisäosat" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Vastaajat" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Evästeet" @@ -710,88 +705,78 @@ msgstr "Valitse tyyli tälle teemalle" msgid "Style" msgstr "Tyyli" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI -selvitin" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Uudelleenohjaa julkaisujen open-access-versioihin kun mahdollista (vaatii liitännäisen)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Oikoreitti" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Valittu kieli" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Aikaväli" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Keskimääräinen\naika" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Enimmäisaika" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Tämä on luettelo searxin vastaajamoduuleista." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nimi" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Avainsanat" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Kuvaus" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Esimerkit" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Ohessa on lista evästeistä ja niiden arvoista, joita searx tallentaa tietokoneellesi." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Tämän luettelon avulla voit arvioida searxin läpinäkyvyyden." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Evästeen nimi" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Arvo" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Nykyisten asetusten hakuosoite" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/fil/LC_MESSAGES/messages.mo b/searx/translations/fil/LC_MESSAGES/messages.mo index f1b4e75c777f674f2729f80c7846ddf49e50c6ea..95851f77beb75721a475e1020c4f020b42e60e36 100644 GIT binary patch delta 3123 zcmYM#4NTQl7{~F$s|YHB2&Etw6-4FY1=K6#3tBj8g|Dfssk@rm)sPUxD90`G1xu!e zPB+_}m6Xjacc=Ig!=z<e!`aL<(b;B5bIrFlQFp8F&wIAm^?uGd|NlAXInO!g8t^<= z;JX$dzQgd>%)ey*U5HTa|G&*K#>7!=Kt0-nJ#ioQz^|;$*o%5A7U55*_u^@sjmfC~ z71#&Y1nWMtfkG4wn{glRz<&5lZ)4JM8V<w?%)|!NKu4_K;85zPkU7mwRABcp1s`KL zKFzH0I0*Y<4#pUtF;gfgfD)XKbL|U<Q3HLC8n_*a&HRSS$W8nFA*NCfi8aQ7X&8x9 ztk0vypKdKhx|l_n$o!^)f+ng*2W~~B?huCI2~5OR)XFc~=N+iPI+2gL$Cm;OWqDd@ zENZ2L`O3yT%)&*efVQAdg<TY)aW87(1J)y`z)qqj{sA>XJF4Fm)Jkul0=;G1Z=+J) zjnx=HcEMDUHnrE`D%==H{uTKn8kEv#!qz~^s0kbxio-D-vrrSxM8-6ws8lY;a;!l& z{)q}ajf13x4M$~aG^)K2b!LkDk$<JOj0R1-4o6`<YT%=|6Hg-_voOJ!VOWV8csDAb zCe#AHwC%0vq<$8)@@~{ZBl~j@F%dPs%SS;2OhOGX6?F~gp)#-<`IuV1^xk&V7VJjG zG@sk{7StAfhg#`b9Do<?^ShWqy&Gp?Dyx14eU%h+&CcO8yo+OTa#AoOZ=zPZ7L|dG zNOsL`)CvxwCT>AZ+=kkkbEtr?qx#=OW$qs4;((`EJ@cEFC}@CM)Zti%>bMCrajSiP z47GQys0^G&W#|HGf~(dpRR8;^v-1eGwE<LsA>?26-WZ|#A4fqGC!tP%GHTB<P%9aY z>R4pkXP^REh}yDcsQxv!y%rVV22{UBTi=5U_y8*4!&3MEq<!H>R3<K=0=b5osLMXT zg9<2sT45hHcqaBoW$HB~yJnkpKSq#(Z&87s=3r^O%cuqZjy_Fvn}P;@h>AR#-%b4z zCZX!9u@vi2E9gM&{U4}+|3;<s5uU(*kU7oqLBZ4h3+lSvwkD(o`{k#Se+@8+hT&L* zI$Y(bNb4{i-$$+ZYvg>IX4G|RM+JDz)^Fik)E}b)sCEQ1xecEjTGaaok>g-aIDEm0 zF3>QHh7MFJ!?_a5j1#qDH!5X?wqAl7U@i{9H|+E6=%D^F>bA6@GV?3yKd~#Q1wTM7 zFyN!0)JF^s-upyUgn7tSHHD~^&cPA56i4DV)ZuDDZN(YXdzVn-b=mfZsEMM8QWN(@ zy`PAB-<M87sU3r1I3CrZ5Vi7RY{40*)W@=sI_(+Qgd<Ta{TX%0Ix!r(Q4<ENVeDfT z^`58z#v+e=rig;}YB|1x>(Pyo8Nom%qB=}Pt@vfs3O$&It5AV8VK}xRLzq*jU&t=> zV*oi8<`Da=AGq_Fp!*-ihDXqlf*NQDYOf1$3>KpTsI|`<kb`VKMQ);L!$`b}>URU# zRdWxcFoBb;{wb(?pM{#ojmgY!N+{^X6{vx#P-oz6y@2(omF+`PX1>7rcn)WylY_zT zm^#!oZ9-*G2PF)~p#mF^n)n4&W<2QAwWy|`3~WOEfNVjf_%qa5IEo7JB$7pQ2B+g4 zd=@9Ov3hU4wE?w|9mvOg#FrLu1{Fv<>dbUxk$<J;4h=eu|5{_6!2we-l=fk$m5e|g zvTW3Vg{X;&tS=(JJ!Teayb9DUdKY7GC+Zr0f(p3RN&cVwG}54fE~7GW-M-j~y62(U z!GQ*%GLwVqH^n*|dr@DC>R*XHu?98Kd-nMUsPT58-aC{=VIGBMbYb67!NW5dm7>L? z{AXkSifHVNJMKRpUmD_Ho3N!vuFL6iJ96?1a>k8x<+@za)2BISE~)lbddpWjpYv2L zDRAVva`K(7TxV{cBgb8km)|%cIVrQGylsD(*D<GU@5&mlV|=BzYLRF03eU<{*Lb{D rh0Dr3-q*7imzPcSmnM%3332;BOj*#QacFv%e?rEw5Pxyz;i&%r>-S2? delta 3401 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 Y^Y8foCoxy{z8F`j@4r(!oU_~YCtyUFIRF3v diff --git a/searx/translations/fil/LC_MESSAGES/messages.po b/searx/translations/fil/LC_MESSAGES/messages.po index 46006196..ca50d582 100644 --- a/searx/translations/fil/LC_MESSAGES/messages.po +++ b/searx/translations/fil/LC_MESSAGES/messages.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-02-18 04:45+0000\n" -"Last-Translator: gr01d\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Filipino (http://www.transifex.com/asciimoo/searx/language/fil/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +32,63 @@ msgstr "request exception" msgid "unexpected crash" msgstr "hindi inaasahan na crash" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "file" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "pangkalahatan" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musika" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "social media" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "larawan" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "bidyo" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "balita" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "agham" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Maling settings, paki ayos ang preferences" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Maling settings" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "nagkaproblema sa paghahanap" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} na minuto ang nakalipas" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} oras at {minutes} na minto ang nakalipas" @@ -108,29 +108,28 @@ msgstr "Estatistika ng mga tungkulin" msgid "Compute {functions} of the arguments" msgstr "Tuusin ang {functions} ng pangangatuwiran" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Oras ng engine (segundo)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Oras ng pagkarga ng pahina (segundo)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Bilang ng resulta" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Iskor" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Iskor ng bawat resulta" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Kamalian" @@ -142,9 +141,15 @@ msgstr "{title}&nbsp;(LUMA)" msgid "This entry has been superseded by" msgstr "Ang tala na ito ay ipinagpaliban ng" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Walang nakita na abstract para sa pahahayag na ito." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Iwasan ang paywall sa pag-redirect sa open-access na bersyon ng pahahayagan kapagmakukuha" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -158,16 +163,6 @@ msgstr "Walang hanggan na pag-scroll" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Awtomatiko na ikarga ang sumunod na pahina kapag nakarating na sa dulo ng kasalukuyang pahina" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open Access DOI rewrite" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Iwasan ang paywall sa pag-redirect sa open-access na bersyon ng pahahayagan kapagmakukuha" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +325,8 @@ msgstr "Paraan" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +398,8 @@ msgstr "Ang ginagamit natin na search engines" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +414,8 @@ msgstr "Uri" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +433,7 @@ msgstr "Harangan" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +443,7 @@ msgstr "Ang settings ay nakalagay sa cookies upang hindi kami makakuha ng datos #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +453,7 @@ msgstr "Hindi namin ginagamit ang cookies para i-track ka, ito ay para maging ma #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +461,14 @@ msgstr "i-save" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "I-reset ang defaults" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +639,23 @@ msgid "General" msgstr "Pangkalahatan" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Engines" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plugins" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Mga pangsagot" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -711,88 +706,78 @@ msgstr "Pumili ng estilo para sa tema na ito" msgid "Style" msgstr "Estilo" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI resolver" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Redirect to open-access versions of publications when available (plugin required)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Shortcut" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Piniling wika" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Agwat ng oras" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Gitnang oras" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Ang max na oras" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Ito ang listahan ng instant answering modules ni searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Pangalan" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Mga keyword" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Paglalarawan" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Mga halimbawa" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Ito ang listahan ng cookies at ang kanilang value na inilagay ni searx sa iyon kompyuter." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Dahil sa listahan na iyon, maaari mong makita ang pagiging transparent ni searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Pangalan ng cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Value" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Search URL ng kasalukuyan na naka-save sa preferences" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/fr/LC_MESSAGES/messages.mo b/searx/translations/fr/LC_MESSAGES/messages.mo index 7fd3ee8917eef0071242245b8b089ba7741b5278..51d1006e9eb4317abe4a7d16cbb7dd416b034081 100644 GIT binary patch delta 3174 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 b2r1C!+!_{GHzqnHaAfRHA%Vz@!ifI>^~P1E delta 3571 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 R)hce#n^S%Yn;K@1`#0rk+}Z#D diff --git a/searx/translations/fr/LC_MESSAGES/messages.po b/searx/translations/fr/LC_MESSAGES/messages.po index 4c076ddb..4d57cad7 100644 --- a/searx/translations/fr/LC_MESSAGES/messages.po +++ b/searx/translations/fr/LC_MESSAGES/messages.po @@ -7,6 +7,7 @@ # Benjamin Sonntag <benjamin@sonntag.fr>, 2014 # Cqoicebordel <david.barouh@wanadoo.fr>, 2014 # Cqoicebordel <david.barouh@wanadoo.fr>, 2014-2017 +# Étienne Deparis <etienne@depar.is>, 2019 # FIRST AUTHOR <EMAIL@ADDRESS>, 2014 # Noémi Ványi <sitbackandwait@gmail.com>, 2017 # rike, 2014 @@ -15,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-04-03 08:18+0000\n" -"Last-Translator: Alexandre Flament <alex@al-f.net>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 18:27+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: French (http://www.transifex.com/asciimoo/searx/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,63 +39,63 @@ msgstr "erreur de requête" msgid "unexpected crash" msgstr "crash inattendu" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "fichiers" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "général" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musique" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "réseaux sociaux" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "images" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "vidéos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "informatique" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "actualités" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "carte" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "science" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Paramètres non valides, veuillez éditer vos préférences" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Paramètres non valides" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "erreur de recherche" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "il y a {minutes} minute(s)" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "il y a {hours} heure(s), {minutes} minute(s)" @@ -114,29 +115,28 @@ msgstr "Fonctions statistiques" msgid "Compute {functions} of the arguments" msgstr "Calcule les {functions} des arguments" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Temps du moteur (sec)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Chargement de la page (sec)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Nombre de résultats" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Score" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Score par résultat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Erreur" @@ -148,9 +148,15 @@ msgstr "{titre}&nbsp;(OBSOLETE)" msgid "This entry has been superseded by" msgstr "Cet item a été remplacé par" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Pas de résumé disponible pour cette publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Utiliser DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Contourne les verrous payants de certaines publications scientifiques en redirigeant vers la version ouverte de ces papiers si elle est disponible." #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -164,16 +170,6 @@ msgstr "Défilement infini" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Charge automatiquement la page suivante quand vous arriver en bas de la page" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Utiliser Open Access DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Contourne les verrous payants de certaines publications scientifiques en redirigeant vers la version ouverte de ces papiers si elle est disponible." - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -336,8 +332,8 @@ msgstr "Méthode" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -409,8 +405,8 @@ msgstr "Moteurs de recherche actuellement utilisés" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -425,8 +421,8 @@ msgstr "Catégorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -444,7 +440,7 @@ msgstr "Bloquer" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -454,7 +450,7 @@ msgstr "Ces paramètres sont stockés dans vos cookies ; ceci nous permet de ne #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -464,7 +460,7 @@ msgstr "Ces cookies existent pour votre confort d'utilisation, nous ne les utili #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -472,14 +468,14 @@ msgstr "enregistrer" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Remettre les valeurs par défaut" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -650,23 +646,23 @@ msgid "General" msgstr "Général" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Moteurs" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plugins" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Réponses instantanées" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -717,88 +713,78 @@ msgstr "Choisir un style pour ce thème" msgid "Style" msgstr "Style" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Résolveur Open Access DOI" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Rediriger vers les versions des articles en libre accès lorsqu'elles sont disponibles (nécessite un plugin)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Raccourcis" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Langue choisie" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Espace temporel" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Temps moy." -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Temps max" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Voici la liste des module de searx produisant une réponse instantanée." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nom" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Mots clés" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Description" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exemples" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "C'est une liste de cookies et de leurs valeurs que searx enregistre sur votre ordinateur." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Avec cette liste, vous pouvez juger de la transparence de searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nom du cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valeur" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Adresse de recherche des réglages actuels" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/gl/LC_MESSAGES/messages.mo b/searx/translations/gl/LC_MESSAGES/messages.mo index 30d7b0dd60daffc83ce45c5cb4d7073d7ba4515a..e8724634ee26e4b746cbb3409af85cb6d8c2f046 100644 GIT binary patch delta 3133 zcmYM$d2EzL7{~Ehwimr<fr1t&FJ}wwmhGx6<q$<^#DhWsjY`E@mqP+I1!|1NHz<cu zqDUzO3*nIU57T0Gg_L>}wV=flP$IQ78jwmL5+sOM)$fm;#HRE!Gdu4*&pb2lh7TX9 zFLgV6$J82rn)o-6e;u*v{r|H)$(VGyJ5V3Ji9K;Y#$${16HKQ66;8tr)V!e#&cQs? z^Q$ox*GK!V*+L_Mf$bQ^F!sT_Q;Zpc^Kk&K#vI&%TIh)Na~w|pI1<xbLnY=V${<X_ z7#xKxZSt`<PQWzd8Z(229-NO#WC@nyit7_t7`5OT)VvF*g|4A06VogDc|ROXKMNha z72|NebpdMqrPeA;CBAWK^uw1>fx_ru1FD2yq8GnI&Fer_;EMhH4^(2_G-GI*UZ?~I zqjs8y{F=%9$;X+Phc3FxsGf%0kBRsJDsY?i1S+x9sK7s=0$e~n_d9B*9?GFa6Hw#H zsM2R(6=ou*V_vc2JJYFuB?EgIQ0Dzfm!`=^EmVkFXcG3oA{>F!Q2{HE*rp0O4YM9A za0>=8j*FzkZ$)ja2vw<BcD%F?_1EPIF`&}EfC{`D$6y$>@VB@X&mzC3x-UuMM%2Ph zsDwU7ZQ!UK??4~@F4WF5GNKzDhBwl`$)%wH_o5b<hgzT<^*XLZRbUhHYwGx;d2gYP zpb1&q9Jb@_s3ZCjwbL%l#4GmmRCYO%eg@7)cOs34Xlz8iZWpl_Q~Mh;79U1cq!zW) zZKw+DMXGF?P#gFR6}TN0_y^R{Ttp?@je0)jhG^w_VSxB1NW;$ukE0f-LtUEPs0Uxi z9Bi<kpG2K$2dV;RQ5Cw33h<{jmip@XG}PVckJ?BkD#5Jlea?S04F%3e1-=<|`wLNL zb_Z%FvrrE{YR8wM5~)TV*&5XITkLopD#6!K&o$cqd#HrlFj4RSaW(L?o$xa%p{uAw z{z3(c<sh|S3M!#Y)DCm81Ouo_twpMB_F0eMyB=dYQHj3F#Zm(G=qkW|8nOlT8n&T! zehTMc7itF+`958UccK<(MBRmhsD!^jZR7+tV<!&AZCTMTw1YT|e!KObEY4p$7|JZ2 z%_tm-KGfx!i3(hf*;s)p@m5p?wj;-F8c>NGLCtTsp2K<ce?`3|#ZENw$50zw>bTMO z@M#7#p%zu@H*h4rjic}sDp4=5h)hIPARQGr6II%LbnrG*Maob+UWiKUMbt*OqT<!L zG&Hdhbp!`cM{o#v6V2DCOuJBluA(07NtyI|W})7mxv1B09qNwMq5|%*<NIv?ebffq zQ1RSjG!*cAJK=(za1E8|zo?yh*@jA=j5U~!+)EQiecpm=@l#ZSGloaMu*%U(|0&c) zS78r)4kzgSUq?e3eS}KnC~Bwe_zeDn_u$eI(Ttl>rEWz%cM^5!Ix&dnk&AAIaDGZ` zBC0~uP!*}dcko#pKztL-Hl~1q*{IU3wQfQ!v=ddTX3WP{)RA04CG5$Go_RVd@c=4N zk?oftIhh3*hZ|6FYA}iTW)}@DSdS`cGsfdLs0TVw3!XvVD02xDFom0`{~7heG7R7% z+>D%>=|<gtXS6X>a24t(4x#Q!E4rF^f`)eT8|v)ha-(N80DICOg1U^ksKlmVBHo1# z&c(@Ch2!u5#^NQ^2Cky!|BXJ3&x@{mOCI&t#K{ckeV&FY&3&j0%dM5Dg;t|>@Vs>c zD)EgNgS$`(hEeM_pw^9`D%^^?JI7J;&gM~nO}NN_zHquxU!7^Bsen1CiDOU+1yS>h ztoLIw{YCckmDV-Z8cgByJ*Y}HqAJmhTIX;94Fx`l3UnTImY0!ZHnX{LN~qepIX`kV zskTQ_@$J){%FvUQi&umqrKt~kYtE%NM~?M=z!RzN`*M81@AC(pg2M3y<8u80zdvzi zv9BalwRrjBie<j3Wh+ACoq)ff(B}{M0%INj*zx{xkx2u69#1f`WKf(ptt1p$Ue4Mp dE6bdzgo-@jbbD*U!%s(=MznY$?b!<x{sSMDNZ0@X delta 3432 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 Ip}aZwFF>@XSpWb4 diff --git a/searx/translations/gl/LC_MESSAGES/messages.po b/searx/translations/gl/LC_MESSAGES/messages.po index 3e1e2230..4634ed1b 100644 --- a/searx/translations/gl/LC_MESSAGES/messages.po +++ b/searx/translations/gl/LC_MESSAGES/messages.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PROJECT project. # # Translators: -# Xosé M. Lamas <correo@xmgz.eu>, 2018 +# Xosé M. Lamas <correo@xmgz.eu>, 2018-2019 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-04-20 11:00+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-26 06:08+0000\n" "Last-Translator: Xosé M. Lamas <correo@xmgz.eu>\n" "Language-Team: Galician (http://www.transifex.com/asciimoo/searx/language/gl/)\n" "MIME-Version: 1.0\n" @@ -31,63 +31,63 @@ msgstr "excepción na petición" msgid "unexpected crash" msgstr "fallo non agardado" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "ficheiros" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "xeral" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "música" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "Medios sociais" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "imaxes" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "vídeos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "TIC" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "novas" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "ciencia" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Axustes non válidos, por favor edite a configuración" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Axustes non válidos" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "fallo na busca" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "hai {minutes} minuto(s)" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "hai {hours} hora(s), {minutes} minuto(s)" @@ -107,29 +107,28 @@ msgstr "Funcións de estatística" msgid "Compute {functions} of the arguments" msgstr "Calcule {functions} dos argumentos" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Tempo de busca (sec)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Cargou en (seg)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Número de resultados" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Puntuacións" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Puntuacións por resultado" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Fallos" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(OBSOLETO)" msgid "This entry has been superseded by" msgstr "Esta entrada foi proporcionada por" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Non hai dispoñible un extracto para esta publicación." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Reescritura DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evitar muros de pago redirecciionando a versións públicas das publicacións cando estén dispoñibles" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Desplazamento infinito" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Cargar automáticamente a seguinte páxina ao desplazarse ao fondo da páxina actual" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Reescritura Open Access DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Evitar muros de pago redirecciionando a versións públicas das publicacións cando estén dispoñibles" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Método" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "Motores de busca utilizados actualmente" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Categoría" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Bloquear" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Estos axustes gárdanse en testemuños, esto permítenos non ter que gar #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Estos testemuños son para a súa conveniencia, non utilizamos estos tes #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "gardar" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Restablecer" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Xeral" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motores" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Engadidos" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Respostas" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Testemuños" @@ -710,88 +705,78 @@ msgstr "Escolla o estilo para este decorado" msgid "Style" msgstr "Estilo" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Resolutor Open Access DOI" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Redireccionar a versións abertas das publicacións cando estén dispoñibles (require o engadido)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Atallo" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Idioma seleccionado" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Rango temporal" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Tempo medio" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Tempo máx." -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Este é o listado dos módulos de respostas instantáneas de searx" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nome" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Palabras chave" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descrición" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exemplos" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Este é o listados dos testemuños e os seus valores que searx almacena na súa computadora." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Con esta lista vostede pode comprobar a transparencia de searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nome do testemuño" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valor" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL de busca dos axustes gardados actualmente." -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/he/LC_MESSAGES/messages.mo b/searx/translations/he/LC_MESSAGES/messages.mo index c034025007ab2d254577021e4d39cefc426ce322..3f7f8b4b1228846824d8485480172db23af3a3a9 100644 GIT binary patch delta 3876 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 delta 4138 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 S)H9#Cv{wSB$Nq;)YyJU_PN@|D diff --git a/searx/translations/he/LC_MESSAGES/messages.po b/searx/translations/he/LC_MESSAGES/messages.po index a7d0bcc3..c2e851d1 100644 --- a/searx/translations/he/LC_MESSAGES/messages.po +++ b/searx/translations/he/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # # Translators: # GenghisKhan <genghiskhan@gmx.ca>, 2015 -# GenghisKhan <genghiskhan@gmx.ca>, 2015-2017 +# GenghisKhan <genghiskhan@gmx.ca>, 2015-2017,2019 # pointhi, 2014 # rike, 2014 # stf <stefan.marsiske@gmail.com>, 2014 @@ -12,20 +12,20 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-01 20:31+0000\n" -"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-03-17 10:52+0000\n" +"Last-Translator: GenghisKhan <genghiskhan@gmx.ca>\n" "Language-Team: Hebrew (http://www.transifex.com/asciimoo/searx/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.3.4\n" "Language: he\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #: searx/search.py:137 searx/search.py:182 msgid "timeout" -msgstr "" +msgstr "פקיעת זמן" #: searx/search.py:144 msgid "request exception" @@ -35,63 +35,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "קבצים" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "כללי" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "מוזיקה" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "מדיה חברתית" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "תמונות" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "סרטונים" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "חדשות" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "מפות" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "מדע" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "הגדרות שגויות, אנא ערוך את ההעדפות שלך" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" -msgstr "" +msgstr "הגדרה לא חוקית" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "שגיאת חיפוש" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "לפני {minutes} דקות" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "לפני {hours} שעות, {minutes} דקות" @@ -109,31 +109,30 @@ msgstr "פונקציות סטטיסטיקה" #: searx/answerers/statistics/answerer.py:54 msgid "Compute {functions} of the arguments" -msgstr "" +msgstr "מחשב {functions} מתוך הארגומנטים" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "זמן מנוע (שניות)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "עומס עמוד (שניות)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "מספר תוצאות" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "דירוג" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "דירוג לכל תוצאה" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "שגיאות" @@ -145,9 +144,15 @@ msgstr "" msgid "This entry has been superseded by" msgstr "רשומה זו הוחלפה על ידי" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "שכתוב DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "הימנעות מקירות-תשלום (paywalls) על ידי הכוונה מחודשת לגרסאות כניסה-חופשית של כתבי-עת כאשר זמינות" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -161,16 +166,6 @@ msgstr "גלילה אינסופית" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "טען אוטומטית עמוד הלאה כאשר גוללים לתחתית של עמוד נוכחי" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "הימנעות מקירות-תשלום (paywalls) על ידי הכוונה מחודשת לגרסאות כניסה-חופשית של כתבי-עת כאשר זמינות" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -333,8 +328,8 @@ msgstr "שיטה" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -406,8 +401,8 @@ msgstr "מנועי חיפוש בשימוש עתה" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -422,8 +417,8 @@ msgstr "קטגוריה" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -441,7 +436,7 @@ msgstr "חסום" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -451,7 +446,7 @@ msgstr "הגדרות אלו מאוחסנות בתוך העוגיות שלך, א #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -461,7 +456,7 @@ msgstr "עוגיות אלו משרתות את נוחותך הבלעדית, אנ #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -469,14 +464,14 @@ msgstr "שמור" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "אפס ברירות מחדל" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -634,11 +629,11 @@ msgstr "דרך פרוקסי" #: searx/templates/oscar/macros.html:92 msgid "supported" -msgstr "" +msgstr "נתמך" #: searx/templates/oscar/macros.html:96 msgid "not supported" -msgstr "" +msgstr "לא נתמך" #: searx/templates/oscar/preferences.html:13 #: searx/templates/oscar/preferences.html:22 @@ -647,23 +642,23 @@ msgid "General" msgstr "כללי" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "מנועים" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "תוספים" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "תשובות" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "עוגיות" @@ -714,88 +709,78 @@ msgstr "בחירת סגנון עבור עיצוב זה" msgid "Style" msgstr "סגנון" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "קיצור דרך" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" -msgstr "" +msgstr "שפה נבחרת" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "טווח זמן" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "זמן ממוצע" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "זמן מירבי" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "שם" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "מילות מפתח" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "תיאור" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "דוגמאות" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "זוהי רשימה של עוגיות וערכיהן אשר searx מאחסנת על המחשב שלך." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "בעזרת רשימה זו, באפשרותך לגשת אל searx transparency." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "שם עוגייה" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "ערך" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" -msgstr "" +msgstr "כתובת חיפוש של ההעדפות השמורות כעת" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." @@ -808,12 +793,12 @@ msgstr "תוצאות חיפוש" #: searx/templates/oscar/results.html:21 #: searx/templates/simple/results.html:84 msgid "Try searching for:" -msgstr "" +msgstr "נסו לחפש:" #: searx/templates/oscar/results.html:100 #: searx/templates/simple/results.html:25 msgid "Engines cannot retrieve results" -msgstr "" +msgstr "מנועים לא מסוגלים לאחזר תוצאות" #: searx/templates/oscar/results.html:131 msgid "Links" @@ -878,12 +863,12 @@ msgstr "אין כעת מידע זמין. " #: searx/templates/oscar/messages/no_results.html:4 #: searx/templates/simple/messages/no_results.html:4 msgid "Engines cannot retrieve results." -msgstr "" +msgstr "מנועים לא מסוגלים לאחזר תוצאות." #: searx/templates/oscar/messages/no_results.html:10 #: searx/templates/simple/messages/no_results.html:10 msgid "Please, try again later or find another searx instance." -msgstr "" +msgstr "בבקשה, נסו מאוחר יותר. לחלופין, ניתן להיעזר בשירות searx אחר." #: searx/templates/oscar/messages/no_results.html:14 #: searx/templates/simple/messages/no_results.html:14 @@ -1002,16 +987,16 @@ msgstr "טען עוד..." #: searx/templates/simple/base.html:31 msgid "No item found" -msgstr "" +msgstr "לא נמצא פריט" #: searx/templates/simple/preferences.html:89 msgid "Supports selected language" -msgstr "" +msgstr "תומך בשפה נבחרת" #: searx/templates/simple/preferences.html:118 msgid "User interface" -msgstr "" +msgstr "ממשק משתמש" #: searx/templates/simple/preferences.html:154 msgid "Privacy" -msgstr "" +msgstr "פרטיות" diff --git a/searx/translations/hr/LC_MESSAGES/messages.mo b/searx/translations/hr/LC_MESSAGES/messages.mo index 9e232a1513ca556f792560d46aee8630525a237b..47541917b9b78873adc92b0433411f811e758f6b 100644 GIT binary patch delta 3119 zcmYM$3rv+|9LMqJARq!>K*3U!1L6ULLx+PC@3(2?Dp4xSHK&Jib}~c-C71Io=e!LC zGpc39Xw!0eDUV=Y(GV#sFVoEBb;}FJoPevy+xq@G&z4g@@B6&(`+xrb|MR>rzUTXO zM&NRMc$MML9{wfq?`(w5{{K@RV@w>U>rj`fu?ud-&bZUM2V*&}$BFn8>b`geU&JKT z^9!&WmW9p(W+ewv43y($tiql+qN_0}n2&vN0cPMjRG>QR0ZilkJ7i9C6P4Iq?1%R; z93N-ac<hfoFb88yz?ktID1pg117Ef`)S?0%Lj^v8<Ys<Db>ybK{tqT|?&xle6H_n} z$6F_%;!m+oM;<YSn8^HQ0SB6BH9D~p)w*x66Yj@EtVdOT&R)NWO6&&m*R=CP35HRg zD(#M{G?gFOn2T9hh)Spe13LJKgJ`TlO}x!ohf3@)YU1xv6P!RjcL7!DHB_Q4cKi;i z<sG;fA0n$@N@<(Mm*YZQ6-WP-`8@{I(rD6Fpd{1;P7K3AI1sZ?6BZyb&2&^N-^5~E zf_Zogm3RspNreqUb!sqbd@O3uJkyi@tF=W8XyO(4B(6pU{uV#PCgiV~*~^%8EI|d{ zgi2@&s(|fwydK@0A4gT*fhsgIfsKfXsQ8`$2MRC-72qk<YxoMP1B;NqW*I+p-}|T~ z*o4G1U)u45s3kgzs`NPa!E^R{8@f2}z!xx?s$a!G2?u)3PGUZ`;Se0xJJgZ4QI#%5 zbzl|JU9$;Q!4A~K2T>C@pqAz&D&ecB=Wn7q*N$H7^BC1Lzj>Ym1z3jK94k-{uE7kf zwAc5d)~+7afhJUk&Y~u`WNk)0e;2iP?xB|UAu2%!{nvR{jL`cZ$AKp9joST5s5Nt; zDjAG=aH1Wbib`ZAYRTrHo?l|em!T3|iF$6MJ+DS3ybYCbt<?K}*xv9XsuSl?iCjia z)NHS}q7r(Ds<0aiT!0CvPQ8J2*KDwE#aLQ!1eNFsHkRUDMJ-`7{`dahw->_sUMfH= zDsUR=#xfj<Yf%+6q1OHsD&Z@rimu~V*ox$6KItE_4#~lsLNB(U66v2z|J6EIvM~cN z6IEe8D&Q>SUNaXp(OOg`m8cefj(UElJ>QLmoF75mm*xz`8G?#C4pmSAQnQ)u41{i2 z&VY-7b(oI3QI%dqWqRG7-$n)a3we`F7hau#n2cJoiI|1?s6Dh4wb|C9I=ddVbX!n+ zV|&0J>_r7^L{)YH)#7H<Yxg&1VoWMuGt5I(<U`%J(E6^m(prrwU<WF}I@EKAQH2Cf zbD)f_p)zejRelH6@(ygoN2sMZ$~x)(-?0Y&Kvi0v7E0t}RApN+9BWZaxexVSX+&Lr zfb5BYiK2hJnq~kl!jU){ccCU~LnYK<b+|$Sqj4zX3FySh7>UI=0vDq;-7egWKcoI1 zQNsFWV+AJa{XfKkTJ#I*lX?kNQ9Ek4>fKW7a#7buAsgHjpc0>tk+=r66qTq>Riok_ zLfv-^)%q*QN7l5We*c)xET{tX#c)hTwJaU=px2H+i*(IQL4CUy;Ve9j3g~?z^lhJn zG|PO7ov;BlaT6-uc~pXJ7*It$*jdpy5LJN(wHe1?48DY2(1!{<7sufSqzH2cRloyl zCtd-?i$+~fz$hGzit{vTo~c>%KbC`845;NrsPlI)0#{=gu18g}0b{VrUavt-`~|Aj zJ5am24mH6KsLIcy61Zirx1;8ZaMOR?(9<0Xl!gkFiE33YD&TXd`(~m7&qw_}57_ex z)CcD?ROMfzD&3D=u@UwB8S6ES<^0bS4)pstESq-YG<4wys88s@?BMa3+YuXY#O({7 zj-T!bF6~v(+3Rt8@|-!thUW~;^msj<=qdT`g4v7xCH~@h?g_rq*~6V)PtGv6$Lsdy zI&<=d=MLLADyjE?$;Ay@i~P=M4K?$Y_?;t5{H2Ay*XH`>y<X<?myVrN<nzB3EK8c; aaO4FK^m`N;Y)%Vv1T$RQ9KoCnU(~<-{Z0h{ delta 3528 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 B(A)q3 diff --git a/searx/translations/hr/LC_MESSAGES/messages.po b/searx/translations/hr/LC_MESSAGES/messages.po index 104876cd..94c5c745 100644 --- a/searx/translations/hr/LC_MESSAGES/messages.po +++ b/searx/translations/hr/LC_MESSAGES/messages.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-10 18:43+0000\n" -"Last-Translator: Dino Dugandžija <ddugandz@tutanota.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Croatian (http://www.transifex.com/asciimoo/searx/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,63 +31,63 @@ msgstr "zatraži iznimku" msgid "unexpected crash" msgstr "neočekivani pad" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "datoteke" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "općenito" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "glazba" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "društveni mediji" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "slike" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "video zapisi" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "vijesti" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "karta" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "znanost" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Nevažeće postavke, uredite svoje postavke" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Nevažeće postavke" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "greška u pretraživanju" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} minutu(minute, minuta) prije" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} sat(sata, sati), {minutes} minutu(minute, minuta) prije" @@ -107,29 +107,28 @@ msgstr "Funkcije statistike" msgid "Compute {functions} of the arguments" msgstr "Izračunajte {functions} argumenata" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Vrijeme pretraživanja (sek)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Učitavanje stranice (sek)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Broj rezultata" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Pogodci" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Pogodci po rezultatu" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Greške" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(ZASTARJELO)" msgid "This entry has been superseded by" msgstr "Ovaj je unos zamijenio" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Nijedan sažetak nije dostupan za ovu objavu." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Izbjegnite plaćanje u slučaju dostupnosti besplatne objave" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Beskonačno pomicanje" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Automatski učitajte sljedeću stranicu kada se pomaknete do dna trenutne stranice" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Otvoreni pristup DOI prijepisa" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Izbjegnite plaćanje u slučaju dostupnosti besplatne objave" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Metoda" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "Trenutno korištene tražilice" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Kategorija" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Blokiraj" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Ove postavke su pohranjene u Vašim kolačićima, što omogućuje da ne #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Ovi kolačići služe Vašoj pogodnosti, ne upotrebljavamo te kolačiće #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "spremi" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Vraćanje zadanih postavki" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Općenito" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Tražilice" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Dodaci" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Davatelji odgovora" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Kolačići" @@ -710,88 +705,78 @@ msgstr "Odaberite stil za ovu temu" msgid "Style" msgstr "Stil" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Otvoreni pristup DOI rješenja" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Preusmjeri na verzije izdanja otvorenog pristupa kada je isto dostupno (potreban je dodatak)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Prečac" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Odabrani jezik" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Vremenski raspon" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Prosječno vrijeme" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Maksimalno vrijeme" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Ovo je popis searx modula za odgovore" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Naziv" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Ključne riječi" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Opis" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Primjeri" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Ovo je popis kolačića i njihovih vrijednosti koje pohranjuju na Vašem računalu." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "S tim popisom možete procijeniti transparentnost pretraživanja." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Naziv kolačića" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Vrijednost" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Pretraži URL adresu trenutno spremljenih postavki" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/hu/LC_MESSAGES/messages.mo b/searx/translations/hu/LC_MESSAGES/messages.mo index 392dc99dffeb2e51f5207b541abf8f9346edede8..c8fbd03a0d92008f0e1f19befb8c2c43b0427eff 100644 GIT binary patch delta 3145 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 delta 3440 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 diff --git a/searx/translations/hu/LC_MESSAGES/messages.po b/searx/translations/hu/LC_MESSAGES/messages.po index 58383cd2..8a29dcf6 100644 --- a/searx/translations/hu/LC_MESSAGES/messages.po +++ b/searx/translations/hu/LC_MESSAGES/messages.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-03 11:14+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" "Last-Translator: Adam Tauber <asciimoo@gmail.com>\n" "Language-Team: Hungarian (http://www.transifex.com/asciimoo/searx/language/hu/)\n" "MIME-Version: 1.0\n" @@ -34,63 +34,63 @@ msgstr "kérés hiba" msgid "unexpected crash" msgstr "nem várt hiba" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "fájlok" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "általános" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "zene" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "közösségi média" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "képek" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videók" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "hírek" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "térkép" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "tudomány" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Érvénytelen beállítások" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "érvénytelen beállítások" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "keresési hiba" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} perce" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} óra, {minutes} perce" @@ -110,29 +110,28 @@ msgstr "Statisztikai függvények" msgid "Compute {functions} of the arguments" msgstr "{functions} függvények alkalmazása az argumentumokon" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Keresési idő (másodperc)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Válaszidők (sec)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Találatok száma" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Pontszámok" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Pontszámok találatonként" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Hibák" @@ -144,9 +143,15 @@ msgstr "{title}&nbsp;(ELAVULT)" msgid "This entry has been superseded by" msgstr "Ezt a bejegyzést törölte:" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Nem elérhető absztrakt a publikációhoz." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Szabad publikációs oldalak" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Publikácós linkeknél szabad forrás használat, amennyiben lehetséges" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -160,16 +165,6 @@ msgstr "Végtelenített találatok" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "További találatok automatikus betöltése" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Szabad DOI használat" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Publikácós linkeknél szabad forrás használat, amennyiben lehetséges" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -332,8 +327,8 @@ msgstr "Method" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -405,8 +400,8 @@ msgstr "Jelenleg használt keresők" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -421,8 +416,8 @@ msgstr "Kategória" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -440,7 +435,7 @@ msgstr "Tiltás" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -450,7 +445,7 @@ msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak." #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -460,7 +455,7 @@ msgstr "Ezek a cookie-k csak kényelmi funkciókat látnak el, nem használjuk a #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -468,14 +463,14 @@ msgstr "mentés" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Alapbeállítások visszaállítása" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -646,23 +641,23 @@ msgid "General" msgstr "Általános" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Keresőmotorok" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Pluginek" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Válaszok" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Sütik" @@ -713,88 +708,78 @@ msgstr "Válassz megjelenést ehhez a témához" msgid "Style" msgstr "Megjelenés" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Szabad DOI feloldó" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Átirányítás a publikáció szabadon elérhető változatára (plugin szükséges)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Rövidítés" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Kiválasztott nyelv" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Idő szűrés" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Átlag idő" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Maximális idő" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Az alábbi lista tartalmazza searx instant válaszoló moduljait." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Név" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Kulcsszavak" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Leírás" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Példák" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Searx által használt sütik listája." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Ez a lista a kereső transzparenciáját hivatott megmutatni." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Süti név" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Érték" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Keresési URL a beállítások alapján" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/ia/LC_MESSAGES/messages.mo b/searx/translations/ia/LC_MESSAGES/messages.mo index 3536ca6514f34c975cf531dff1a81359486463f6..bc33d9b46e71f9052c268c5a8cd35570f7d1dff9 100644 GIT binary patch delta 2159 zcma*mdx%t39Ki82uIsulZLM5$%{}X5n|9r8bcJoV@KFdp771lDdnl(nXWR>S?;Y;F zGbmIek`(<R<j^1WSEPh)5axi7{G<Nx5eQq6NRU0$%AmwQWT~{G?{DW);a|ZppL5Q= z=XZX;-<dhM?dbL+mugGrQ%Zd^SE>7yQe*R!s>joKH;&_UyppW{jLpm^a1++tU!6aR z4)ZKd!%uJ~eu}mDElS)U@C4q#`FLo)Dyen`=a?<PYxp2Guvmx7Q35=Q^87Kp3vKee zh>MuNg!0}2l!FiBY&?mx@H1@0tBE&og!%3El2Z3D$m(jPyHF0;gA$;OZ8(OK&{<65 zI7*_wqEy_`QGK39=~xEk-~p6)L&!%x$Ctz@;X-^x29oi6Sc9if4*m$GqKnvomrw#; zOT2|m%$sS;y*L-=U<Oy=I_$>RP_FD4&cM?s34MW5c<FlvlECjMnbnh)+*J$8hPK2m zl;;CjgR4<0U4znrjd%!$Q4;+NrGOUh=K!{%oO250;Pc3pl+<?&B)~5y0dHa-{*kO_ z7FVyJA0_Z++=n?_hZ87wyRx%d=?0X}Y{eFN5BqT^^1D+<uolO08Rx4D4CL2e_W*6j z4wO5;j6L`#N-Mk5)edYyY58`Pg9<1K??LI<vE=y~BscX{GEeb?nZ~>o<=-_QyE$Ji zV^ELVk_RI=o%stWE!&IIvNw|TF_a1_C<&azc07x6z>mmBUFT~Hwst9HFhFiaeU2M& z0!u3xtfssg+>KJ%%h-x<p&WcPSwDwz@YmRgSCQta8z>3SUQ$h<9i{S4d<2K^DSQ=W z-(_sT>r3drZ2XM{x};L{TMp>LI?SNl;ln7cU60bbt;u{8Cp(q67p0JWDEs!K#5;)6 znXzR40ZM0&_t1X{e2xX#a1opECv3(EtjC((YG;~Jo-af>ID_(c8bH~<KJi(c!Q4kl z_{C)YI!fHPQ9AMdS_aaJ50e+pBrjY*348@5^PBiI-a@WT4L?-<(eB2{tE#-&cxGn9 zKu=#rFI_&E=`WA8b+^VNwh;A>TF(nsW!)$Yg19#bca-04yPfK<yfZI7^@$;?M}s&B zZKVCc*ZCl}MWch~W9!>cvt00E69<v{pD$LXcg#x7c|7oQ?v6reVmI&!?fOOIxmjE3 zT5vp7DtMmNZfr+&90o-bTeVS^)W#q-gF4Dv$IZEp3AJ-an7j?6z$a3~CW30>3~w6J zS*tf$$A*rXEP%AL1*Y<NGDOz;vCB3pu{u8}PfQeXfQ=lJ&ojtMjoNrRa%JFnuH*cB z#y@SSWEZVSt!01C6oYUH`y;c<$oYOy40PTrL^?Jh^PpOrF8D-^Z7AtRv5`FF^~joV zXZg#;>6Xb>{Wrl%U1#HzzB|gwT2JRgn<J2fAXO(W7;lsr!Hg$eEU!$vvxZ!MN5K%^ zvyL?1#FZ22JyW{YR5J~$Z3+n%461eP4s*tFEjf9*KwE>b@=W*jRFkixLOvga(z5dA wo|RJ#rIh#g9A3(T;_i56b<Xv<N0oEwG+QM(tDMk8BibD$-=Z6_J=^>7-!j6I;{X5v delta 1710 zcmXZbU2Icj9LMpe>=oKM)`92-qinEsmNv698$vSX4PXdp2#GH-xYC}nCWm&Mo-#1e z;x)cpoDlIs7YtiAZd6VXqKPhw5WpKRG#UtEP^ZrL0w%j42EV`bBuzih%Xyyv|M@@X zoPF{1z7KBHRW65&x!GpS!^W8D)y6EvIc&wN*oZfS@p){b{}1lL`$2!t8e_8bN3b3* zVl!UDI=qhB_eZ>d3)q3DJ50r_rSS#5PP~o1SkGVs_MtY|gqk11<(LWP9b8ZUCDe11 zsK8VBAfCf0euZKDA#ef5=r69V7_)-LNUVC&GAh6;s14r4cAQ2f^f|KDTt$B7cm8zZ z@Ve@J6jiY{RNyYuegnwQZ0Aq=<gp76RcI*V6Ig>&sKB$R6V2f=yoB2D>%gBdLVpog zVlCxSpf()F1SZf%UD-)|0H;yUokJbGa*2i#xQ@zf0d-e*Q49VHjF7J8+fj*jp-$R^ zsz4vk;2<jCEz|-2L<j#x#W}!zDewexB^C1;4Q+4|wc#Z8<4iDq19b(rQ5Cq4Z(wu- z!SEEak@+4K_-9mQ?xGSl-PPwBk@wCFV;%0pH1SQ2hTi_S@H6}n74T4xF-d$KRmx9L z8_uIj{ue4xUA+2S6jiZd)cjLO4#o=l$FZLNDQv+ROc39EOhYCA1@+nejg45#r=XHG zp-Q#}HJ(PDU<)dNCr~ftZd8B*@-t=rp211X;39Gh=DA0V*@-V>Wr)TV8a3F+F_n1) zS79fr<eO0^+l31J0)}xvQY=$IC3XUpz`LlEPvI84hR<Td#_GBe)Jtt|r2bks!9X03 zp#sdJO8q{nROe9%TtQXnyP*FEYW=;yTJB2+X+o`QLG9OtN~|~N_n|5~kfi=iG`2CI z1$!}qqp0x`F2z?-^T$#1@1O#oL48hsFn=-dTU5foq7q&V`r%Y{-!=?09^XMj0Ukr0 zcqn*a8*1adsLU;V9&O~d%w^O|dk1w@5&!M*m(9!4$#j40(ZS9Ak9%Y7iB_v*7oFj( zb9CG-+L`^Sg5`Q=+V6!1{OQ&4TCbydm!Di$6I%Xc;c&*z=VB$xb@PP-C4Wcf`A|zS zmUpd#vC(3=kTbi>w(Y&wa>W01{icxD&^qXC?e1xK+Q}czWRLn2-QgwP{EC$KQGCqH zu8jKW-eXI=3#&Hxw-UdF!fvco9v?3{u9fq?NpAHXO3n6KIpgLJTE((!M)S56bBm5+ Z6<o`d3)YcwE6cO7tdl8?d3REC{{w`I=2`#% diff --git a/searx/translations/ia/LC_MESSAGES/messages.po b/searx/translations/ia/LC_MESSAGES/messages.po index d2acbb62..7c59968b 100644 --- a/searx/translations/ia/LC_MESSAGES/messages.po +++ b/searx/translations/ia/LC_MESSAGES/messages.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PROJECT project. # # Translators: -# Guimarães Mello <maeslor@cryptolab.net>, 2017 +# Guimarães Mello <matheus.mello@disroot.org>, 2017,2019 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2017-10-07 19:18+0200\n" -"PO-Revision-Date: 2019-02-23 17:39+0000\n" -"Last-Translator: Guimarães Mello <maeslor@cryptolab.net>\n" +"PO-Revision-Date: 2019-09-30 14:07+0000\n" +"Last-Translator: Guimarães Mello <matheus.mello@disroot.org>\n" "Language-Team: Interlingua (http://www.transifex.com/asciimoo/searx/language/ia/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,15 +21,15 @@ msgstr "" #: searx/search.py:137 searx/search.py:182 msgid "timeout" -msgstr "" +msgstr "tempore finite" #: searx/search.py:144 msgid "request exception" -msgstr "" +msgstr "requesta un exception" #: searx/search.py:151 msgid "unexpected crash" -msgstr "" +msgstr "crash impreviste" #: searx/webapp.py:135 msgid "files" @@ -77,7 +77,7 @@ msgstr "Configurationes non valide, per favor, modifica tu preferentias." #: searx/webapp.py:410 msgid "Invalid settings" -msgstr "" +msgstr "Configurationes invalide" #: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" @@ -625,11 +625,11 @@ msgstr "per proxy" #: searx/templates/oscar/macros.html:92 msgid "supported" -msgstr "" +msgstr "supportate" #: searx/templates/oscar/macros.html:96 msgid "not supported" -msgstr "" +msgstr "non supportate" #: searx/templates/oscar/preferences.html:13 #: searx/templates/oscar/preferences.html:22 @@ -714,7 +714,7 @@ msgstr "Via breve" #: searx/templates/oscar/preferences.html:152 #: searx/templates/oscar/preferences.html:162 msgid "Selected language" -msgstr "" +msgstr "Lingua selectionate" #: searx/templates/oscar/preferences.html:154 #: searx/templates/oscar/preferences.html:160 @@ -774,13 +774,13 @@ msgstr "Valor" #: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" -msgstr "" +msgstr "URL de Recerca del preferentias actualmente salvate" #: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." -msgstr "" +msgstr "Nota: specificar configurationes personalisate in le URL de Recerca pote reducer le confidentialitate per lassar escappar datos al sitos cliccate in le resultatos." #: searx/templates/oscar/results.html:17 msgid "Search results" @@ -789,12 +789,12 @@ msgstr "Resultatos de recerca" #: searx/templates/oscar/results.html:21 #: searx/templates/simple/results.html:84 msgid "Try searching for:" -msgstr "" +msgstr "Essaya recercar pro:" #: searx/templates/oscar/results.html:100 #: searx/templates/simple/results.html:25 msgid "Engines cannot retrieve results" -msgstr "" +msgstr "Le motores non poteva obtener resultatos" #: searx/templates/oscar/results.html:131 msgid "Links" @@ -859,12 +859,12 @@ msgstr "Actualmente, il non ha datos disponibile." #: searx/templates/oscar/messages/no_results.html:4 #: searx/templates/simple/messages/no_results.html:4 msgid "Engines cannot retrieve results." -msgstr "" +msgstr "Le motores non poteva obtener resultatos." #: searx/templates/oscar/messages/no_results.html:10 #: searx/templates/simple/messages/no_results.html:10 msgid "Please, try again later or find another searx instance." -msgstr "" +msgstr "Per favor, essaya de novo plus tarde o trova un altere instantia de searx" #: searx/templates/oscar/messages/no_results.html:14 #: searx/templates/simple/messages/no_results.html:14 @@ -983,7 +983,7 @@ msgstr "Cargar plus..." #: searx/templates/simple/base.html:31 msgid "No item found" -msgstr "" +msgstr "Nulle item trovate" #: searx/templates/simple/preferences.html:89 msgid "Supports selected language" @@ -991,8 +991,8 @@ msgstr "Supporta le lingua selectionate" #: searx/templates/simple/preferences.html:118 msgid "User interface" -msgstr "" +msgstr "Interfacie del usator" #: searx/templates/simple/preferences.html:154 msgid "Privacy" -msgstr "" +msgstr "Confidentialitate" diff --git a/searx/translations/it/LC_MESSAGES/messages.mo b/searx/translations/it/LC_MESSAGES/messages.mo index 53eca9e6745328b50f0a261c3682e7027f194049..729c4ecc9822cb0063b4b40ab93dd90dfeb7a552 100644 GIT binary patch delta 3407 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 W1djVohnI5N-2YC#aNt<DBJV$N0If6t delta 3704 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 PII+>K5~NqwRp$H;t^^8S diff --git a/searx/translations/it/LC_MESSAGES/messages.po b/searx/translations/it/LC_MESSAGES/messages.po index c2d5c858..ba5c5e39 100644 --- a/searx/translations/it/LC_MESSAGES/messages.po +++ b/searx/translations/it/LC_MESSAGES/messages.po @@ -11,14 +11,14 @@ # Federico <fedett@gmail.com>, 2018 # Luca C <mybusiness@yopmail.com>, 2017 # Luc <luc.absil2@gmail.com>, 2015 -# Random_R, 2018 +# Random_R, 2018-2019 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-10-16 15:53+0000\n" -"Last-Translator: caoswave\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-11-19 10:03+0000\n" +"Last-Translator: Random_R\n" "Language-Team: Italian (http://www.transifex.com/asciimoo/searx/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -39,63 +39,63 @@ msgstr "eccezione della richiesta" msgid "unexpected crash" msgstr "crash inaspettato" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "documenti" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "generale" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musica" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "social" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "immagini" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "video" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "notizie" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mappe" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "scienza" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Impostazioni non valide, modifica le tue preferenze" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Impostazioni non valide" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "errore di ricerca" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "di {minutes} minuti fa" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "di {hours} ore e {minutes} minuti fa" @@ -115,29 +115,28 @@ msgstr "Funzioni statistiche" msgid "Compute {functions} of the arguments" msgstr "Calcola {functions} degli argomenti" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Tempo del motore (secondi)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr " Caricamento della pagina (secondi)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Numero di risultati" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Punteggio" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Punteggio per risultato" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Errori" @@ -149,9 +148,15 @@ msgstr "{title}&nbsp;(OBSOLETO)" msgid "This entry has been superseded by" msgstr "Questa voce è stata sostituita da" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Nessun sommario disponibile per questa pubblicazione" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Reindirizzamento DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Se possibile, evita il paywall di una pubblicazione reindirizzando ad una versione ad accesso libero" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -165,16 +170,6 @@ msgstr "Scorrimento infinito" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Carica automaticamente la pagina successiva quando si scorre sino alla fine della pagina attuale" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Reindirizzamento Open Access DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Se possibile, evita il paywall di una pubblicazione reindirizzando ad una versione libera" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -185,7 +180,7 @@ msgstr "Apri i risultati in nuove schede del browser" msgid "" "Results are opened in the same window by default. This plugin overwrites the" " default behaviour to open links on new tabs/windows. (JavaScript required)" -msgstr "Di base i risultati sono aperti nella stessa finestra. Questa estensione fa sì invece che vengano mostrati in nuove schede/finestre. (Javascript necessario)\"" +msgstr "Di base i risultati sono aperti nella stessa finestra. Questa estensione fa sì invece che vengano mostrati in nuove schede/finestre. (Javascript necessario)" #: searx/plugins/search_on_category_select.py:18 msgid "Search on category select" @@ -195,7 +190,7 @@ msgstr "Cerca nella categoria selezionata" msgid "" "Perform search immediately if a category selected. Disable to select " "multiple categories. (JavaScript required)" -msgstr "Esegui la ricerca immediatamente se una categoria è selezionata. Disabilita questa opzione se vuoi selezionare più categorie. (Javascript necessario)\"" +msgstr "Esegui la ricerca immediatamente se una categoria è selezionata. Disabilita questa opzione se vuoi selezionare più categorie. (Javascript necessario)" #: searx/plugins/self_info.py:20 msgid "" @@ -205,7 +200,7 @@ msgstr "Mostra il tuo IP se hai cercato \"ip\" ed il tuo user agent se hai cerca #: searx/plugins/tracker_url_remover.py:26 msgid "Tracker URL remover" -msgstr "Rimuovi tracciamento URL" +msgstr "Rimuovi URL traccianti" #: searx/plugins/tracker_url_remover.py:27 msgid "Remove trackers arguments from the returned URL" @@ -296,7 +291,7 @@ msgstr "Lingua predefinita" #: searx/templates/pix-art/preferences.html:20 #: searx/templates/simple/preferences.html:120 msgid "Interface language" -msgstr "Linguaggio dell'interfaccia" +msgstr "Lingua dell'interfaccia" #: searx/templates/courgette/preferences.html:34 #: searx/templates/legacy/preferences.html:35 @@ -337,8 +332,8 @@ msgstr "Metodo" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -349,21 +344,21 @@ msgstr "Ricerca Sicura" #: searx/templates/oscar/preferences.html:90 #: searx/templates/simple/preferences.html:66 msgid "Strict" -msgstr "Rigoroso" +msgstr "Rigorosa" #: searx/templates/courgette/preferences.html:67 #: searx/templates/legacy/preferences.html:68 #: searx/templates/oscar/preferences.html:91 #: searx/templates/simple/preferences.html:67 msgid "Moderate" -msgstr "Moderato" +msgstr "Moderata" #: searx/templates/courgette/preferences.html:68 #: searx/templates/legacy/preferences.html:69 #: searx/templates/oscar/preferences.html:92 #: searx/templates/simple/preferences.html:68 msgid "None" -msgstr "Nessuno" +msgstr "Nessuna" #: searx/templates/courgette/preferences.html:73 #: searx/templates/legacy/preferences.html:74 @@ -410,8 +405,8 @@ msgstr "Motori di ricerca attualmente in uso" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -426,8 +421,8 @@ msgstr "Categoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -445,7 +440,7 @@ msgstr "Blocca" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -455,7 +450,7 @@ msgstr "Le impostazioni vengono salvate nei tuoi cookie, consentendoci di non co #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -465,7 +460,7 @@ msgstr "Questi cookie servono solo ad offrirti un servizio migliore. Non li usia #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -473,14 +468,14 @@ msgstr "salva" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Reimposta i valori iniziali" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -651,30 +646,30 @@ msgid "General" msgstr "Generale" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motori" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plugin" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Risponditori" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookie" #: searx/templates/oscar/preferences.html:42 #: searx/templates/simple/preferences.html:48 msgid "What language do you prefer for search?" -msgstr "Lingua dei risultati di ricerca" +msgstr "Che lingua preferisci per la ricerca?" #: searx/templates/oscar/preferences.html:48 #: searx/templates/simple/preferences.html:128 @@ -706,7 +701,7 @@ msgstr "Filtro famiglia" #: searx/templates/oscar/preferences.html:97 #: searx/templates/simple/preferences.html:139 msgid "Change searx layout" -msgstr "Cambia il layout di searx" +msgstr "Cambia l'aspetto di searx" #: searx/templates/oscar/preferences.html:106 #: searx/templates/oscar/preferences.html:111 @@ -718,92 +713,82 @@ msgstr "Scegli lo stile per questo tema" msgid "Style" msgstr "Stile" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Resolver Open Access DOI" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Indirizza a versioni open-access delle pubblicazioni quando disponibili (plugin richiesto)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Scorciatoia" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Lingua selezionata" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Intervallo di tempo" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Tempo medio" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Tempo massimo" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Questa è la lista dei moduli searx con risposta immediata" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nome" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Parole chiave" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descrizione" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Esempi" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Qui puoi vedere i cookie che vengono conservati sul tuo computer." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "In questo modo, puoi constatare la trasparenza di searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nome del cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valore" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" -msgstr "Cerca URL delle preferenze attualmente salvate" +msgstr "URL di ricerca delle preferenze attualmente salvate" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." -msgstr "Nota: specificando impostazioni personalizzate nella ricerca URL può ridurre la privacy facendo traperlare dati ai siti cliccati" +msgstr "Nota: specificare impostazioni personalizzate nell'URL di ricerca può ridurre la privacy facendo trapelare dati ai siti cliccati" #: searx/templates/oscar/results.html:17 msgid "Search results" @@ -836,7 +821,7 @@ msgstr "statistiche" #: searx/templates/oscar/time-range.html:3 #: searx/templates/simple/time-range.html:3 msgid "Anytime" -msgstr "Di sempre" +msgstr "Qualsiasi data" #: searx/templates/oscar/time-range.html:6 #: searx/templates/simple/time-range.html:6 @@ -856,7 +841,7 @@ msgstr "Ultimo mese" #: searx/templates/oscar/time-range.html:15 #: searx/templates/simple/time-range.html:15 msgid "Last year" -msgstr "L'anno scorso" +msgstr "Ultimo anno" #: searx/templates/oscar/messages/first_time.html:6 #: searx/templates/oscar/messages/no_data_available.html:3 diff --git a/searx/translations/ja/LC_MESSAGES/messages.mo b/searx/translations/ja/LC_MESSAGES/messages.mo index eb1267287a415726c1932f1bf2c351bc0c187a3b..4bfa7bbebe60f1dd536306dd32600173650af0c2 100644 GIT binary patch delta 3173 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 KdRyG%0{;V}l2y|H delta 3623 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 Iy-U*n1rne-fB*mh diff --git a/searx/translations/ja/LC_MESSAGES/messages.po b/searx/translations/ja/LC_MESSAGES/messages.po index 24d2c359..94f1504f 100644 --- a/searx/translations/ja/LC_MESSAGES/messages.po +++ b/searx/translations/ja/LC_MESSAGES/messages.po @@ -6,6 +6,7 @@ # Akio Nishimura <akionux@gmail.com>, 2016-2018 # Thomas Pointhuber, 2014-2015 # FIRST AUTHOR <EMAIL@ADDRESS>, 2014,2016 +# KAWASAKI ICHIRO, 2020 # Lucas Phillips <mail@lep.pw>, 2015 # Max <theshirinzu@gmail.com>, 2015 # Nobuhiro Iwamatsu <iwamatsu@nigauri.org>, 2018 @@ -15,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-08-13 03:03+0000\n" -"Last-Translator: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2020-01-20 14:30+0000\n" +"Last-Translator: KAWASAKI ICHIRO\n" "Language-Team: Japanese (http://www.transifex.com/asciimoo/searx/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,63 +39,63 @@ msgstr "例外要求" msgid "unexpected crash" msgstr "予期しないクラッシュ" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "ファイル" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "一般" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "音楽" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "ソーシャルメディア" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "画像" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "動画" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "情報技術" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" -msgstr "お知らせ" +msgstr "ニュース" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "地図" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "学問" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "不正な設定です。設定を編集してください。" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "不正な設定" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "検索エラー" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes}分前" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours}時間と{minutes}分前" @@ -114,29 +115,28 @@ msgstr "統計機能" msgid "Compute {functions} of the arguments" msgstr "変数の{functions}を計算する" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "検索時間 (秒)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "ページ読み込み時間 (秒)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "通知の数" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "スコア" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "検索結果当たりスコア" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "エラー" @@ -148,9 +148,15 @@ msgstr "{title}&nbsp;(廃止)" msgid "This entry has been superseded by" msgstr "このエントリーの優先" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "この出版物には要約がありません。" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI再書き込み" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "可能ならば出版物のオープンアクセス版へリダイレクトして有料の壁を避ける" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -164,16 +170,6 @@ msgstr "無限スクロール" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "現在のページの下端でスクロールすると自動的に次のページを読み込む" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "オープンアクセス DOI リライト" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "可能ならば出版物のオープンアクセス版へリダイレクトして有料の壁を避ける" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -336,8 +332,8 @@ msgstr "方法" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -409,8 +405,8 @@ msgstr "現在使用中の検索エンジン" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -425,8 +421,8 @@ msgstr "カテゴリー" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -444,7 +440,7 @@ msgstr "禁止する" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -454,7 +450,7 @@ msgstr "これらの設定はあなたのクッキーに保存されますが、 #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -464,7 +460,7 @@ msgstr "クッキーはあなたが便利に使えるようにするために使 #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -472,14 +468,14 @@ msgstr "保存" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "デフォルト設定に戻す" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -650,23 +646,23 @@ msgid "General" msgstr "一般設定" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "検索エンジン" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "プラグイン" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "回答者" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "クッキー" @@ -717,88 +713,78 @@ msgstr "このテーマのスタイルを選択" msgid "Style" msgstr "スタイル" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "オープンアクセス DOI リゾルバー" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "利用可能な場合(プラグインが必要)、オープンアクセス版の出版物にリダイレクトする" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "ショートカット" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "選択された言語" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "時間範囲" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "平均時間" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "最大時間" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "これは searx の即席回答モジュールのリストです。" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "名前" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "キーワード" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "説明" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "例" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "これはクッキーのリストで、これらの値はあなたのコンピュータに保存されています。" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "このリストによって、あなたは searx の透明性を評価できます。" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "クッキー名" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "値" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "現在保存されている設定の検索 URL" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/lt/LC_MESSAGES/messages.mo b/searx/translations/lt/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..8f33a16606b045feb81758f952ee475524e211b6 GIT binary patch literal 12354 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 LA6fmw*)j9K0zdC< literal 0 HcmV?d00001 diff --git a/searx/translations/lt/LC_MESSAGES/messages.po b/searx/translations/lt/LC_MESSAGES/messages.po new file mode 100644 index 00000000..f9e4ffd6 --- /dev/null +++ b/searx/translations/lt/LC_MESSAGES/messages.po @@ -0,0 +1,998 @@ +# Translations template for PROJECT. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# Moo, 2019 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-11-02 12:57+0000\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian (http://www.transifex.com/asciimoo/searx/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: lt\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +#: searx/search.py:137 searx/search.py:182 +msgid "timeout" +msgstr "baigėsi laikas" + +#: searx/search.py:144 +msgid "request exception" +msgstr "užklausos išimtis" + +#: searx/search.py:151 +msgid "unexpected crash" +msgstr "netikėta strigtis" + +#: searx/webapp.py:135 +msgid "files" +msgstr "failai" + +#: searx/webapp.py:136 +msgid "general" +msgstr "bendra" + +#: searx/webapp.py:137 +msgid "music" +msgstr "muzika" + +#: searx/webapp.py:138 +msgid "social media" +msgstr "socialinė medija" + +#: searx/webapp.py:139 +msgid "images" +msgstr "paveikslai" + +#: searx/webapp.py:140 +msgid "videos" +msgstr "vaizdo įrašai" + +#: searx/webapp.py:141 +msgid "it" +msgstr "IT" + +#: searx/webapp.py:142 +msgid "news" +msgstr "naujienos" + +#: searx/webapp.py:143 +msgid "map" +msgstr "žemėlapis" + +#: searx/webapp.py:144 +msgid "science" +msgstr "mokslas" + +#: searx/webapp.py:398 searx/webapp.py:653 +msgid "Invalid settings, please edit your preferences" +msgstr "Neteisingi nustatymai, pataisykite savo nuostatas" + +#: searx/webapp.py:410 +msgid "Invalid settings" +msgstr "Neteisingi nustatymai" + +#: searx/webapp.py:444 searx/webapp.py:488 +msgid "search error" +msgstr "paieškos klaida" + +#: searx/webapp.py:525 +msgid "{minutes} minute(s) ago" +msgstr "prieš {minutes} min." + +#: searx/webapp.py:527 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "prieš {hours} val., {minutes} min." + +#: searx/answerers/random/answerer.py:53 +msgid "Random value generator" +msgstr "Atsitiktinių reikmių generatorius" + +#: searx/answerers/random/answerer.py:54 +msgid "Generate different random values" +msgstr "Generuoja įvairias atsitiktines reikšmes" + +#: searx/answerers/statistics/answerer.py:53 +msgid "Statistics functions" +msgstr "Statistikos funkcijos" + +#: searx/answerers/statistics/answerer.py:54 +msgid "Compute {functions} of the arguments" +msgstr "Skaičiuoti argumentų {functions} funkcijas" + +#: searx/engines/__init__.py:194 +msgid "Engine time (sec)" +msgstr "Sistemos laikas (sek.)" + +#: searx/engines/__init__.py:198 +msgid "Page loads (sec)" +msgstr "Puslapių įkėlimai (sek.)" + +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 +#: searx/templates/simple/results.html:20 +msgid "Number of results" +msgstr "Rezultatų skaičius" + +#: searx/engines/__init__.py:206 +msgid "Scores" +msgstr "Įverčiai" + +#: searx/engines/__init__.py:210 +msgid "Scores per result" +msgstr "Įverčiai pagal rezultatą" + +#: searx/engines/__init__.py:214 +msgid "Errors" +msgstr "Klaidos" + +#: searx/engines/pdbe.py:87 +msgid "{title}&nbsp;(OBSOLETE)" +msgstr "{title}&nbsp;(PASENĘS)" + +#: searx/engines/pdbe.py:91 +msgid "This entry has been superseded by" +msgstr "Šį įrašą pakeitė" + +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI perrašymas" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Vengti apmokamų sienų, kai įmanoma, peradresuojant į atviros prieigos publikacijų versijas" + +#: searx/plugins/https_rewrite.py:32 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "Jei įmanoma, perrašyti HTTP nuorodas į HTTPS" + +#: searx/plugins/infinite_scroll.py:3 +msgid "Infinite scroll" +msgstr "Begalinis slinkimas" + +#: searx/plugins/infinite_scroll.py:4 +msgid "Automatically load next page when scrolling to bottom of current page" +msgstr "Automatiškai įkelti kitą puslapį, kai nuslenkama į esamo puslapio apačią" + +#: searx/plugins/open_results_on_new_tab.py:18 +#: searx/templates/oscar/preferences.html:114 +#: searx/templates/simple/preferences.html:149 +msgid "Open result links on new browser tabs" +msgstr "Atverti rezultatų nuorodas naujose naršyklės kortelėse" + +#: searx/plugins/open_results_on_new_tab.py:19 +msgid "" +"Results are opened in the same window by default. This plugin overwrites the" +" default behaviour to open links on new tabs/windows. (JavaScript required)" +msgstr "Pagal numatymą, rezultatai yra atveriami tame pačiame lange. Šis įskiepis perrašo numatytąją elgseną taip, kad nuorodos būtų atveriamos naujose kortelėse/languose. (reikalinga JavaScript)" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "Pasirinkus kategoriją, atlikti paiešką" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "Jei pasirenkama kategorija, nedelsiant atlikti paiešką. Išjunkite norėdami pasirinkti kelias kategorijas. (reikalinga JavaScript)" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "Rodo jūsų IP adresą, jei užklausa yra \"ip\" ir jūsų naudotojo agentą, jei užklausoje yra \"user agent\"." + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "Seklių URL šalintojas" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "Šalinti seklių argumentus iš grąžinamų URL" + +#: searx/plugins/vim_hotkeys.py:3 +msgid "Vim-like hotkeys" +msgstr "Vim pavidalo spartieji klavišai" + +#: searx/plugins/vim_hotkeys.py:4 +msgid "" +"Navigate search results with Vim-like hotkeys (JavaScript required). Press " +"\"h\" key on main or result page to get help." +msgstr "Naršyti po paieškos rezultatus naudojant Vim pavidalo sparčiuosius klavišus (reikalinga JavaScript). Paspauskite pagrindiniame ar rezultatų puslapyje \"h\" klavišą norėdami gauti pagalbos." + +#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4 +#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4 +#: searx/templates/simple/404.html:4 +msgid "Page not found" +msgstr "Puslapis nerastas" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +#, python-format +msgid "Go to %(search_page)s." +msgstr "Pereiti į %(search_page)s." + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +msgid "search page" +msgstr "paieškos puslapį" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12 +#: searx/templates/oscar/navbar.html:7 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "nuostatos" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2 +#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "apie" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/legacy/preferences.html:5 +#: searx/templates/oscar/preferences.html:8 +#: searx/templates/pix-art/preferences.html:5 +#: searx/templates/simple/preferences.html:26 +msgid "Preferences" +msgstr "Nuostatos" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/legacy/preferences.html:9 +#: searx/templates/oscar/preferences.html:33 +#: searx/templates/oscar/preferences.html:35 +#: searx/templates/simple/preferences.html:34 +msgid "Default categories" +msgstr "Numatytosios kategorijos" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/legacy/preferences.html:14 +#: searx/templates/oscar/preferences.html:41 +#: searx/templates/pix-art/preferences.html:9 +#: searx/templates/simple/preferences.html:39 +#: searx/templates/simple/preferences.html:163 +msgid "Search language" +msgstr "Paieškos kalba" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/legacy/preferences.html:17 +#: searx/templates/oscar/languages.html:6 +#: searx/templates/pix-art/preferences.html:12 +#: searx/templates/simple/languages.html:2 +#: searx/templates/simple/preferences.html:42 +msgid "Default language" +msgstr "Numatytoji kalba" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/legacy/preferences.html:25 +#: searx/templates/oscar/preferences.html:47 +#: searx/templates/pix-art/preferences.html:20 +#: searx/templates/simple/preferences.html:120 +msgid "Interface language" +msgstr "Sąsajos kalba" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/legacy/preferences.html:35 +#: searx/templates/oscar/preferences.html:57 +#: searx/templates/simple/preferences.html:51 +msgid "Autocomplete" +msgstr "Automatinis užbaigimas" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/legacy/preferences.html:46 +#: searx/templates/oscar/preferences.html:68 +#: searx/templates/simple/preferences.html:166 +msgid "Image proxy" +msgstr "Paveikslų įgaliotasis serveris" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/legacy/preferences.html:49 +#: searx/templates/oscar/preferences.html:72 +#: searx/templates/simple/preferences.html:169 +msgid "Enabled" +msgstr "Įjungta" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/legacy/preferences.html:50 +#: searx/templates/oscar/preferences.html:73 +#: searx/templates/simple/preferences.html:170 +msgid "Disabled" +msgstr "Išjungta" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/legacy/preferences.html:55 +#: searx/templates/oscar/preferences.html:77 +#: searx/templates/pix-art/preferences.html:30 +#: searx/templates/simple/preferences.html:156 +msgid "Method" +msgstr "Metodas" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/legacy/preferences.html:64 +#: searx/templates/oscar/preferences.html:86 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 +#: searx/templates/simple/preferences.html:63 +#: searx/templates/simple/preferences.html:90 +msgid "SafeSearch" +msgstr "Saugi paieška" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/legacy/preferences.html:67 +#: searx/templates/oscar/preferences.html:90 +#: searx/templates/simple/preferences.html:66 +msgid "Strict" +msgstr "Griežta" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/legacy/preferences.html:68 +#: searx/templates/oscar/preferences.html:91 +#: searx/templates/simple/preferences.html:67 +msgid "Moderate" +msgstr "Nuosaiki" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/legacy/preferences.html:69 +#: searx/templates/oscar/preferences.html:92 +#: searx/templates/simple/preferences.html:68 +msgid "None" +msgstr "Nėra" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/legacy/preferences.html:74 +#: searx/templates/oscar/preferences.html:96 +#: searx/templates/pix-art/preferences.html:39 +#: searx/templates/simple/preferences.html:131 +msgid "Themes" +msgstr "Apipavidalinimai" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Spalva" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Mėlyna (numatytoji)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Violetinė" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Žalia" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "Žydra" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Oranžinė" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Raudona" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/legacy/preferences.html:93 +#: searx/templates/pix-art/preferences.html:49 +#: searx/templates/simple/preferences.html:77 +msgid "Currently used search engines" +msgstr "Šiuo metu naudojamos paieškos sistemos" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/legacy/preferences.html:97 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 +#: searx/templates/pix-art/preferences.html:53 +#: searx/templates/simple/preferences.html:87 +msgid "Engine name" +msgstr "Sistemos pavadinimas" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/legacy/preferences.html:98 +msgid "Category" +msgstr "Kategorija" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:110 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +#: searx/templates/simple/preferences.html:86 +msgid "Allow" +msgstr "Leisti" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:111 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "Blokuoti" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/legacy/preferences.html:119 +#: searx/templates/oscar/preferences.html:285 +#: searx/templates/pix-art/preferences.html:73 +#: searx/templates/simple/preferences.html:180 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "Šie nustatymai yra laikomi jūsų slapukuose, tai leidžia mums nesaugoti šių duomenų apie jus." + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/legacy/preferences.html:121 +#: searx/templates/oscar/preferences.html:287 +#: searx/templates/pix-art/preferences.html:75 +#: searx/templates/simple/preferences.html:182 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "Šie slapukai yra naudojami išskirtinai jūsų patogumui, mes nenaudojame jų, kad jus sektume." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/legacy/preferences.html:124 +#: searx/templates/oscar/preferences.html:293 +#: searx/templates/pix-art/preferences.html:78 +#: searx/templates/simple/preferences.html:185 +msgid "save" +msgstr "Įrašyti" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/legacy/preferences.html:125 +#: searx/templates/oscar/preferences.html:295 +#: searx/templates/simple/preferences.html:186 +msgid "Reset defaults" +msgstr "Atstatyti numatytuosius" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/legacy/preferences.html:126 +#: searx/templates/oscar/preferences.html:294 +#: searx/templates/pix-art/preferences.html:79 +#: searx/templates/simple/preferences.html:187 +msgid "back" +msgstr "Atgal" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/legacy/results.html:13 +#: searx/templates/oscar/results.html:136 +#: searx/templates/simple/results.html:58 +msgid "Search URL" +msgstr "Paieškos URL" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/legacy/results.html:17 +#: searx/templates/oscar/results.html:141 +#: searx/templates/simple/results.html:62 +msgid "Download results" +msgstr "Atsisiųsti rezultatus" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/legacy/results.html:35 +#: searx/templates/simple/results.html:10 +msgid "Answers" +msgstr "Atsakymai" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/legacy/results.html:43 +#: searx/templates/oscar/results.html:116 +#: searx/templates/simple/results.html:42 +msgid "Suggestions" +msgstr "Pasiūlymai" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/legacy/results.html:81 +#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78 +#: searx/templates/simple/results.html:130 +msgid "previous page" +msgstr "ankstesnis puslapis" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/legacy/results.html:92 +#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84 +#: searx/templates/simple/results.html:145 +msgid "next page" +msgstr "kitas puslapis" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4 +msgid "Search for..." +msgstr "Ko ieškoti..." + +#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +#: searx/templates/simple/stats.html:7 +msgid "Engine stats" +msgstr "Sistemos statistika" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/legacy/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "pradinis kontekstas" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Seeder" +msgstr "Skleidėjai" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Leecher" +msgstr "Siuntėjai" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/legacy/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:23 +#: searx/templates/simple/result_templates/torrent.html:6 +msgid "magnet link" +msgstr "magnet nuoroda" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/legacy/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:24 +#: searx/templates/simple/result_templates/torrent.html:7 +msgid "torrent file" +msgstr "torrent failas" + +#: searx/templates/legacy/categories.html:8 +#: searx/templates/simple/categories.html:6 +msgid "Click on the magnifier to perform search" +msgstr "Norėdami atlikti paiešką, spustelėkite ant didinamojo stiklo" + +#: searx/templates/legacy/preferences.html:84 +#: searx/templates/oscar/preferences.html:113 +#: searx/templates/simple/preferences.html:142 +msgid "Results on new tabs" +msgstr "Rezultatai naujose kortelėse" + +#: searx/templates/legacy/preferences.html:87 +#: searx/templates/oscar/preferences.html:117 +#: searx/templates/simple/preferences.html:145 +msgid "On" +msgstr "Įjungta" + +#: searx/templates/legacy/preferences.html:88 +#: searx/templates/oscar/preferences.html:118 +#: searx/templates/simple/preferences.html:146 +msgid "Off" +msgstr "Išjungta" + +#: searx/templates/legacy/result_templates/code.html:3 +#: searx/templates/legacy/result_templates/default.html:3 +#: searx/templates/legacy/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48 +#: searx/templates/simple/macros.html:43 +msgid "cached" +msgstr "podėlio versija" + +#: searx/templates/oscar/advanced.html:4 +msgid "Advanced settings" +msgstr "Išplėstiniai nustatymai" + +#: searx/templates/oscar/base.html:62 +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "Užverti" + +#: searx/templates/oscar/base.html:64 +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +#: searx/templates/simple/results.html:25 +msgid "Error!" +msgstr "Klaida!" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "Powered by" +msgstr "Veikia su" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "gerbianti privatumą, programuojama metapaieškos sistema" + +#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50 +#: searx/templates/simple/macros.html:43 +msgid "proxied" +msgstr "per įgaliotąjį serverį" + +#: searx/templates/oscar/macros.html:92 +msgid "supported" +msgstr "palaikoma" + +#: searx/templates/oscar/macros.html:96 +msgid "not supported" +msgstr "nepalaikoma" + +#: searx/templates/oscar/preferences.html:13 +#: searx/templates/oscar/preferences.html:22 +#: searx/templates/simple/preferences.html:32 +msgid "General" +msgstr "Bendra" + +#: searx/templates/oscar/preferences.html:14 +#: searx/templates/oscar/preferences.html:134 +#: searx/templates/simple/preferences.html:76 +msgid "Engines" +msgstr "Sistemos" + +#: searx/templates/oscar/preferences.html:15 +#: searx/templates/oscar/preferences.html:207 +msgid "Plugins" +msgstr "Įskiepiai" + +#: searx/templates/oscar/preferences.html:16 +#: searx/templates/oscar/preferences.html:233 +msgid "Answerers" +msgstr "Atsakikliai" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:260 +msgid "Cookies" +msgstr "Slapukai" + +#: searx/templates/oscar/preferences.html:42 +#: searx/templates/simple/preferences.html:48 +msgid "What language do you prefer for search?" +msgstr "Kokią kalbą pageidaujate paieškai?" + +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/simple/preferences.html:128 +msgid "Change the language of the layout" +msgstr "Keisti išdėstymo kalbą" + +#: searx/templates/oscar/preferences.html:58 +#: searx/templates/simple/preferences.html:60 +msgid "Find stuff as you type" +msgstr "Rasti medžiagą berašant" + +#: searx/templates/oscar/preferences.html:69 +#: searx/templates/simple/preferences.html:173 +msgid "Proxying image results through searx" +msgstr "Paveikslų persiuntimas įgaliotuoju serveriu per searx" + +#: searx/templates/oscar/preferences.html:78 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "Keisti kaip yra pateikiamos formos, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">sužinokite daugiau apie užklausos metodus</a>" + +#: searx/templates/oscar/preferences.html:87 +#: searx/templates/simple/preferences.html:71 +msgid "Filter content" +msgstr "Filtruoti turinį" + +#: searx/templates/oscar/preferences.html:97 +#: searx/templates/simple/preferences.html:139 +msgid "Change searx layout" +msgstr "Keisti searx išdėstymą" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Choose style for this theme" +msgstr "Pasirinkti šio apipavidalinimo stilių" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Style" +msgstr "Stilius" + +#: searx/templates/oscar/preferences.html:151 +#: searx/templates/oscar/preferences.html:163 +#: searx/templates/simple/preferences.html:88 +msgid "Shortcut" +msgstr "Trumpinys" + +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 +msgid "Selected language" +msgstr "Pasirinkta kalba" + +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 +#: searx/templates/simple/preferences.html:91 +msgid "Time range" +msgstr "Laiko rėžis" + +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 +#: searx/templates/simple/preferences.html:92 +msgid "Avg. time" +msgstr "Vid. laikas" + +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 +#: searx/templates/simple/preferences.html:93 +msgid "Max time" +msgstr "Maks. laikas" + +#: searx/templates/oscar/preferences.html:236 +msgid "This is the list of searx's instant answering modules." +msgstr "Tai yra searx greitų atsakiklių modulių sąrašas." + +#: searx/templates/oscar/preferences.html:240 +msgid "Name" +msgstr "Pavadinimas" + +#: searx/templates/oscar/preferences.html:241 +msgid "Keywords" +msgstr "Raktažodžiai" + +#: searx/templates/oscar/preferences.html:242 +msgid "Description" +msgstr "Aprašas" + +#: searx/templates/oscar/preferences.html:243 +msgid "Examples" +msgstr "Pavyzdžiai" + +#: searx/templates/oscar/preferences.html:263 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "Tai yra slapukų ir jų reikšmių, kuriuos searx laiko jūsų kompiuteryje, sąrašas." + +#: searx/templates/oscar/preferences.html:264 +msgid "With that list, you can assess searx transparency." +msgstr "Naudodami sąrašą, galite įvertinti searx skaidrumą." + +#: searx/templates/oscar/preferences.html:269 +msgid "Cookie name" +msgstr "Slapuko pavadinimas" + +#: searx/templates/oscar/preferences.html:270 +msgid "Value" +msgstr "Reikšmė" + +#: searx/templates/oscar/preferences.html:289 +msgid "Search URL of the currently saved preferences" +msgstr "Šiuo metu įrašytų nuostatų paieškos URL" + +#: searx/templates/oscar/preferences.html:289 +msgid "" +"Note: specifying custom settings in the search URL can reduce privacy by " +"leaking data to the clicked result sites." +msgstr "Pastaba: paieškos URL adrese nurodant tinkintus nustatymus, gali būti sumažintas jūsų privatumas, atskleidžiant duomenis toms rezultatų svetainėms, ant kurių spustelėjate." + +#: searx/templates/oscar/results.html:17 +msgid "Search results" +msgstr "Paieškos rezultatai" + +#: searx/templates/oscar/results.html:21 +#: searx/templates/simple/results.html:84 +msgid "Try searching for:" +msgstr "Bandykite ieškoti:" + +#: searx/templates/oscar/results.html:100 +#: searx/templates/simple/results.html:25 +msgid "Engines cannot retrieve results" +msgstr "Sistemos negali gauti rezultatų" + +#: searx/templates/oscar/results.html:131 +msgid "Links" +msgstr "Nuorodos" + +#: searx/templates/oscar/search.html:8 +#: searx/templates/oscar/search_full.html:11 +#: searx/templates/simple/search.html:5 +msgid "Start search" +msgstr "Pradėti paiešką" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "statistika" + +#: searx/templates/oscar/time-range.html:3 +#: searx/templates/simple/time-range.html:3 +msgid "Anytime" +msgstr "Bet kada" + +#: searx/templates/oscar/time-range.html:6 +#: searx/templates/simple/time-range.html:6 +msgid "Last day" +msgstr "Praeitą dieną" + +#: searx/templates/oscar/time-range.html:9 +#: searx/templates/simple/time-range.html:9 +msgid "Last week" +msgstr "Praeitą savaitę" + +#: searx/templates/oscar/time-range.html:12 +#: searx/templates/simple/time-range.html:12 +msgid "Last month" +msgstr "Praeitą mėnesį" + +#: searx/templates/oscar/time-range.html:15 +#: searx/templates/simple/time-range.html:15 +msgid "Last year" +msgstr "Praeitais metais" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "Dėmesio!" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "Atrodo, kad pirmą kartą naudojate searx." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "Informacija!" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "Šiuo metu nėra jokių apibrėžtų slapukų." + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "Šiuo metu nėra jokių prieinamų duomenų." + +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +msgid "Engines cannot retrieve results." +msgstr "Sistemos negali gauti rezultatų." + +#: searx/templates/oscar/messages/no_results.html:10 +#: searx/templates/simple/messages/no_results.html:10 +msgid "Please, try again later or find another searx instance." +msgstr "Vėliau bandykite dar kartą arba raskite kitą searx egzempliorių." + +#: searx/templates/oscar/messages/no_results.html:14 +#: searx/templates/simple/messages/no_results.html:14 +msgid "Sorry!" +msgstr "Atleiskite!" + +#: searx/templates/oscar/messages/no_results.html:15 +#: searx/templates/simple/messages/no_results.html:15 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "Mes neradome jokių rezultatų. Naudokite kitokią užklausą arba ieškokite kitose kategorijose." + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "Gerai padirbėta!" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "Nustatymai sėkmingai įrašyti." + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "O, ne!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "Kažkas nutiko." + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "show media" +msgstr "rodyti mediją" + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "hide media" +msgstr "slėpti mediją" + +#: searx/templates/oscar/result_templates/images.html:30 +msgid "Get image" +msgstr "Gauti paveikslą" + +#: searx/templates/oscar/result_templates/images.html:33 +msgid "View source" +msgstr "Rodyti šaltinį" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "show map" +msgstr "rodyti žemėlapį" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "hide map" +msgstr "slėpti žemėlapį" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "show details" +msgstr "rodyti informaciją" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "hide details" +msgstr "slėpti informaciją" + +#: searx/templates/oscar/result_templates/torrent.html:7 +#: searx/templates/simple/result_templates/torrent.html:11 +msgid "Filesize" +msgstr "Failo dydis" + +#: searx/templates/oscar/result_templates/torrent.html:9 +#: searx/templates/simple/result_templates/torrent.html:12 +msgid "Bytes" +msgstr "Baitai" + +#: searx/templates/oscar/result_templates/torrent.html:10 +#: searx/templates/simple/result_templates/torrent.html:13 +msgid "kiB" +msgstr "kiB" + +#: searx/templates/oscar/result_templates/torrent.html:11 +#: searx/templates/simple/result_templates/torrent.html:14 +msgid "MiB" +msgstr "MiB" + +#: searx/templates/oscar/result_templates/torrent.html:12 +#: searx/templates/simple/result_templates/torrent.html:15 +msgid "GiB" +msgstr "GiB" + +#: searx/templates/oscar/result_templates/torrent.html:13 +#: searx/templates/simple/result_templates/torrent.html:16 +msgid "TiB" +msgstr "TiB" + +#: searx/templates/oscar/result_templates/torrent.html:15 +#: searx/templates/simple/result_templates/torrent.html:20 +msgid "Number of Files" +msgstr "Failų skaičius" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "show video" +msgstr "rodyti vaizdo įrašą" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "hide video" +msgstr "slėpti vaizdo įrašą" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "Įkelti daugiau..." + +#: searx/templates/simple/base.html:31 +msgid "No item found" +msgstr "Elementų nerasta" + +#: searx/templates/simple/preferences.html:89 +msgid "Supports selected language" +msgstr "Palaiko pasirinktą kalbą" + +#: searx/templates/simple/preferences.html:118 +msgid "User interface" +msgstr "Naudotojo sąsaja" + +#: searx/templates/simple/preferences.html:154 +msgid "Privacy" +msgstr "Privatumas" diff --git a/searx/translations/nl/LC_MESSAGES/messages.mo b/searx/translations/nl/LC_MESSAGES/messages.mo index 057853be522d6f740f0225476e923548507cadd9..55f7230bbec4c56c187399ba45d4485025b1c0c0 100644 GIT binary patch delta 3133 zcmYM#4NR3)9LMnk7Z5M+3Zf`@eL+#UaJgAmFmWzlW|=Q!Yo$P?*F;SlD(2Ge+-$bA zq!^guOHObr-@DqFm2G7<)KsX<F>ty_DqSzrM&`1<KcBP3uJ?0Zp68tZ`JZ#HH!8lL z7rN3Xs?PA&%)deW>xfqE|Gyn^#-vc)iRwCxz418q!q2Q<VLbH<I2k)o&kdz<4(6fW zUyq5n(W!?_J%v~rc3=}WVPAYK!I&Xffdg?p=HO1$K&P$ea5(igWKPqA3e3eUnHYyr zI0_ls<YONkhsh>n%nS;8u>uvy5-h`&_a9(j)PO&rp1Xk>s0Wpqs3fPq9}cFTg&r)y z7_6`^M2-KVwHgzd--Iai!?#cqHK7L&qEdJsU3eMwTn8!xw`~6%RA8=TV<?&=RDgp~ zE6qbbW&&UNI1BSIgds(AfPy@ZZaj&axW)PnDzHw}#6O}YxPf}_FVspSNQVNAMYYGH zQlEy^n1Sq$dE2({P9gtQG&Itn$kPdzq8W)As0cOCc#Om;n2pm=6D~*QHr2>(n2op` z>oI^a93%x^f?C)VRHkOz_Oia@Uxz11gHrnjYT`XufK8}@zr(HAg?!A~RD#4B)WFTC zfWAO2;EZkWKri)f)XLM+oP`d<0n{G|QP2dBqXw9V8el%^I<7)x;2q>+8u-$4M^RhQ zjErr*wC(MvExLwUX*XuzE!&^SDo0RH!zVEGFon4kYEakhCeFmfbYmXEa#Tj@P%GVr z%0MHMWz&pWz**G9?Wl>bqPFHHD&T)m???4_GM9vY<~IQfJ~|eo253MXnmwo&_hAkm zwEdS*d)k4@Ko=@Qf1oD#+Zs)N^?owy?4+X>l7R{^>wca6A5B3M=c6VbgF5|1s6BfG zwUXJW7oWH7%TR%=MQzyz)cf_ey#W>AUetR>Z2c2dz%A(3{clqNJM9BMp#u67706xG zMA2-d224N&l!01dE|#Jnm8sW|Y@0*Y)A&(@F;|eGOdSVH0UXAVR@h8I0h~q+*oxZI z%lIUAqXHSv@99#UimD$&t^6b^;ET5X5+0_06`9l2WH~>@`>idQO?!71`>&NH40Z-c zLv;*91vC-WKOH?d2Q|?u)WokK2iv@fTF72hhK}0$Nqm|5In>H0dz}6XR0fxNLQbmI z(V$4{Py-ynT>KRC@MqM-{kS5^&>+;F4#OlYK;4E3$OST`s1#SC#;HO*w+nR$4<YB& zd>EpjfzP5|Xhp58-Fg!>(LK}(-9w!T`eQ!z0xZIE)N}8m#%V+?<e+Uof%muA_P5&h zP&)+;d>yr?w^1p-hl(_2nA7e?o$gfJjssAK?3isohxOE3QK?-t+}WBn=%T&_wa{8y z--dibW+&fD>F1~|XhHp=b)g2lgC$s#?X2tqYNeM^E9yc8{2THyJ$z{kGDq0!j6Ui` z=)uMKF>XSgKQnct^Pj~+)PTD%2H!{R(GgTiTTo}A4Rt&Iwe5*HoCE6VsP=K#3m-+D ziBi-!K~$z+we6cRhWX8I3filEsM8!)2ex1|UPJ|U3As7u8fvS|C?_B{mQf90Io2UJ z*4)PFm@=BHi{+@T*nt}FJq#(b{S>s9r%=D`9jE|)N2R(4l~Px()1H9}cnB&Z`53^t z_#oC|6t<uia2{jvTh#NN*c;t><X;`BwCZ|fqEh6wj<Zg~c-o)BNL+wg$qN{VOHdQ7 zMg_jkx&bxrCe)#9KrQqDy75#V`PYOOXiy-XsKa+1wTE}@gD$VrpNM)f9piDRtru8} zt&=f<{#mHN%29zXK+W?K>a46Oq@er$Iw~dG@mXv{ZlH<glIu+5pth<cKYS*xE;4TB z#A%+Y;OeT%mBDaX;xn$=>nSI~t$m)32(L}u(#!Aj`U0N9qT<4_xjw(o=bkmwTN<pc zTv54vnRn82D}%)zzpt>!>l@?s2Ry#9#eRQy{GgnOh(LH@<}Z=SlQjIIVAYEGi>fLY bR|ms0Jfos&KN$XNxGj5YMEL8GS+V~Ct(`-v delta 3428 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 diff --git a/searx/translations/nl/LC_MESSAGES/messages.po b/searx/translations/nl/LC_MESSAGES/messages.po index b4e06140..be2438b8 100644 --- a/searx/translations/nl/LC_MESSAGES/messages.po +++ b/searx/translations/nl/LC_MESSAGES/messages.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-09-22 06:46+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-04-27 08:22+0000\n" "Last-Translator: André Koot <meneer@tken.net>\n" "Language-Team: Dutch (http://www.transifex.com/asciimoo/searx/language/nl/)\n" "MIME-Version: 1.0\n" @@ -33,63 +33,63 @@ msgstr "aanvraaguitzondering" msgid "unexpected crash" msgstr "onverwachte crash" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "bestanden" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "algemeen" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "muziek" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociale media" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "afbeeldingen" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "video’s" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "nieuws" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "kaart" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "wetenschap" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Ongeldige instellingen, werk je voorkeuren bij" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ongeldige instellingen" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "zoekfout" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} min geleden" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} uur, {minutes} min geleden" @@ -109,29 +109,28 @@ msgstr "Statistische functies" msgid "Compute {functions} of the arguments" msgstr "Bereken {functions} van de argumenten" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Snelheid zoekmachine (sec)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Laden van pagina’s (sec)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Aantal zoekresultaten" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Scores" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Scores per zoekresultaat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Fouten" @@ -143,9 +142,15 @@ msgstr "{title}&nbsp;(VEROUDERD)" msgid "This entry has been superseded by" msgstr "Dit object is vervangen door" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Voor deze publicatie is geen abstract beschikbaar." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI herschrijven" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Omzeil betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -159,16 +164,6 @@ msgstr "Oneindig scrollen" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Volgende pagina automatisch laden bij bereiken van de onderkant van de huidige pagina" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open Access DOI herschrijven" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Omzeil betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +326,8 @@ msgstr "Methode" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +399,8 @@ msgstr "Momenteel gebruikte zoekmachines" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +415,8 @@ msgstr "Categorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,7 +434,7 @@ msgstr "Blokkeren" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -449,7 +444,7 @@ msgstr "Deze instellingen worden bewaard in je cookies. Hierdoor hoeven wij niet #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +454,7 @@ msgstr "Deze cookies zijn alleen voor je eigen gemak, we gebruiken deze cookies #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +462,14 @@ msgstr "bewaren" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Standaardinstellingen herstellen" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +640,23 @@ msgid "General" msgstr "Algemeen" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Zoekmachines" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plug-ins" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Beantwoorders" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -712,88 +707,78 @@ msgstr "Kies een stijl voor dit thema" msgid "Style" msgstr "Stijl" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI herschrijven" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Doorverwijzen naar vrij toegankelijke versies van publicaties, indien beschikbaar (plug-in vereist)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Snelkoppeling" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Geselecteerde taal" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Tijdspanne" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Gem. duur" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Max. duur" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Dit is het overzicht van de instantantwoordmodules van searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Naam" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Kernwoorden" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Beschrijving" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Voorbeelden" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Dit is de lijst van cookies en hun waarden die searx op je computer opslaat." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Met deze lijst kan je de openheid van searx beoordelen." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookienaam" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Waarde" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Zoek-URL van de huidig opgeslagen voorkeuren" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/nl_BE/LC_MESSAGES/messages.mo b/searx/translations/nl_BE/LC_MESSAGES/messages.mo index e233f5c897b556f696f57774e9371b109bacd6a3..e37b9e27283047ba07920dc3e1dbe83b40ab3874 100644 GIT binary patch delta 3131 zcmYM$3rv+|9LMqJcn)^~QSpKbM@0lZ=Xf|cx#T6M=~zp|np-Af8YGt5kZ?8Ho6Y9Z zrIrKd&^4E|wY0ROgVM6g!VBhgx@6#NUYpu7HSJ>d{rNsy4EQ|H^S<x%|3Cldc@K2X zZ?AC9_x3d!zS{U1%uiR0djEfINirsl?pD;L&oBY^VjLc@9>kvXkK+^Ag}QGTgU?_9 z_54aq!PRcxF-<h$8Q6j?*n)lV$z)@OVkHj3m6(fLQ4_UWk773cQ%Fp650#jgC_^v_ zeVB(#Z9>=^AH!b8F=hr0Jy?lK<Rz@Yx<@xKF>1n#sQa#?Cc1~Jj4#!_-Vd|rXQCe` zVk}l#t5NeWvDRY>@r^^HAFe|MYC%8lM3wLudhsXJeO;&u+_u;ML?!0!WeiP|ib^mG zwbB6cZ6@(6gflUK4m!$c2MxIw6Y*<Q;KSC_sKmNafiI&1Tt_{3AGJ~s<xryWsPUet z(x+oRW+1y`-m~K$q*4D`2DUSx%=?orO*0ZTQ88+w3D^Ut;Rq~61zd*2HucDEnANxp zo3IdLIY>%;B5GmNP?ajT;}w0VzYb3o11jwrRN!qm23t@QpTSLd3Hde+eMu5GpeAlZ zCG<UN0Y~h37Y6BHMXfwN-CgK#97w;wp`idzp(dD%nqVR7b$k_7f%lPb)66g3w;Qzu zZOGi_2Rq)0+M=IPE4_*tc-vl2VU;=b)A4C^#?yF?#s<{ub_2^WrN1%ba2~26ji{Aw zMpa-tQf1SIT0jRXa3?D81=QBuKqdSD^}KI@Te(z>5Z@Hi2y<aEYJz6eq1lFd@FUE{ zo%Z@!)Sh;sDsTx^p<Ac`e_3Owub%IPIy?PQ3&}twnE9yB{*R)ez#&xNv8dBujM}p) zsFjqX9$a9@m!cABKyBG7)bmYtycw0?hp6Xv+5Uc1!iO<Y@Bb+^u-o2n4VBPcR3d+) z0>!YAnlKraPzGv+qj45SP?dTcskZsl+K#OrW6mQ}nI;aF64-@~R`>-CC2$Zm;VIOf zp2OLA4VB0wK2MimDXQO!TKTuAgiqV?bGVoOMI@%#oJqNH55E{Pr%{RC%4GkwvWzTu zf?=3LKNpoy8S45R)Ztu!I&`a0fj1!s+kA{#$N^M^ezg5ge4YL^)XEq7-Rp0lD!9h) zxTR`lK$%8S6CJ|<c3BgMt`&|$RcJhFPp4oimZ1`>M3uf4RpK?Mc{ZW~euFxMCy{e% z&NwtQ@vo={?x1dbfLdY7FgK7Nl~@3ILrn?l1F9TLa3w0C{iyp6p|<d>?O(RuM#b?A zckg!+Y3PA|s6EX_l{|!A9B0Q%P^Wt;ZpBj6O0U}ShuB2lm+dZ~8MQS#(2L)p7TRw6 zN0F^|%n2GQ={?jI{EPZT8#sdh2{44yu>+NPAD&W$2BXeM5S4Hda*KH!_5VUO`tU6b z<7)I{8}7q%sPktUNAfTOdr%YJ#8|wK+M|c4zyosKk`G0dwj4D+A6dMqvE%Pz9Q`e* zGqD{tPb;d@Cs12>9%G4b?$Xey{RdUDggiHaER3O_gGwxbdW{M(0cT?n=i@wFhx#bL ziM+9<bQFJAuo@@e9@JL+j*0jOI?Bv5+RZQn_1Rv4s=#zq#xqc_&s<bO^{9j!Pzk() zs$eS?;BTnXXLIy*e;&r;7}Whmn1Iy*>aPp0Frd@^8tQdgYi+iEf;}1EhduBRY9$@0 zvv3?0=mIM7E7qH+`R<_Z^ATN#HXT)gV37JJ(<ov<iA+NszB1GvzJR*%WqW;v?Z1i1 zjIYHc+-z;J?#5)szd|L}VaHFR;&h|V(3N}|TKQd6N#a6$%3&Jvs+u~~nb?Hds-2<e zk)*~RNoA8u{k2sqYHRAMq7^A~yc@5ieHlI3`&m!4q3`;*NH`cS^ye3s<QI(&N5bL6 znPtIQRrNK?YnCkyPJO<vs>B}&=NAXVkzk}i_l+%#P8gi$@f1d191`PAovP^<Rn;zE dxTv;faecJLKiRjjJNuW<b6P#oLAjIS{{zC>L!1Br delta 3433 zcmZYAeN5F=9LMp)gMd7xXjY<fB}53XUa$l$Qxlh_j<n`76}!MMxr%`IUNP~HJ2hRT zW=bliW^=jhVLH4%mM*DAR+!dmD_f7`YUW0k&*tp?>7J#PLtf{c-|u(M_xnBP_oH>j z$tObJrp2x^{Ck`Kz4(8wlX^G)wIvzTmF_XrrSGsap2B$SuwKMu`qyy`CezV<lkriU zj(WZsQ*nQ!A2O{p5*TR1?f3<D!$m2^^u^Vfj?I{Z$50bpu>Ofz^rM-TwM~CiV1uzY z-ixs~71OX3yWl)bG9hD@&`<!+;SAhhZ#a*dDDIZX#HmPZrYEW*{ZZG4Vg`;v7kV)c zmslH6^FMFhh)iv^VGq_f%``O8QFP%6RO!xQ3|_?^cpa5_55m{=UZ{+-kxQlk72pG? zOiPd-Q^v1>7{CFz4HeLF45{%YjYRwbHSrni1yo>4R|_Yg7Dz=smyXIb3l(Ud9Up`$ zc@fs(a8v+$klixv_WIeb)Zfp*1qPIXkFaT)g{TQvpcYz<(b$By<0iZf_h3J4Lk03X z60^CCDsdtQsRr-BLTo@K)PhR*!*0}HCH&l8_#SnbenFKyrF$fhESy9?2M1w2YJt~r z10F;kF_UiPT%dzmU==E`CRAcu?RYb~=^qNwP)SasDsTz!zywy;0-2}@@=+5Mp<dI6 zP?ed5JYs55_bo?l(JCY+^P(N!h1$Y>sDuw;PYfNkH?(6m1E=v3>`Hy7p@Vu2Td)M% zaR?4(AGAfYQJGewDzFf#zFCDz;APapyHE@7MQu?F5^%_TMne;Pg(}@oSb)it!Gj}E z6V##(RUInRMVNz2?DaQLd)thvz(G`nT2b>Kx1K~je+r}Z{-2?tOgc~z{$cyqQ47aV zCoS9=^>(D9w(NFPCfTUx3hnr4R3MX3TQ(K-{2V)8iwf{5Ow#+m%nqzUMf?&f;#aM^ z?e)W`fIdP6assu`NqhZAR6rf54E5QZ4DqN+J&x?2S!&&cq5V<DglUkhnZx%|0W3ph z_#7&b&8P`qMeXTMoPvi@fpqU<%v|h)>aRp)z8)3u4m-XR_tHOr#AvEBs6TDfkP-P- z??6S`ips15HNi#9#%rj6vRsktgHVUF5OwILqTYroR02y-rGDP_w_rW}H&6*@_YFmE z7|ARu-9%K0N>LHkp(a{`18}Rg4HejBRAsKC&Olsd<TXx11(b=J?;ccTC!*$=f?98B zh=vZ|3&_DYO{j^RQ4j1#-FO65(oazfwW9*-K;Bq$4fSE_ey1_Ruo!h;2zB2I)YfgZ z{T<fOJ{nr+ebfWT?1isTd-*eJE6!pJUbf@cP^UUR%a|>gjCyTfM`ipC#^QNgk5^EM ztmzloqHV~0A#;F+GCmX;Fz=$iaIMyM)ZXitO5Go|H3Ly!xN*1{OYuRxib`m7|Hy(9 zP-kWa#$zQirK!bqz5nZJDAL_nj{DJr={b=<#}n{v`g2i-H8+>fFpfn{ycpwfC29*B zQ31S(+LFDf(x0;9=aAx=YZ_;L)Az1OWFFL^DMC#&9<_HBs6F<h7HYu1Pc`baZ?WTH z>_q=9OvEFofIr60cpBY!4ofjJkNQuev6zNR{tZsVD>xj-a#YzPvm6ugSyW)_tUFQP z{0~rpeT@qEN7U=}8!DhgR!zn($dBpGFI8~7oB9u?@iYV4f&-`r4x>u=9`a+__@xZ4 z*zwqbk+&fQ^;a{)I><T#wO|QG<8)LaGf{`I9JNkxAoW+|^$f_xs0p93H#VV8^J}OI zv|tLhp#nUKI)v>QkC#yQY2$T03Dxh8dM*Q#&}|*+wT&_MhDoT%X4-KFHPJjw#d_3t zpaE5pO<0E8kxzh0;N<E|<e|1|lqdXR(z@vIeW{Pd+~q9`1pVIfpvxC<dF#BsDsNep z<9f2j?+R8jR6D<{%2)0U`f92hS9g6UZ&Z1?69~A9OUAkUPN1f$&heX)TBq9euL}$O zzMvBxn>I5luEOVc%7cyLk_*#ZIki>uXZfmma^8G~D{{lHbXyx=kni^7y9)A$4bIQ= z<a<1c50|(nJ9WMQYr2cQL1&n&z>{C(_6%_s-0kud4!dV)xH3IADr!i0ZLdx-;ny<m zkIkP_L&OzMy>laCM=8y6i0z*o%bY-YrEgA|*XwUQb?2`||BbxT@pFUUH@nWM{$E-* zT?~JcbucQWm^I0Nfp2!bQ{5Qo?a3bC@>N&(Sn;NXB3Zjhn|mE!Aeb9oo;@<*FK;cY AUjP6A diff --git a/searx/translations/nl_BE/LC_MESSAGES/messages.po b/searx/translations/nl_BE/LC_MESSAGES/messages.po index c4ef0228..21fa68cf 100644 --- a/searx/translations/nl_BE/LC_MESSAGES/messages.po +++ b/searx/translations/nl_BE/LC_MESSAGES/messages.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PROJECT project. # # Translators: -# Nathan Follens, 2018 +# Nathan Follens, 2018-2019 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-06-24 07:59+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 19:47+0000\n" "Last-Translator: Nathan Follens\n" "Language-Team: Dutch (Belgium) (http://www.transifex.com/asciimoo/searx/language/nl_BE/)\n" "MIME-Version: 1.0\n" @@ -31,63 +31,63 @@ msgstr "aanvraaguitzondering" msgid "unexpected crash" msgstr "onverwachte crash" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "bestanden" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "algemeen" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "muziek" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociale media" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "afbeeldingen" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "video’s" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "nieuws" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "kaart" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "wetenschap" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Ongeldige instellingen, werkt uw voorkeuren bij" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ongeldige instellingen" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "zoekfout" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} min geleden" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} uur, {minutes} min geleden" @@ -107,29 +107,28 @@ msgstr "Statistische functies" msgid "Compute {functions} of the arguments" msgstr "Berekent {functions} van de argumenten" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Snelheid zoekmachien (sec)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Laden van pagina’s (sec)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Aantal zoekresultaten" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Scores" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Scores per zoekresultaat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Fouten" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(VEROUDERD)" msgid "This entry has been superseded by" msgstr "Dit object is vervangen door" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Voor deze publicatie is geen abstract beschikbaar." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI herschrijven" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Omzeilt betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Oneindig scrollen" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Volgende pagina automatisch laden bij bereiken van den onderkant van de huidige pagina" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open Access DOI herschrijven" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Omzeilt betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Methode" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "Momenteel gebruikte zoekmachienen" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Categorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Blokkeren" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Deze instellingen worden bewaard in uw cookies. Hierdoor hoeven wij niks #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Deze cookies zijn alleen voor uw eigen gemak, we gebruiken deze cookies #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "opslaan" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Standaardinstellingen herstellen" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Algemeen" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Zoekmachienen" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Plug-ins" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Beantwoorders" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -710,88 +705,78 @@ msgstr "Kiest ne stijl voor dit thema" msgid "Style" msgstr "Stijl" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI herschrijven" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Doorverwijzen naar vrij toegankelijke versies van publicaties, indien beschikbaar (plug-in vereist)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Snelkoppeling" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Geselecteerde taal" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Tijdspanne" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Gem. duur" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Max. duur" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Dit is het overzicht van de instantantwoordmodules van searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Naam" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Kernwoorden" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Beschrijving" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Voorbeelden" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Dit is de lijst van cookies en hun waarden die searx op uwe computer opslaat." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Met deze lijst kunt ge de openheid van searx beoordelen." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookienaam" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Waarde" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Zoek-URL van de momenteel opgeslagen voorkeuren" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/oc/LC_MESSAGES/messages.mo b/searx/translations/oc/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..a9519a677b7a154b139478ba92117cbd2d06428f GIT binary patch literal 12157 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 literal 0 HcmV?d00001 diff --git a/searx/translations/oc/LC_MESSAGES/messages.po b/searx/translations/oc/LC_MESSAGES/messages.po new file mode 100644 index 00000000..40434393 --- /dev/null +++ b/searx/translations/oc/LC_MESSAGES/messages.po @@ -0,0 +1,999 @@ +# Translations template for PROJECT. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# Quentin, 2016,2018 +# Marc Abonce Seguin, 2019 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-04-12 23:05+0000\n" +"Last-Translator: Marc Abonce Seguin\n" +"Language-Team: Occitan (post 1500) (http://www.transifex.com/asciimoo/searx/language/oc/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: oc\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: searx/search.py:137 searx/search.py:182 +msgid "timeout" +msgstr "relambi passat" + +#: searx/search.py:144 +msgid "request exception" +msgstr "excepcion de requèsta" + +#: searx/search.py:151 +msgid "unexpected crash" +msgstr "fracàs pas previst" + +#: searx/webapp.py:135 +msgid "files" +msgstr "fichièrs" + +#: searx/webapp.py:136 +msgid "general" +msgstr "general" + +#: searx/webapp.py:137 +msgid "music" +msgstr "musica" + +#: searx/webapp.py:138 +msgid "social media" +msgstr "mèdias socials" + +#: searx/webapp.py:139 +msgid "images" +msgstr "imatges" + +#: searx/webapp.py:140 +msgid "videos" +msgstr "vidèos" + +#: searx/webapp.py:141 +msgid "it" +msgstr "tecnologia" + +#: searx/webapp.py:142 +msgid "news" +msgstr "actualitat" + +#: searx/webapp.py:143 +msgid "map" +msgstr "mapa" + +#: searx/webapp.py:144 +msgid "science" +msgstr "sciéncia" + +#: searx/webapp.py:398 searx/webapp.py:653 +msgid "Invalid settings, please edit your preferences" +msgstr "Paramètre pas valide, mercés de modificar vòstras preferéncias" + +#: searx/webapp.py:410 +msgid "Invalid settings" +msgstr "Paramètres invalids" + +#: searx/webapp.py:444 searx/webapp.py:488 +msgid "search error" +msgstr "error de recèrca" + +#: searx/webapp.py:525 +msgid "{minutes} minute(s) ago" +msgstr "fa {minutes} minuta(s)" + +#: searx/webapp.py:527 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "Fa {hours} ora(s), {minutes} minuta(s)" + +#: searx/answerers/random/answerer.py:53 +msgid "Random value generator" +msgstr "Generator aleatòri" + +#: searx/answerers/random/answerer.py:54 +msgid "Generate different random values" +msgstr "Crèa de valors aleatòrias diferentas" + +#: searx/answerers/statistics/answerer.py:53 +msgid "Statistics functions" +msgstr "Foncions estatisticas" + +#: searx/answerers/statistics/answerer.py:54 +msgid "Compute {functions} of the arguments" +msgstr "Calcula las {functions} dels arguments" + +#: searx/engines/__init__.py:194 +msgid "Engine time (sec)" +msgstr "Temps del motor (sec)" + +#: searx/engines/__init__.py:198 +msgid "Page loads (sec)" +msgstr "Pagina cargada en (sec) segondas" + +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 +#: searx/templates/simple/results.html:20 +msgid "Number of results" +msgstr "Nombre de resultats" + +#: searx/engines/__init__.py:206 +msgid "Scores" +msgstr "Marcas" + +#: searx/engines/__init__.py:210 +msgid "Scores per result" +msgstr "Marcas per resultat" + +#: searx/engines/__init__.py:214 +msgid "Errors" +msgstr "Errors" + +#: searx/engines/pdbe.py:87 +msgid "{title}&nbsp;(OBSOLETE)" +msgstr "{titre}&nbsp;(OBSOLETE)" + +#: searx/engines/pdbe.py:91 +msgid "This entry has been superseded by" +msgstr "Aqueste element es estat remplaçat per" + +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Reescritura DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evitar las paginas de pagament ne virant sus la version en accès liure quand es disponibla" + +#: searx/plugins/https_rewrite.py:32 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "Reescritura de los ligam HTTP en HTTPS s'es possible." + +#: searx/plugins/infinite_scroll.py:3 +msgid "Infinite scroll" +msgstr "Desfilament sens fin" + +#: searx/plugins/infinite_scroll.py:4 +msgid "Automatically load next page when scrolling to bottom of current page" +msgstr "Carga automaticament la pagina seguenta quand arribatz en fin de pagina" + +#: searx/plugins/open_results_on_new_tab.py:18 +#: searx/templates/oscar/preferences.html:114 +#: searx/templates/simple/preferences.html:149 +msgid "Open result links on new browser tabs" +msgstr "Dubrir los ligams de resultats dins un nòu onglet" + +#: searx/plugins/open_results_on_new_tab.py:19 +msgid "" +"Results are opened in the same window by default. This plugin overwrites the" +" default behaviour to open links on new tabs/windows. (JavaScript required)" +msgstr "Los resultats son dobèrts dins una nòva fenestra per defaut. Aquesta extension càmbia lo comportement per defaut per dobrir los ligams dins de nòus onglets o fenestras (Javascript es necessari)" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "Cercar dins la categoria causida" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "Lança la recèrca sul còp se una categoria es seleccionada. Desactivar per seleccionar mai d'una categoria (Javascript necessari)." + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "Aficha vòstre adreça IP se la demanda es \"ip\", e aficha vòstre user-agent se la demanda conten \"user agent\"." + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "Netejador d'URL de traçat" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "Lèva los arguments de las URL utilizats per vos traçar" + +#: searx/plugins/vim_hotkeys.py:3 +msgid "Vim-like hotkeys" +msgstr "Acorchis coma Vim" + +#: searx/plugins/vim_hotkeys.py:4 +msgid "" +"Navigate search results with Vim-like hotkeys (JavaScript required). Press " +"\"h\" key on main or result page to get help." +msgstr "Percorrètz los resultats de recèrca amb d'acorchis clavièr coma sus Vim (Javascript necessari). Picatz sus \"h\" dins la fenestra principala de resultats per afichar l'ajuda." + +#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4 +#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4 +#: searx/templates/simple/404.html:4 +msgid "Page not found" +msgstr "Pagina pas trobada" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +#, python-format +msgid "Go to %(search_page)s." +msgstr "Anar a %(search_page)s." + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +msgid "search page" +msgstr "cercar dins la pagina" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12 +#: searx/templates/oscar/navbar.html:7 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "preferéncias" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2 +#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "a prepaus" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/legacy/preferences.html:5 +#: searx/templates/oscar/preferences.html:8 +#: searx/templates/pix-art/preferences.html:5 +#: searx/templates/simple/preferences.html:26 +msgid "Preferences" +msgstr "Preferéncias" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/legacy/preferences.html:9 +#: searx/templates/oscar/preferences.html:33 +#: searx/templates/oscar/preferences.html:35 +#: searx/templates/simple/preferences.html:34 +msgid "Default categories" +msgstr "Categoria per defaut" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/legacy/preferences.html:14 +#: searx/templates/oscar/preferences.html:41 +#: searx/templates/pix-art/preferences.html:9 +#: searx/templates/simple/preferences.html:39 +#: searx/templates/simple/preferences.html:163 +msgid "Search language" +msgstr "Lenga de recerca" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/legacy/preferences.html:17 +#: searx/templates/oscar/languages.html:6 +#: searx/templates/pix-art/preferences.html:12 +#: searx/templates/simple/languages.html:2 +#: searx/templates/simple/preferences.html:42 +msgid "Default language" +msgstr "Lenga per defaut" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/legacy/preferences.html:25 +#: searx/templates/oscar/preferences.html:47 +#: searx/templates/pix-art/preferences.html:20 +#: searx/templates/simple/preferences.html:120 +msgid "Interface language" +msgstr "Lenga de l'interfàcia" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/legacy/preferences.html:35 +#: searx/templates/oscar/preferences.html:57 +#: searx/templates/simple/preferences.html:51 +msgid "Autocomplete" +msgstr "Autocompletar" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/legacy/preferences.html:46 +#: searx/templates/oscar/preferences.html:68 +#: searx/templates/simple/preferences.html:166 +msgid "Image proxy" +msgstr "Proxy pels imatges" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/legacy/preferences.html:49 +#: searx/templates/oscar/preferences.html:72 +#: searx/templates/simple/preferences.html:169 +msgid "Enabled" +msgstr "Activat" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/legacy/preferences.html:50 +#: searx/templates/oscar/preferences.html:73 +#: searx/templates/simple/preferences.html:170 +msgid "Disabled" +msgstr "Desactivat" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/legacy/preferences.html:55 +#: searx/templates/oscar/preferences.html:77 +#: searx/templates/pix-art/preferences.html:30 +#: searx/templates/simple/preferences.html:156 +msgid "Method" +msgstr "Metòde" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/legacy/preferences.html:64 +#: searx/templates/oscar/preferences.html:86 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 +#: searx/templates/simple/preferences.html:63 +#: searx/templates/simple/preferences.html:90 +msgid "SafeSearch" +msgstr "Recèrca segurizada" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/legacy/preferences.html:67 +#: searx/templates/oscar/preferences.html:90 +#: searx/templates/simple/preferences.html:66 +msgid "Strict" +msgstr "Estricte" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/legacy/preferences.html:68 +#: searx/templates/oscar/preferences.html:91 +#: searx/templates/simple/preferences.html:67 +msgid "Moderate" +msgstr "Moderat" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/legacy/preferences.html:69 +#: searx/templates/oscar/preferences.html:92 +#: searx/templates/simple/preferences.html:68 +msgid "None" +msgstr "Cap" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/legacy/preferences.html:74 +#: searx/templates/oscar/preferences.html:96 +#: searx/templates/pix-art/preferences.html:39 +#: searx/templates/simple/preferences.html:131 +msgid "Themes" +msgstr "Tèmas" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "Color" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "Blau (defaut)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "Violet" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "Verd" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "Blau" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "Irange" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "Roge" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/legacy/preferences.html:93 +#: searx/templates/pix-art/preferences.html:49 +#: searx/templates/simple/preferences.html:77 +msgid "Currently used search engines" +msgstr "Motors de recèrca utilizat actualament" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/legacy/preferences.html:97 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 +#: searx/templates/pix-art/preferences.html:53 +#: searx/templates/simple/preferences.html:87 +msgid "Engine name" +msgstr "Nom del motor de cerca" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/legacy/preferences.html:98 +msgid "Category" +msgstr "Categoria" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:110 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +#: searx/templates/simple/preferences.html:86 +msgid "Allow" +msgstr "Autorizar" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:111 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "Blocar" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/legacy/preferences.html:119 +#: searx/templates/oscar/preferences.html:285 +#: searx/templates/pix-art/preferences.html:73 +#: searx/templates/simple/preferences.html:180 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "Aquestes paramètres son gardats dins vòstres cookies : aquò nos permet pas de collectar vòstras donadas." + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/legacy/preferences.html:121 +#: searx/templates/oscar/preferences.html:287 +#: searx/templates/pix-art/preferences.html:75 +#: searx/templates/simple/preferences.html:182 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "Aquestes cookies existon per vòstre confòrt d'utilizacion, los empleguem pas per vos espiar." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/legacy/preferences.html:124 +#: searx/templates/oscar/preferences.html:293 +#: searx/templates/pix-art/preferences.html:78 +#: searx/templates/simple/preferences.html:185 +msgid "save" +msgstr "enregistrar" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/legacy/preferences.html:125 +#: searx/templates/oscar/preferences.html:295 +#: searx/templates/simple/preferences.html:186 +msgid "Reset defaults" +msgstr "Reïnicializar per defaut" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/legacy/preferences.html:126 +#: searx/templates/oscar/preferences.html:294 +#: searx/templates/pix-art/preferences.html:79 +#: searx/templates/simple/preferences.html:187 +msgid "back" +msgstr "tornar" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/legacy/results.html:13 +#: searx/templates/oscar/results.html:136 +#: searx/templates/simple/results.html:58 +msgid "Search URL" +msgstr "URL de recèrca" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/legacy/results.html:17 +#: searx/templates/oscar/results.html:141 +#: searx/templates/simple/results.html:62 +msgid "Download results" +msgstr "Telecargar los resultats" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/legacy/results.html:35 +#: searx/templates/simple/results.html:10 +msgid "Answers" +msgstr "Responsas" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/legacy/results.html:43 +#: searx/templates/oscar/results.html:116 +#: searx/templates/simple/results.html:42 +msgid "Suggestions" +msgstr "Suggestions" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/legacy/results.html:81 +#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78 +#: searx/templates/simple/results.html:130 +msgid "previous page" +msgstr "pagina precedenta" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/legacy/results.html:92 +#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84 +#: searx/templates/simple/results.html:145 +msgid "next page" +msgstr "pagina seguenta" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4 +msgid "Search for..." +msgstr "Cerca per..." + +#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +#: searx/templates/simple/stats.html:7 +msgid "Engine stats" +msgstr "Estatistica del motor" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/legacy/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "contèxte d'origina" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Seeder" +msgstr "Fonts" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Leecher" +msgstr "Telecargaires" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/legacy/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:23 +#: searx/templates/simple/result_templates/torrent.html:6 +msgid "magnet link" +msgstr "ligam magnet" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/legacy/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:24 +#: searx/templates/simple/result_templates/torrent.html:7 +msgid "torrent file" +msgstr "fichièr torrent" + +#: searx/templates/legacy/categories.html:8 +#: searx/templates/simple/categories.html:6 +msgid "Click on the magnifier to perform search" +msgstr "Clicatz sus la lópia per lançar una recèrca" + +#: searx/templates/legacy/preferences.html:84 +#: searx/templates/oscar/preferences.html:113 +#: searx/templates/simple/preferences.html:142 +msgid "Results on new tabs" +msgstr "Resultat dins de nòus onglets" + +#: searx/templates/legacy/preferences.html:87 +#: searx/templates/oscar/preferences.html:117 +#: searx/templates/simple/preferences.html:145 +msgid "On" +msgstr "Òc" + +#: searx/templates/legacy/preferences.html:88 +#: searx/templates/oscar/preferences.html:118 +#: searx/templates/simple/preferences.html:146 +msgid "Off" +msgstr "Non" + +#: searx/templates/legacy/result_templates/code.html:3 +#: searx/templates/legacy/result_templates/default.html:3 +#: searx/templates/legacy/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48 +#: searx/templates/simple/macros.html:43 +msgid "cached" +msgstr "en version locala" + +#: searx/templates/oscar/advanced.html:4 +msgid "Advanced settings" +msgstr "Paramètres avançats" + +#: searx/templates/oscar/base.html:62 +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "Tampar" + +#: searx/templates/oscar/base.html:64 +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +#: searx/templates/simple/results.html:25 +msgid "Error!" +msgstr "Error !" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "Powered by" +msgstr "Propulsat per" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "un meta-motor de recèrca hackable e respectuós de la vida privada" + +#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50 +#: searx/templates/simple/macros.html:43 +msgid "proxied" +msgstr "proxifiat" + +#: searx/templates/oscar/macros.html:92 +msgid "supported" +msgstr "compatible" + +#: searx/templates/oscar/macros.html:96 +msgid "not supported" +msgstr "pas compatible" + +#: searx/templates/oscar/preferences.html:13 +#: searx/templates/oscar/preferences.html:22 +#: searx/templates/simple/preferences.html:32 +msgid "General" +msgstr "General" + +#: searx/templates/oscar/preferences.html:14 +#: searx/templates/oscar/preferences.html:134 +#: searx/templates/simple/preferences.html:76 +msgid "Engines" +msgstr "Motors de cerca" + +#: searx/templates/oscar/preferences.html:15 +#: searx/templates/oscar/preferences.html:207 +msgid "Plugins" +msgstr "Extensions" + +#: searx/templates/oscar/preferences.html:16 +#: searx/templates/oscar/preferences.html:233 +msgid "Answerers" +msgstr "Respondaires" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:260 +msgid "Cookies" +msgstr "Cookies" + +#: searx/templates/oscar/preferences.html:42 +#: searx/templates/simple/preferences.html:48 +msgid "What language do you prefer for search?" +msgstr "Dins quina lenga vos agrada mai cercar ?" + +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/simple/preferences.html:128 +msgid "Change the language of the layout" +msgstr "Cambiar la lenga de l'interfàcia" + +#: searx/templates/oscar/preferences.html:58 +#: searx/templates/simple/preferences.html:60 +msgid "Find stuff as you type" +msgstr "Trobar de causas pendent que picatz" + +#: searx/templates/oscar/preferences.html:69 +#: searx/templates/simple/preferences.html:173 +msgid "Proxying image results through searx" +msgstr "Proxifiar los imatges de resultats a travers searx" + +#: searx/templates/oscar/preferences.html:78 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "Permet de causir cossí la recèrca es mandada, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\"> per ne saber mai suls metòdes HTTP</a>" + +#: searx/templates/oscar/preferences.html:87 +#: searx/templates/simple/preferences.html:71 +msgid "Filter content" +msgstr "Filtrar lo contengut" + +#: searx/templates/oscar/preferences.html:97 +#: searx/templates/simple/preferences.html:139 +msgid "Change searx layout" +msgstr "Cambiar l'interfàcia de searx" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Choose style for this theme" +msgstr "Causir un estil per aqueste tèma" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Style" +msgstr "Estil" + +#: searx/templates/oscar/preferences.html:151 +#: searx/templates/oscar/preferences.html:163 +#: searx/templates/simple/preferences.html:88 +msgid "Shortcut" +msgstr "Acorchis" + +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 +msgid "Selected language" +msgstr "Seleccionatz una lenga" + +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 +#: searx/templates/simple/preferences.html:91 +msgid "Time range" +msgstr "Espaci temporal" + +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 +#: searx/templates/simple/preferences.html:92 +msgid "Avg. time" +msgstr "Temps mejan" + +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 +#: searx/templates/simple/preferences.html:93 +msgid "Max time" +msgstr "Temps max" + +#: searx/templates/oscar/preferences.html:236 +msgid "This is the list of searx's instant answering modules." +msgstr "Vaquí la lista dels module de searx que dònan de responsa instantanèas." + +#: searx/templates/oscar/preferences.html:240 +msgid "Name" +msgstr "Nom" + +#: searx/templates/oscar/preferences.html:241 +msgid "Keywords" +msgstr "Mots claus" + +#: searx/templates/oscar/preferences.html:242 +msgid "Description" +msgstr "Descripcion" + +#: searx/templates/oscar/preferences.html:243 +msgid "Examples" +msgstr "Exemples" + +#: searx/templates/oscar/preferences.html:263 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "S'agís de la lista dels cookies e de lors valors que searx enregistra sus vòstre ordinador." + +#: searx/templates/oscar/preferences.html:264 +msgid "With that list, you can assess searx transparency." +msgstr "Amb aquesta lista, podètz jutjar de la transparéncia de searx." + +#: searx/templates/oscar/preferences.html:269 +msgid "Cookie name" +msgstr "Nom del cookie" + +#: searx/templates/oscar/preferences.html:270 +msgid "Value" +msgstr "Valor" + +#: searx/templates/oscar/preferences.html:289 +msgid "Search URL of the currently saved preferences" +msgstr "URL de recèrca actuala dels paramètres enregistrats" + +#: searx/templates/oscar/preferences.html:289 +msgid "" +"Note: specifying custom settings in the search URL can reduce privacy by " +"leaking data to the clicked result sites." +msgstr "Nòta : especificar de paramètres personalizats en l’URL pòt reduire la privacitat en revelar de donadas als sites de resultat clicats." + +#: searx/templates/oscar/results.html:17 +msgid "Search results" +msgstr "Resultats de la recerca" + +#: searx/templates/oscar/results.html:21 +#: searx/templates/simple/results.html:84 +msgid "Try searching for:" +msgstr "Ensajatz de cercar :" + +#: searx/templates/oscar/results.html:100 +#: searx/templates/simple/results.html:25 +msgid "Engines cannot retrieve results" +msgstr "Los cercadors pòdons pas recuperar los resultats" + +#: searx/templates/oscar/results.html:131 +msgid "Links" +msgstr "Ligams" + +#: searx/templates/oscar/search.html:8 +#: searx/templates/oscar/search_full.html:11 +#: searx/templates/simple/search.html:5 +msgid "Start search" +msgstr "Començar de cercar" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "estatisticas" + +#: searx/templates/oscar/time-range.html:3 +#: searx/templates/simple/time-range.html:3 +msgid "Anytime" +msgstr "Impòrta pas quand" + +#: searx/templates/oscar/time-range.html:6 +#: searx/templates/simple/time-range.html:6 +msgid "Last day" +msgstr "Ièr" + +#: searx/templates/oscar/time-range.html:9 +#: searx/templates/simple/time-range.html:9 +msgid "Last week" +msgstr "La setmana passada" + +#: searx/templates/oscar/time-range.html:12 +#: searx/templates/simple/time-range.html:12 +msgid "Last month" +msgstr "Lo mes passat" + +#: searx/templates/oscar/time-range.html:15 +#: searx/templates/simple/time-range.html:15 +msgid "Last year" +msgstr "L'an passat" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "Astúcia !" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "Sembla qu'utilizatz searx pel primièr còp." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "Informacion !" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "pel moment i a pas cap de cookie definit" + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "Pel moment i a pas cap de donada disponibla." + +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +msgid "Engines cannot retrieve results." +msgstr "Los cercadors pòdons pas recuperar los resultats." + +#: searx/templates/oscar/messages/no_results.html:10 +#: searx/templates/simple/messages/no_results.html:10 +msgid "Please, try again later or find another searx instance." +msgstr "Mercés de tornar ensajar o de trobar una instància searx mai" + +#: searx/templates/oscar/messages/no_results.html:14 +#: searx/templates/simple/messages/no_results.html:14 +msgid "Sorry!" +msgstr "O planhèm !" + +#: searx/templates/oscar/messages/no_results.html:15 +#: searx/templates/simple/messages/no_results.html:15 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "avèm pas trobat cap de resultat. Mercés d'utilizar une autre mot clau o de cercar dins autras categorias." + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "Òsca !" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "Paramètres salvagardats amb succès." + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "Bondu!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "Quicòm a fracassat." + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "show media" +msgstr "mostrar mèdias" + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "hide media" +msgstr "escondre mèdias" + +#: searx/templates/oscar/result_templates/images.html:30 +msgid "Get image" +msgstr "Obténer l'imatge" + +#: searx/templates/oscar/result_templates/images.html:33 +msgid "View source" +msgstr "Veire font" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "show map" +msgstr "mostrar la mapa" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "hide map" +msgstr "escondre la mapa" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "show details" +msgstr "mostrar detalhs" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "hide details" +msgstr "escondre detalhs" + +#: searx/templates/oscar/result_templates/torrent.html:7 +#: searx/templates/simple/result_templates/torrent.html:11 +msgid "Filesize" +msgstr "Talha del fichièr" + +#: searx/templates/oscar/result_templates/torrent.html:9 +#: searx/templates/simple/result_templates/torrent.html:12 +msgid "Bytes" +msgstr "octets" + +#: searx/templates/oscar/result_templates/torrent.html:10 +#: searx/templates/simple/result_templates/torrent.html:13 +msgid "kiB" +msgstr "kiO" + +#: searx/templates/oscar/result_templates/torrent.html:11 +#: searx/templates/simple/result_templates/torrent.html:14 +msgid "MiB" +msgstr "MiO" + +#: searx/templates/oscar/result_templates/torrent.html:12 +#: searx/templates/simple/result_templates/torrent.html:15 +msgid "GiB" +msgstr "GiO" + +#: searx/templates/oscar/result_templates/torrent.html:13 +#: searx/templates/simple/result_templates/torrent.html:16 +msgid "TiB" +msgstr "TiO" + +#: searx/templates/oscar/result_templates/torrent.html:15 +#: searx/templates/simple/result_templates/torrent.html:20 +msgid "Number of Files" +msgstr "Nombre de fichièrs" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "show video" +msgstr "mostrar la vidèo" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "hide video" +msgstr "escondre la vidèo" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "Ne cargar mai..." + +#: searx/templates/simple/base.html:31 +msgid "No item found" +msgstr "Cap d’element pas trobat" + +#: searx/templates/simple/preferences.html:89 +msgid "Supports selected language" +msgstr "Compatible amb las lengas seleccionadas" + +#: searx/templates/simple/preferences.html:118 +msgid "User interface" +msgstr "Interfàcia utilizaire" + +#: searx/templates/simple/preferences.html:154 +msgid "Privacy" +msgstr "Privacitat" diff --git a/searx/translations/pl/LC_MESSAGES/messages.mo b/searx/translations/pl/LC_MESSAGES/messages.mo index e4a45101313dc97971e3eedd54aacfac782e74f1..595154a686abacf725d34536e2b88bff6fa228f9 100644 GIT binary patch delta 14 VcmaEm{2+M)lN_V@W@fp&!T>J&1ycY3 delta 14 VcmaEm{2+M)lN_VjW@fp&!T>Jy1yTS2 diff --git a/searx/translations/pt/LC_MESSAGES/messages.mo b/searx/translations/pt/LC_MESSAGES/messages.mo index d88c449f1e0530c8d6bcf10b2865ce456bee8e64..e6fa6dc5b7a96e3b6d9cfc30a9ba55eabd0af54f 100644 GIT binary patch delta 3150 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 DOv_4& delta 3512 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 S&tol`=?h0kXRoc?)#oq8naei- diff --git a/searx/translations/pt/LC_MESSAGES/messages.po b/searx/translations/pt/LC_MESSAGES/messages.po index d8446731..f9342cd2 100644 --- a/searx/translations/pt/LC_MESSAGES/messages.po +++ b/searx/translations/pt/LC_MESSAGES/messages.po @@ -4,14 +4,14 @@ # # Translators: # Dickprince, 2017 -# Chacal Exodius, 2018 +# C. E., 2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-12-26 22:43+0000\n" -"Last-Translator: Chacal Exodius\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Dickprince\n" "Language-Team: Portuguese (http://www.transifex.com/asciimoo/searx/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +32,63 @@ msgstr "solicitar exceção" msgid "unexpected crash" msgstr "acidente inesperado" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "ficheiros" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "geral" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "música" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "redes sociais" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "imagens" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "vídeos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "ti" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "notícias" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapa" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "ciência" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Definições inválidas, por favor edite as suas preferências" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Configurações inválidas" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "erro de procura" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} minuto(s) atrás" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} hora(s), {minutes} minuto(s) atrás" @@ -108,29 +108,28 @@ msgstr "Funções de estatística" msgid "Compute {functions} of the arguments" msgstr "Calcular {functions} dos argumentos" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Tempo de pesquisa (seg)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Página carregada (seg)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Número de resultados" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Contagens" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Contagens por resultado" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Erros" @@ -142,9 +141,15 @@ msgstr "{title}&nbsp;(OBSOLETE)" msgid "This entry has been superseded by" msgstr "Esta entrada foi substituída por" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Nenhum resumo está disponível para esta publicação." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Reformulação DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evite acessos pagos acedendo a versões de livre acesso sempre que disponível" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -158,16 +163,6 @@ msgstr "Deslocação Infinita" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Carregar automaticamente a próxima página assim que se desloque para o fim da página atual" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Reescrita DOI de acesso aberto" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Evite acessos pagos acedendo a versões de livre acesso sempre que disponível" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +325,8 @@ msgstr "Método" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +398,8 @@ msgstr "Motores de pesquisa utilizados" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +414,8 @@ msgstr "Categoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +433,7 @@ msgstr "Bloquear" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +443,7 @@ msgstr "Estas definições são guardadas nos seus cookies, isto permite-nos que #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +453,7 @@ msgstr "Estes cookies servem somente para sua conveniência, não os utilizamos #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +461,14 @@ msgstr "Guardar" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Repor predefinições" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +639,23 @@ msgid "General" msgstr "Geral" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motores de pesquisa" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Extensões" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Remetente" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -711,88 +706,78 @@ msgstr "Escolher estilo para este tema" msgid "Style" msgstr "Estilo" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Resolvedor DOI de Acesso Aberto" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Redirecionar para versões de acesso aberto de publicações quando disponíveis (requer plug-in)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Atalho" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Idioma selecionado" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Período de tempo" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Tempo médio" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Tempo máximo" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Esta é a lista dos modulos instantâneos de resposta do searx" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nome" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Palavras-chave" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descrição" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exemplos" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Esta é a lista de cookies e os valores que o searx está a guardar no seu computador." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Com essa lista pode aceder à transparência do searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nome de cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valor" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL de pesquisa das preferências salvas atualmente" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/pt_BR/LC_MESSAGES/messages.mo b/searx/translations/pt_BR/LC_MESSAGES/messages.mo index 03eb74f4ef2d72d938e9ef78fcfb4b5058fa8f41..c37882dc6d07569dabdd69a6bdb3600f59a43fe6 100644 GIT binary patch delta 3155 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 delta 3493 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 IF1jY`A6KNqG5`Po diff --git a/searx/translations/pt_BR/LC_MESSAGES/messages.po b/searx/translations/pt_BR/LC_MESSAGES/messages.po index 6a0a6b83..18bae82a 100644 --- a/searx/translations/pt_BR/LC_MESSAGES/messages.po +++ b/searx/translations/pt_BR/LC_MESSAGES/messages.po @@ -4,9 +4,9 @@ # # Translators: # Adam Tauber <asciimoo@gmail.com>, 2017 -# Chacal Exodius, 2018 +# C. E., 2018 # Gabriel Nunes <gabriel.hkr@gmail.com>, 2017 -# Guimarães Mello <maeslor@cryptolab.net>, 2017 +# Guimarães Mello <matheus.mello@disroot.org>, 2017 # Neton Brício <fervelinux@gmail.com>, 2015 # pizzaiolo, 2016 # shizuka, 2018 @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-08-06 05:21+0000\n" -"Last-Translator: Chacal Exodius\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: pizzaiolo\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/asciimoo/searx/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,63 +37,63 @@ msgstr "falha na requisição" msgid "unexpected crash" msgstr "erro inesperado" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "arquivos" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "geral" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "áudio" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "redes sociais" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "imagens" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "vídeos" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "códigos" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "notícias" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapas" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "ciência" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Configurações inválidas, por favor, edite suas preferências" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Configurações inválidas" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "erro de busca" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutos} minuto(s) atrás" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} hora(s), {minutes} minuto(s) atrás" @@ -113,29 +113,28 @@ msgstr "Funções estatísticas" msgid "Compute {functions} of the arguments" msgstr "Compute {functions} dos argumentos" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Tempo do motor (segundos)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Carregamento da página (sec)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Número de resultados" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Pontuações" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Pontuações por resultado" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Erros" @@ -147,9 +146,15 @@ msgstr "{title}&nbsp;(OBSOLETA)" msgid "This entry has been superseded by" msgstr "Esta entrada foi substituída por" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Nenhum resumo disponível para essa publicação." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Redirecionamento ao DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evita \"paywalls\" ao redirecionar para versões de acesso livre de publicações, quando possível" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -163,16 +168,6 @@ msgstr "Scroll infinito" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Automaticamente carregar a próxima página quando ir até o fim da página atual" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Reescrita DOI de acesso aberto" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Evita \"paywalls\" ao redirecionar para versões de acesso livre de publicações, quando possível" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -335,8 +330,8 @@ msgstr "Método" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -408,8 +403,8 @@ msgstr "Serviço de busca usado atualmente" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -424,8 +419,8 @@ msgstr "Categoria" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -443,7 +438,7 @@ msgstr "Bloqueado" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -453,7 +448,7 @@ msgstr "Essas configurações são armazenadas em seus cookies, nos não armazen #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -463,7 +458,7 @@ msgstr "Estes cookies servem ao seu único propósito, nós não usamos esses co #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -471,14 +466,14 @@ msgstr "salvar" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Redefinir configurações" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -649,23 +644,23 @@ msgid "General" msgstr "Geral" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Buscadores" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Complementos" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Operadores de Resposta" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -716,88 +711,78 @@ msgstr "Escolher um estilo para este tema" msgid "Style" msgstr "Estilo" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Resolvedor DOI de Acesso Aberto" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Quando disponível, redirecionar para as versões de acesso livre das publicações (necessário plugin)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Atalhos" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Idioma selecionado" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Intervalo de tempo" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Tempo médio" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Tempo máximo" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Esta é a lista do módulos de resposta instantânea do searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nome" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Palavras-chave" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descrição" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exemplos" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Esta é a lista de cookies que o searx está armazenando em seu computador." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Com essa lista, você pode avaliar a transparência do searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nome do cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valor" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL de Pesquisa das configurações salvas atuais" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/ro/LC_MESSAGES/messages.mo b/searx/translations/ro/LC_MESSAGES/messages.mo index f39068576a8fcf5372486df10ab0a289f07b141b..d90ed5144f2692624bc854c9c4561e41ef3e30b6 100644 GIT binary patch delta 3167 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 N&hBvpdvhwH{sUXNNo@cC delta 3501 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 diff --git a/searx/translations/ro/LC_MESSAGES/messages.po b/searx/translations/ro/LC_MESSAGES/messages.po index 7cfd1be3..625feea8 100644 --- a/searx/translations/ro/LC_MESSAGES/messages.po +++ b/searx/translations/ro/LC_MESSAGES/messages.po @@ -4,14 +4,16 @@ # # Translators: # adrian.fita <adrian.fita@gmail.com>, 2015 +# adrian.fita <adrian.fita@gmail.com>, 2015 # Daniel Șerbănescu <daniel@serbanescu.dk>, 2018 +# Mihai Pora <mihai.pora@gmail.com>, 2019 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-11-15 21:18+0000\n" -"Last-Translator: Daniel Șerbănescu <daniel@serbanescu.dk>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-08-31 18:38+0000\n" +"Last-Translator: Mihai Pora <mihai.pora@gmail.com>\n" "Language-Team: Romanian (http://www.transifex.com/asciimoo/searx/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,63 +34,63 @@ msgstr "excepție la cerere" msgid "unexpected crash" msgstr "terminare prematură neașteptată" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "fișiere" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "generale" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "muzică" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "rețele sociale" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "imagini" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videouri" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "informatică" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "știri" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "hărți" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "știință" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Configurări nevalide, editați preferințele" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Configurări nevalide" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "eroare de căutare" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} minut(e) în urmă" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} oră(e), {minutes} minut(e) în urmă" @@ -108,29 +110,28 @@ msgstr "Funcții statistice" msgid "Compute {functions} of the arguments" msgstr "Calculează {functions} din argumente" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Timpul motorului (sec)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Încărcarea paginii (sec)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Numărul de rezultate" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Scoruri" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Scoruri per rezultat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Erori" @@ -142,9 +143,15 @@ msgstr "{title}&nbsp;(ÎNVECHIT)" msgid "This entry has been superseded by" msgstr "Această intrare a fost perimată de" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Niciun abstract disponibil pentru această publicație." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Rescriere DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Evită „zidurile de plată” redirecționând către versiuni cu acces deschis ale publicațiilor când sunt disponibile" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -158,16 +165,6 @@ msgstr "Derulare infinită" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Încarcă automat pagina următoare când se derulează la baza paginii curente" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Rescriere către acces deschis DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Evită „zidurile de plată” redirecționând către versiuni cu acces deschis ale publicațiilor când sunt disponibile" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -330,8 +327,8 @@ msgstr "Metodă" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -403,8 +400,8 @@ msgstr "Motoarele de căutare folosite curent" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -419,8 +416,8 @@ msgstr "Categorie" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -438,7 +435,7 @@ msgstr "Blochează" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -448,7 +445,7 @@ msgstr "Aceste configurări sunt stocate în cookie-uri, ceea ce ne permite să #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -458,7 +455,7 @@ msgstr "Aceste cookie-uri servesc doar pentru conveniența dumneavoastră, noi n #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -466,14 +463,14 @@ msgstr "salvează" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Restabilește la valorile implicite" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -644,23 +641,23 @@ msgid "General" msgstr "Generale" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motoare" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Module" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Răspunzători" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookie-uri" @@ -711,88 +708,78 @@ msgstr "Alegeți stilul pentru această temă" msgid "Style" msgstr "Stil" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Rezolvator de acces deschis DOI" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Redirecționează către versiuni cu acces deschis ale publicațiilor când sunt disponibile (modul necesar)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Scurtătură" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Limba selectată" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Interval de timp" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Timp mediu" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Timp maxim" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Aceasta este lista de module de răspundere instantă a lui searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Nume" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Cuvinte cheie" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Descriere" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exemple" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Aceasta este lista de cookie-uri și valorile lor pe care searx le stochează pe calculatorul dumneavoastră." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Cu acea listă puteți evalua nivelul de transparență al lui searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Nume cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Valuare" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL-ul de căutare al preferințelor salvate curent" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/ru/LC_MESSAGES/messages.mo b/searx/translations/ru/LC_MESSAGES/messages.mo index c6bcdd1b6d98e2b26ed5243ae4904c45c97be8d4..7132a8c1f36ce2527cdf84511b4891869dd40d1c 100644 GIT binary patch delta 3142 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 M$3z4_AG$C8KlWQxdH?_b delta 3608 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 diff --git a/searx/translations/ru/LC_MESSAGES/messages.po b/searx/translations/ru/LC_MESSAGES/messages.po index befe7f96..ec7975b5 100644 --- a/searx/translations/ru/LC_MESSAGES/messages.po +++ b/searx/translations/ru/LC_MESSAGES/messages.po @@ -5,7 +5,7 @@ # Translators: # Andrey, 2017-2019 # dimqua <dimqua@riseup.net>, 2015 -# dimqua <dimqua@riseup.net>, 2015 +# dimqua <dimqua@riseup.net>, 2015,2017 # dimqua <dimqua@riseup.net>, 2017 # John DOe <is-kir@ya.ru>, 2018 # Дмитрий Михирев, 2016-2017 @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2019-01-05 12:11+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" "Last-Translator: Andrey\n" "Language-Team: Russian (http://www.transifex.com/asciimoo/searx/language/ru/)\n" "MIME-Version: 1.0\n" @@ -36,63 +36,63 @@ msgstr "ошибка выполнения запроса" msgid "unexpected crash" msgstr "неожиданный сбой" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "файлы" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "общие" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "музыка" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "социальные сети" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "картинки" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "видео" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "новости" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "карты" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "наука" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Неправильные параметры, измените настройки" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Настройки некорректны" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "ошибка поиска" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} минут(а) назад" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} час(ов), {minutes} минут(а) назад" @@ -112,29 +112,28 @@ msgstr "Статистические функции" msgid "Compute {functions} of the arguments" msgstr "Вычисляет {functions} от аргументов" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Время поиска (сек)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Загрузка страниц (сек)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Количество результатов" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Попаданий" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Попаданий за результат" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Ошибки" @@ -146,9 +145,15 @@ msgstr "{title}&nbsp;(УСТАРЕВШИЕ)" msgid "This entry has been superseded by" msgstr "Эта запись была заменена на" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Нет аннотации для этой публикации." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Перезапись DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Позволяет получить бесплатную версию запрашиваемой статьи, если таковая имеется" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -162,16 +167,6 @@ msgstr "Бесконечная прокрутка" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Автоматически загружать следующую страницу при прокрутке до конца текущей" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Перезапись открытого доступа к DOI" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Позволяет получить бесплатную версию запрашиваемой статьи, если таковая имеется" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -334,8 +329,8 @@ msgstr "Метод" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -407,8 +402,8 @@ msgstr "Используемые поисковые системы" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -423,8 +418,8 @@ msgstr "Категория" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -442,7 +437,7 @@ msgstr "Блокировать" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -452,7 +447,7 @@ msgstr "Настройки сохраняются в ваших файлах coo #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -462,7 +457,7 @@ msgstr "Эти файлы используются исключительно д #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -470,14 +465,14 @@ msgstr "сохранить" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Восстановить настройки по умолчанию" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -648,23 +643,23 @@ msgid "General" msgstr "Общие" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Поисковые системы" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Плагины" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Ответчики" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookie" @@ -715,88 +710,78 @@ msgstr "Стиль для выбранной темы" msgid "Style" msgstr "Стиль" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Распознаватель открытого доступа к DOI" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Перенаправление на открытые версии публикаций при их наличии (требуется плагин)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Сокращение" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Выбранный язык" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Временной диапазон" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Среднее время" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Максимальное время" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Это список модулей мгновенного ответа searx" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Имя" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Ключевые слова" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Описание" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Примеры" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Это список файлов cookie и их значения, которые searx хранит на вашем компьютере." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "С помощью этого списка можно оценить прозрачность searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Имя файла cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Значение" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL поиска для текущих сохраненных параметров" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/sk/LC_MESSAGES/messages.mo b/searx/translations/sk/LC_MESSAGES/messages.mo index 0d8f6fa707f453000dab281ca69762f0cdd4615f..7156b51dd26ac3e88ba0cb390d8feeacc491806d 100644 GIT binary patch delta 3100 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 Sq<?Bv)7bD*b;#b{ujy}Cg?k(T delta 4585 zcmbu<3vg6d9mnyL@Cf7uNihxY8=xUP5;hMT41|ZJGxE>?3C<M6@n&-q7B;)fy}Kz9 zbsd~isYTEQfl_P5aqLSWrod2PkTM{4s8AHEFck$E73nZY#a5WX?=O3Ys@T%04DdPU z+<VXY|NrNleZ1+fpG*F(u=i%epP%q=82{etqu#rJj^`LtK=)PDqjT6FFJcy6@%;zp z(!YfdVlExMw-B4~GpO&oFdz4(`$=<@Mn49Q<M;72-h-?2j48nlI260E3|~b}blvwR zj-j8)tgLOuq5`YN;W!0*<3m`8pT&W=5_3$_m^CyMz}ImpZt-9EJ8Gi71JV=cBe9tw zsEUk5J^vVv#F=QJjeT*A?>f}{8-2GSQ=1)F#QLU-h9)|O7M?_v?ke`e8(4(5P?;AI zzMc<5Wn79pGF7MmKaR?@0r_j1`L6;!oQOM60iD348o!~DjekH*eA)LpDlnz1h5Mlv z$VYuQ6qV^1RG<_5@kywXPsR?cM+NXAvRmeY|NLqJ^>-P#&VVuq5jIWJiJI_hsD(CQ zCT_)I+>ZC+i+CR%M+NdXBxdsts>InGq$m!?T3m-p=nyL5pWj3MRl;BS4}On2On*j| zJa14skTJM`ei=@}&!ZN24!7Vw<P)>tBb*C#Pz$U_1-2EH*mwN#E-a_NKS@I+xrC~~ z+c+5evAPx*g_@ueHNj-mHJyX1OdIlviJ{(Gi`t^~NKEDle|#ru3-_QB-j72tdCY&| z0+upx2^+D1`Yu5Sbqx<;175)Uv6_9*7A;3*8bMW{6REygk4oTa)WSPa3-3m4(IF(@ zq&Y=H6Z{rcx<6tS=2C_LPDf1;LmjFPRHm!34A=P2pGWO&7pemLP!&3gn*W6F8PxX| zF;n;dG7V*N1r^~nzkdt0a4+hlh5Ms!M?PxHicy)AqQ0y3#~(livH-PZ523za;g82q z0j|Ov-Tz1Yfp4H9ehL-w4}5>@KR<v9=oM5TCs7NX@t>bZ1#|_Kp?)?OLKdo0i;>+k zU-8|J$<rCebkktl%{qQB6~NP|iJtZQFQGC#jLdCLU=v<K9op$5j0s}{DzN>i!*>)F z$XQfE=kXxEi8{1D97+AP@Zpi^Lv{v7)4z$D$g<KIk4KFMP^E7|W!{WBY|Byae-Sm` zqo~q9g{s&tQ~-N$J|03<qOc^H{%|};ToKivGMt0FV;s~eUW>$JHv8kdQJMW3wZI#w z04|^weiIegEu=`Ma8$a20kr5(MZLE)Nh6a+6gh9kMP>FlYJp9tiMFFM`w{B!96^=- z6l$x^V+~%z@mNN=^j#w=fmYOe3Dh-Ri>hSu2^w1P8PtNiP#^9^E%1u}{0wH&KaYCv zqVHvVnf^7bz&-qYYT}Eid9R_1H&F9M?n`I>CFHCn%|;q}aa(%8d>8o%Fwdd(=rHOR z?<{H$-$rdwuhR6EjleI^ufbaELS_0F)S>++>bt&U)9VyqCH=uTT=#!24eebB7odj$ zJc2sK*YSDG;SOmF_M#^E1!~L8xO7E^p!T!`HC~P7_(@bCt5NekisWFP#A4PrFVpCY zXHgTJM`ivNW??QHs>3%3Rl*unAhS@1b_w>!m8f}EqrO{%s^nwX2fv3C@L61pr!m<^ zBfuzE(rm?fxEHIj_r&y`Pev^~1*xW)i#j7N>To@RT5uEUy(j(WFCcqt4x-*WhOB8` z$9l{xr~aRyF@riO@^!u&Q5D#NlW-?$fpeIHe?m=o&F^P&^3>1ATpW&Cc)V{l>hMlQ z1vnjhV?zb?S819U&;pD77n(7TzKhzDFJm@-6BXFEQ6=B)KR<|C@HN!LXHa{64tur| zbtrSmM)M9w^(WXg@@Y&(Ei@OE;ZoEBAyi-<>b=#d4<AESY&)*P9msEu8Oq7k{jNtH z!Uciu#o3!PQ#W%jOpmmMB93PT?MNgVw_GRghMW$EhL;G(J@erEKd(r=k#{w9Ab&$2 z#|bWTQnLr_N?LZa7kBMo+zNS?-C>8qc5~RVTBEKNU&c@@(Hss1?RY2}sW6|4TA{ep z&eKGsg<izrzqnIpc`+v#YV8a~+N@y0i$~in&xyzBdR8dHL=Ju14KA}5Eu5$5iMS;Z zbgWpl8|tuwomO+F6?W_unxMsw+g3c<^Hq?wS2!(xf|keXUPbE0fXNeP27`|0S+g2u z>tQt9;kc$D=0vRjc<`{x7pd}rKmDj<d(K2F?si&sn@vn%JMOp^S+<5EEtX9=m(f?0 zs|eYP+mWDCk-9W+RG*#zQ~e7b=-U!<onSoGKc}|PDvN~^YzB+3OfcLsu6uTYl`%gU zB^uM%gB4@O^wyZh+v)#X(~7pHvrM?I6N!gAEzj;C+nDRLI*gEE$}OBz<g}1nqZ4Lv zo`&s6Tf%O0y7v{%$}DLjqjYUmJGQOPEb>@46d}J>JLq)Z9JD+mPshbe#9~pGDN;^R zO@RV;ytw783OX@uZ)$5%>!jQ7n0Tn&i6-JE9_<N^I)xpRh&Zd*YK0MWZEsn3_Px0o zp~~_=rBzi~S6w+FP#Fkh&u=JS=yZfUCM};uo$IWsKxJ)tW%|89&wByhn`e9R@+Q}g zc<cs|TQghicB{!wG?Tzo+Y5$5?a}CrwsuZsMKIbvEw!T9Ew7$pQG3@8*Ox`=>nq1u z)2)D2XO%^!)mK@irB-BWeT@by8LUdx4PKdXfA<T6`}FEQFf1oy#$B$+U9V90&xYq^ z44fV5u*0F2+owGB%Mp9B=JnhvxBIIjvoexgl@EWjjvNTtE&tc$n%r}{KFsC%mNjkC z9rx%i7wnYvdhLAf?}xc!&y<YInx76db+TkhzlF~GU$gO}KAlmVzF>FWvs7~Q(DHZh z+6TE{+eX{Pjm~>qv3Eu%Kgbn(xb)nAU$I4HGycaF+f=r#^1ZK^clf2|sC&mHOHCQ~ G+P?t4kxh&M diff --git a/searx/translations/sk/LC_MESSAGES/messages.po b/searx/translations/sk/LC_MESSAGES/messages.po index ebf1bba5..60ef0646 100644 --- a/searx/translations/sk/LC_MESSAGES/messages.po +++ b/searx/translations/sk/LC_MESSAGES/messages.po @@ -8,16 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-01 20:31+0000\n" -"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Jan Hovancik\n" "Language-Team: Slovak (http://www.transifex.com/asciimoo/searx/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.3.4\n" "Language: sk\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #: searx/search.py:137 searx/search.py:182 msgid "timeout" @@ -31,63 +31,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "súbory" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "všeobecné" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "hudba" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociálne médiá" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "obrázky" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videá" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "technika" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "správy" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "mapy" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "veda" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Neplatné nastavenia, upravte svoje hodnoty, prosím" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "chyba vyhľadávania" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} min. pred" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} hod., {minutes} min. pred" @@ -107,29 +107,28 @@ msgstr "Štatistické funkcie" msgid "Compute {functions} of the arguments" msgstr "Vypočítať {functions} argumentov" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Načítanie vyhľadávača (sek)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Načítanie stránky (sek)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Počet výsledkov" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Chyby" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(ZASTARANÉ)" msgid "This entry has been superseded by" msgstr "Táto položka bola nahradená" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Prepis DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Vyhnúť sa plateným bránam presmerovaním na verejne prístupné verzie publikácií ak sú k dispozícii" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Nekonečné posúvanie" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Automaticky načítať ďalšiu stránku pri posunutí na koniec aktuálnej stránky" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Vyhnúť sa plateným bránam presmerovaním na verejne prístupné verzie publikácií ak sú k dispozícii" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Metóda" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "poruba@contours.cz" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Kategória" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Blokovať" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Tieto nastavenia sú uložené v cookies, čo nám umožňuje neukladať #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Tieto cookies slúžia výhradné pre vaše pohodlie a nie sú používa #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "uložiť" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Obnoviť predvolené" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Všeobecné" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Vyhľadávače" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Zásuvné moduly" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Rýchle odpovede" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -710,88 +705,78 @@ msgstr "Vyberte si štýl pre túto tému" msgid "Style" msgstr "Štýl" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Skratka" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Časový rozsah" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Priemerný čas" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Maximálny čas" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Toto je zoznam modulov rýchlej odpovede pre searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Názov" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Kľúčové slová" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Popis" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Príklady" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Toto je zoznam cookies a ich hodnôt uložených searx na vašom počítači" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Pomocou tohto zoznamu môžte vidieť transparentnosť searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Názov cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Hodnota" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/sl/LC_MESSAGES/messages.mo b/searx/translations/sl/LC_MESSAGES/messages.mo index b2cf9e1b13459f48692009641f4cb2a74e237c5a..9e980f78c3454b9925bb10a1a8ac73a9f62ab2bd 100644 GIT binary patch delta 3133 zcmYM$4NR3)9LMp)n-@WWtD=SqH|0fzYxiDKgcPih=2+retujQk>jtJcAZ(NNOs8|U zGR;XNbm|nFrCGbWu&J$;7Ft=DWd@qlw9+--np(5<{rQ|N27Jyr&-0w~|NqZ<xZId? zXSQ>;U+hN1R|h{s`RR^R@Bgn&iN<*8Zbn_&i@k9_dhiqL7ubjX37m}GsQZR9I1BSo z&o9R$T<!K9(?TPjflb(s?bsj7`x^5gR^bp_jw5k1YNDgouP~E-7qX_gjS4J=Rfb_A z#^NYsYBL7=;Uk!09Al=^(1TT|Ko(*pHr~I1iBS_?K;3r*HPLNUWnz=v>jN=^emeTF z7<*xrbpdMrMb;)vVtwP#7>H|83$>#U_n=Dn4aVSU)P3Ek3f#2U@1g>WNil||Nk#>j zfyy)w`8Fl|8iUg?4;^$A(QX=YKPKQ|)WV(Clc>OYPz(QxTHp%mxjU##qbP?0jYp05 zL6trgn=lR89kbq!Z}C$9dIokdpvVUiE=`kzny3&p(L{{KGR(p$s0HhgwM`SU8)h}u zVG9;uFAkCdFGeL+hN{$bJ6_qJ`s?t78Bl3oMJ>DyAHsIj#Ha8ryoh|8<^cqW>rfMS zpaS{~mB2AO-i?0xmr<Fgrn-razz68(J2bSwlc))vM@=vv^*X+Us=%Abw`t>-?)wn6 z1s%xT=7=3XgW96=s7x<o8s4<mlgKigek#sHX9A7cG}fVBx2srzNrQ|ThjUOB*@()t z6;**9NR>?oDuLsuh0mZC{spx)S5X1qLp>im*sWYLhFISe&<Jp$7BxW|>d<UMJ-8D` z;vReb2h^T+qbhI_RiW#s1^%|iQC~fuf;u~cP>H0W0!+W(Xa7gj(86O-3qOoH{e`GK zdmNR?bku|M?D%3-AkC;PTZwwU#g4b30^E*z?gQIDhzht96ZHOfsewKAhTl*D{e=qT zAJjr|Y@{aaiwY<Wm0>Q<z!0iZtB`7&_pL|qT9h$oQCoL{gQe##pre65Xegq8Q44zb zyQ#hPVhLuVUe6b>5*tzXccB9L85QtVR3bNU7v4k8op~qS4d@W^ZBFrvSj??-_FoSs zXSfrjq7LB@ROu(80xCy6_!Me^MpVfiR08W!hp-*B1^ZByI)HQVC@O(0pZok+)clit zj+?<$1~gF>YQY9nDPO@+xD&Mn-=a!)+V;<(DsdSV&^1(M(PW|VVW@esQ43a}4q+v- ztESqap$V5+S0KTfHK;Avh05e0D#K1xNl)WM{1Y`%-f%a=GV9Z*tyy6EOHt3SMkUyS z3eeeVZ`fsTIDiW1OH`yMZ2zR~pTYHvpGBSOB_rIDH{&Y$%TWt^GTn*{M%_0WwbkQL zTQ~vp_5MFWLy;^)WwsJIhvscugdbrMW@WjN&qY<F7B$gQJH7&g^j|~HojHt3q#ONs z0X4rjoBuU12M4ph`J4ukm>$#~d2`$cGf;b)jmls=j>b~kuS4Cx4D}Dn8q^_cM-T2t zT|b0OZH}V?zJUtl9(q{c^yh@=#v!N+qp%m2U@VqlJeH%b&$8pSsJEgHC*xY2hu@<P za{(t;r@tIS_%3Qodr*O%M@OZ;PD7a{k)A$Gd>D^oQ4trT{-8{;{c2Q2UPK?hjH+NO z>NDeOR06TN?w%*2w#<th50j3X|FK-^uSPio3Sbs0vIWTJkZHn1d>!Mk)%LfbGI<a6 z++OUBpQ08%ZtX(N_Y)@I@2JCh%l6~)sK0JV$#Y*jAL@olsEMYd2cJQ`j&tqx22`b1 z+VNK8bI0sPZRHU=eiF6tCDc6EQ5C<73VdMD@9ybHREEW<Ju5{Htl4g_ccK<J=Z_pq z+!&o$@#qv^eRyeoO=CDxne<%DhD+X$Bj5FVHY(CQ;0;eO;13k|f`vuF@wtIeAdoPv z!apP2RMSvXx7c4=-54(Ng#y7se<0)!<@<sKMfs5lL+3|D6-2fU+ZXL!QXgJY(@@t` fy|^~)D`lz3OyBvK4f8X9j4aG*i;7g{q{jaT`UgK` delta 3407 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 Q=XE~swA}F7tn~Q50B$p$Qvd(} diff --git a/searx/translations/sl/LC_MESSAGES/messages.po b/searx/translations/sl/LC_MESSAGES/messages.po index 3ce7f97d..77ef61b8 100644 --- a/searx/translations/sl/LC_MESSAGES/messages.po +++ b/searx/translations/sl/LC_MESSAGES/messages.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-05-01 08:59+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" "Last-Translator: asladic <ales.sladic@gmail.com>\n" "Language-Team: Slovenian (http://www.transifex.com/asciimoo/searx/language/sl/)\n" "MIME-Version: 1.0\n" @@ -31,63 +31,63 @@ msgstr "napaka poizvedbe" msgid "unexpected crash" msgstr "nepričakovana napaka" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "datoteke" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "splošno" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "glasba" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "družabna omrežja" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "slike" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videi" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "informatika" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "novice" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "zemljevid" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "znanost" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Neveljavne nastavitve. Prosimo, preverite vašo konfiguracijo" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Neveljavne nastavitve" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "napaka pri iskanju" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} minut nazaj" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "pred {hours} urami in {minutes} minut" @@ -107,29 +107,28 @@ msgstr "Statistične funkcije" msgid "Compute {functions} of the arguments" msgstr "Izračunaj {functions} argumentov" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Čas iskanja (sek.)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Čas nalaganja (sek.)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Število zadetkov" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Točke" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Točke na zadetek" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Napake" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(ZASTARANO)" msgid "This entry has been superseded by" msgstr "Ta vnos je presegel" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "prepisovanje DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Izogibanje plačilom s preusmeritvijo na prostodostopne različice publikacij, ko so na voljo" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Neskončno drsenje" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Samodejno naloži naslednjo stran ob ogledu dna trenutne strani" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Izogibanje plačilom s preusmeritvijo na prostodostopne različice publikacij, ko so na voljo" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Metoda" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "Trenutno uporabljeni iskalniki" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Kategorija" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Blokiraj" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Te nastavitve so shranjene v vaših piškotkih; to nam omogoča, da ne h #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Ti piškotki so za boljšo izkušnjo, ne uporabljamo jih za sledenje." #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "shrani" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Ponastavi na privzeto" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Splošno" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Iskalniki" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Vtičniki" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Ponudniki odgovorov" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Piškotki" @@ -710,88 +705,78 @@ msgstr "Izberite stil za trenutno temo" msgid "Style" msgstr "Stil" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Preusmeri na prosto dostopne različice publikacij, ko so na voljo (zahtevan vtičnik)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Bližnjica" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Izbrani jezik" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Časovni razpon" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Povprečni čas" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Največji čas" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "To je seznam modulov searx za takojšnje odgovore." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Ime" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Ključne besede" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Opis" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Primeri" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "To je seznam piškotkov in pripadajočih vrednosti, ki jih searx hrani na vašem računalniku." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "S tem seznamom lahko ocenite transparentnost searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Ime piškotka" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Vrednost" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Iskalni URL trenutno shranjenih nastavitev" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/sr/LC_MESSAGES/messages.mo b/searx/translations/sr/LC_MESSAGES/messages.mo index 65efaaa1a94eabaeb79c1265376e929900846271..d7585916f899700d0cf08fdd9478bcf35e21680d 100644 GIT binary patch delta 3170 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 delta 3614 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 diff --git a/searx/translations/sr/LC_MESSAGES/messages.po b/searx/translations/sr/LC_MESSAGES/messages.po index b676f3dc..01e36b1e 100644 --- a/searx/translations/sr/LC_MESSAGES/messages.po +++ b/searx/translations/sr/LC_MESSAGES/messages.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PROJECT project. # # Translators: +# Marc Abonce Seguin, 2019 # jugi1, 2017 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-03 11:24+0000\n" -"Last-Translator: jugi1\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-07-28 05:07+0000\n" +"Last-Translator: Marc Abonce Seguin\n" "Language-Team: Serbian (http://www.transifex.com/asciimoo/searx/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,63 +32,63 @@ msgstr "захтевај изузетак" msgid "unexpected crash" msgstr "неочекивани пад" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "фајлови" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "уопштено" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "музика" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "друштвени медији" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "слике" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "видео" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "ит" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "новости" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "мапа" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "наука" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Неважеће поставке, молимо уредите свој избор" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Неважећа подешавања" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "грешка у претрази" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} минут(а) назад" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} час(a), {minutes} минут(а) назад" @@ -105,31 +106,30 @@ msgstr "Статистичке функције" #: searx/answerers/statistics/answerer.py:54 msgid "Compute {functions} of the arguments" -msgstr "Израчунајте {функције} аргумената" +msgstr "Израчунајте {functions} аргумената" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Време претраге (сек)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Учитавање странице (сек)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Број резултата" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Резултати" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Остварени резултати" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Грешке" @@ -141,9 +141,15 @@ msgstr "{наслов}&nbsp;(ЗАСТАРЕЛО)" msgid "This entry has been superseded by" msgstr "Овај унос је заменио" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Абстракт није доступан за ову публикацију." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Препис DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Избегните плаћање у случају да је доступна бесплатна публикација" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +163,6 @@ msgstr "Бесконачно померање" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Аутоматско учитавање следеће странице приликом померања на дно текуће странице" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Отворени приступ DOI преписа" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Избегните плаћање у случају да је доступна бесплатна публикација" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +325,8 @@ msgstr "Метода" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +398,8 @@ msgstr "Тренутно коришћени претраживачи" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +414,8 @@ msgstr "Категорија" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +433,7 @@ msgstr "Блокирај" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +443,7 @@ msgstr "Ова подешавања се чувају у вашим колачи #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +453,7 @@ msgstr "Ови колачићи служе Вашој погодности, ми #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +461,14 @@ msgstr "сними" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Врати на подразумевано" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +639,23 @@ msgid "General" msgstr "Уопштено" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Претраживачи" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Плагини" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Одговори" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Колачићи" @@ -710,88 +706,78 @@ msgstr "Изаберите стил за ову тему" msgid "Style" msgstr "Стил" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Отворени приступ DOI решења" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Преусмери на верзије публикација отвореног приступа кад је доступно (потребан је плагин)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Пречица" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Изабрани језик" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Временски опсег" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Просечно време" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Макс. време" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Ово је листа searx инстант одговора." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Име" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Кључне речи" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Опис" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Примери" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Ово је листа колачића и њихова вредност се снима на вашем рачунару." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Са овом листом можете бити searx транспаренти" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Име колачића" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Вредност" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Pretražite URL адресу тренутно сачуваних поставки" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/sv/LC_MESSAGES/messages.mo b/searx/translations/sv/LC_MESSAGES/messages.mo index 73d36de8cd9891de92604f430f260b9769b22cb9..d432f219a593fbaf81b80259a10f9b6f3c8f1627 100644 GIT binary patch delta 3186 zcmYM$eN5F=9LMo<c?bdJK|u@^F5&|U7w^4l2%%vao00jDxulRt(9i)6keoU1m^xX1 zC`8y4oLXMX@}a!iu$pC<rfE%_<`}wKmOA|-XKChIy+7PjF}$yH&hPj8p6~gd^Siiq z;q7AIm4RVxhM!LU4dY*LxO)HpbVM5yPj?&Y(gBRb!x({|TTfzt`rqM`*o(Sv1cUQ1 z3-x>>#^8ov-)A<{=*K_@`q7VruxNlWX;_Lwu@N(H8!FHV>lqwLzZ;p;+(RW6$}Gb% z8pCib653?rKztPAjL(>7Xz0OGR3gi;1nc{5ATTQ6PpJEDq5|DRRVFMpczrOY(oaDr zPQ{0?)VdfIzslNxG0bm#GzQ~F)I@%C;yzRfzr|3zgu1U6Re?M9`h8Slp>f90G_j}z zQ&B6;LVnF-d}QNn%t9afl+j)q@-Rl>QPjkztmjdQT}Dm(GirjHsOSDbt<*s|lxRQH zcz;ys6R`o4k=-#Zc6@t0^{-`M7X!*XiF9e2F{nVfs6bON1PgH#&Ol9AgUoFjklipF zum(3{4nD*|QsPrl3oArbYK|Q*8ASbccq$lBX<tW8yc5Tx9~JllzJ*tjU$Z)aB(WJ4 zxD%C77is~g?RYP`=wCyvJTWo2&~$v5{sbQlO)wJ`;6+q`MX1+t1*!sXAit)a58d|> zY707%*ybxc-h<krA5km4hRJxxUXNjwqv<E&v*^pG@dAxz)a!N&XJJf|F^}LvR7KiQ zE8T*sz%Hc9rW3V*Z%`BWpeFtSwKca;3IBz9K5R&^a<S-Tev?DP&4s0?0PUzlvlI2; zZp^@a_WDKCp7x?Da1~Xd+o%ctw1!h(Js*cUJ4vX8B%=~c>Fcxq<7jB&Y}CXPQKvr_ zwP#PDRx$_m;LCQr8kNXu)RwJ7J-^wGx1$n#2ld>Cw*MI_;Zqo;_rF^Wylii{j!Niv zR3Z;h6NR&p3OE3jP%>(TnK&1{s7kFzs%`dLPv9PhF;|dKrip{4cyFUm6TDADnIEzj zj-U?JF)YH1s68IR_h}t^P%H4GUfcbsgpb<s<G7dpS!6fNs+8bYcq@{FIe<BMI)(k$ z3PMtY0U~h({a93nUOS$Lqv#i)?q7_mKo#l`u0bW(f-3b6>s~CU--%k#aA&ZhUexpX zPG9ge&tyQSx(pRy1&+i<)Wo|{6*_}DMCVWmUckPsLnU$@DVBMFs?ZQ#DaA=c#VtfV zKNqzX^L;c_y5*>V4X7<ygG#6gwdWnEL$(LCx1VAGp2ta;K-u)%Q>b|JP+L=sI>bv+ zaaN)dS&y2}*J5wjVh7$u1vr4p^e}2AM^F{`65H@3@||Kz(u3o5*hGINY61t#)|L#w z5FBRvsi?Twn63BUOGA5FhAQDJsFlBlHMj{q_%~`r9`-{korapA$o7koZ8qho#MWUL zZpA#@j{1K@5Bl*gCNjV27|kohz(LerUO^>v1C_|HsENbIa9}V2Rnj@A`%6)$d?~8L zYpu<wN^C=I*&d9*W2nP-3L}}{^w7`*S5XuGh7s5=Be;S%)D|Qn-_9n*j!(h~^z(2b zR^xMc7Ig^I$MUxx3($)#sL~%tE#PbPsbm*vsAP9huSx%L!3w0IR*-=z-9%JkvoQ*v zM}EyBKE~rl)O&ptwdZ%SAKph*G=wrMkw^^3{7mYv8y;ss85Lm^F0htcYfu4Jp#nFe zR<aJGu?ZFMP3u-vqB}4e-?JV<ZN(R;vvVnv`s=m2#(*BUkJ<`HRxn^ZM$%70T~9+L zJQkI(7nN{<wa7XjH9;Bb`Q_NR06X4@dal_+Lld^!8$Lk&IX;LkjNwCH6#1yH&iSsu z>FBnQ=vmWdIBP3jt*xxD2$aMWhqnF_|4HE7zy*%L>V!=ZUboAg<Mia_c_wGNy>55Z z>{+h46%Cbjl{M9_>1Fj5c}}m}lk0MOUEaww^CnFQOc^%R;m8Rr7=9xpZaU#zHC1)X zYAYM6E320Tra8Y4anD%N<*zk`T_4xhmN~1s{MBXU71jUt8!8qpEBmj<jTQB+Pp9{` SzBIBsuy|CJBj6d+9q|vAeo)c? delta 3476 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 diff --git a/searx/translations/sv/LC_MESSAGES/messages.po b/searx/translations/sv/LC_MESSAGES/messages.po index e8b01c83..1949932d 100644 --- a/searx/translations/sv/LC_MESSAGES/messages.po +++ b/searx/translations/sv/LC_MESSAGES/messages.po @@ -4,14 +4,14 @@ # # Translators: # Jonatan Nyberg, 2016-2017 -# Jonatan Nyberg, 2018 +# Jonatan Nyberg, 2018-2019 # Jonatan Nyberg, 2017-2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-07-24 18:39+0000\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-28 20:53+0000\n" "Last-Translator: Jonatan Nyberg\n" "Language-Team: Swedish (http://www.transifex.com/asciimoo/searx/language/sv/)\n" "MIME-Version: 1.0\n" @@ -33,63 +33,63 @@ msgstr "begär undantag" msgid "unexpected crash" msgstr "oväntad krasch" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "filer" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "allmänt" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "musik" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sociala medier" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "bilder" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videor" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "it" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "nyheter" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "karta" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "vetenskap" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Ogiltiga inställningar, vänligen redigerar dina inställningar" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Ogiltiga inställningar" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "sökfel" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} minut(er) sedan" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} timm(e/ar), {minutes} minut(er) sedan" @@ -109,29 +109,28 @@ msgstr "Statistikfunktioner" msgid "Compute {functions} of the arguments" msgstr "Beräkna {functions} av argumenten" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Sökmotor tid (sek)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Sidan laddas (sek)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Antal resultat" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Poäng" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Poäng per resultat" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Fel" @@ -143,9 +142,15 @@ msgstr "{title}&nbsp;(FÖRÅLDRAD)" msgid "This entry has been superseded by" msgstr "Detta inlägg har ersatts av" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Inget abstract är tillgänglig för denna publikation." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI-omskrivning" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Undvik betalväggar genom att omdirigera till öppen tillgång versioner av publikationer när de är tillgängliga" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -159,16 +164,6 @@ msgstr "Oändlig bläddring" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Automatiskt ladda nästa sida när du bläddrar till botten av aktuell sida" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Open Access DOI-omskrivning" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Undvik betalväggar genom att omdirigera till öppen tillgång versioner av publikationer när de är tillgängliga" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +326,8 @@ msgstr "Metod" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +399,8 @@ msgstr "För tillfället används sökmotorer" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +415,8 @@ msgstr "Kategori" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,7 +434,7 @@ msgstr "Blockera" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -449,7 +444,7 @@ msgstr "Dessa inställningar lagras i dina kakor, vilket gör att vi inte lagrar #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +454,7 @@ msgstr "Dessa kakor tjänar din egen bekvämlighet, vi använder inte dessa kako #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +462,14 @@ msgstr "spara" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Återställ standardvärden" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +640,23 @@ msgid "General" msgstr "Allmänt" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Sökmotorer" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Insticksmoduler" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Besvarare" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Kakor" @@ -712,88 +707,78 @@ msgstr "Välj stil för detta tema" msgid "Style" msgstr "Stil" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Open Access DOI-lösare" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Omdirigera till öppna versioner av publikationer när de är tillgängliga (tillägg krävs)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Genväg" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Valt språk" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Tidsintervall" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Genomsnittstid" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Max tid" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Detta är en lista över searxs snabbsvarsmoduler." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Namn" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Nyckelord" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Beskrivning" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Exempel" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Detta är en lista över kakor och deras värden som searx lagrar på din dator." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Med denna lista kan du bedöma searx öppenhet." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Kaknamn" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Värde" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "Sökadressen för de för nuvarande sparade inställningarna" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." @@ -835,22 +820,22 @@ msgstr "Närsom" #: searx/templates/oscar/time-range.html:6 #: searx/templates/simple/time-range.html:6 msgid "Last day" -msgstr "Senaste dag" +msgstr "Igår" #: searx/templates/oscar/time-range.html:9 #: searx/templates/simple/time-range.html:9 msgid "Last week" -msgstr "Senaste vecka" +msgstr "Förra veckan" #: searx/templates/oscar/time-range.html:12 #: searx/templates/simple/time-range.html:12 msgid "Last month" -msgstr "Senaste månad" +msgstr "Förra månaden" #: searx/templates/oscar/time-range.html:15 #: searx/templates/simple/time-range.html:15 msgid "Last year" -msgstr "Senaste år" +msgstr "Förra året" #: searx/templates/oscar/messages/first_time.html:6 #: searx/templates/oscar/messages/no_data_available.html:3 diff --git a/searx/translations/ta/LC_MESSAGES/messages.mo b/searx/translations/ta/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..356472f653d1eb18f17b235ac8c523f04e1f12de GIT binary patch literal 16267 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 Q7GPz}#n2x-{(ngOKS0tSsQ>@~ literal 0 HcmV?d00001 diff --git a/searx/translations/ta/LC_MESSAGES/messages.po b/searx/translations/ta/LC_MESSAGES/messages.po new file mode 100644 index 00000000..dbb9aa2a --- /dev/null +++ b/searx/translations/ta/LC_MESSAGES/messages.po @@ -0,0 +1,1003 @@ +# Translations template for PROJECT. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# +# Translators: +# Balaji Ravichandran <rbalajives@gmail.com>, 2019 +# gurulenin <guruleninn@gmail.com>, 2019 +# Manimaran.K <manimaraninam1027@gmail.com>, 2019 +# Nazigai Kallan <arn1291@gmail.com>, 2019 +# POORAJITH ST <gokulkannanst@gmail.com>, 2019 +# Prasanna Venkadesh <prasmailme@gmail.com>, 2019 +msgid "" +msgstr "" +"Project-Id-Version: searx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" +"Language-Team: Tamil (http://www.transifex.com/asciimoo/searx/language/ta/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: searx/search.py:137 searx/search.py:182 +msgid "timeout" +msgstr "காலாவதியானது" + +#: searx/search.py:144 +msgid "request exception" +msgstr "" + +#: searx/search.py:151 +msgid "unexpected crash" +msgstr "எதிர்பாராத முடக்கம்" + +#: searx/webapp.py:135 +msgid "files" +msgstr "கோப்புகள்" + +#: searx/webapp.py:136 +msgid "general" +msgstr "பொதுத் தேடல்" + +#: searx/webapp.py:137 +msgid "music" +msgstr "இசை" + +#: searx/webapp.py:138 +msgid "social media" +msgstr "சமூக தளங்கள்" + +#: searx/webapp.py:139 +msgid "images" +msgstr "படங்கள்" + +#: searx/webapp.py:140 +msgid "videos" +msgstr "காணொளிகள்" + +#: searx/webapp.py:141 +msgid "it" +msgstr "" + +#: searx/webapp.py:142 +msgid "news" +msgstr "செய்திகள்" + +#: searx/webapp.py:143 +msgid "map" +msgstr "வரைப்படம்" + +#: searx/webapp.py:144 +msgid "science" +msgstr "அறிவியல்" + +#: searx/webapp.py:398 searx/webapp.py:653 +msgid "Invalid settings, please edit your preferences" +msgstr "ஏற்க முடியாத அமைப்பு,உங்கள் விருப்பத்தை தொகுக்கவும்" + +#: searx/webapp.py:410 +msgid "Invalid settings" +msgstr "ஏற்கமுடியாத அமைப்பு" + +#: searx/webapp.py:444 searx/webapp.py:488 +msgid "search error" +msgstr "தேடல் பிழை" + +#: searx/webapp.py:525 +msgid "{minutes} minute(s) ago" +msgstr "{minutes} நிமிடங்களுக்கு முன்னால்" + +#: searx/webapp.py:527 +msgid "{hours} hour(s), {minutes} minute(s) ago" +msgstr "{hours} மணிநேரம், {minutes} நிமிடங்களுக்கு முன்னால்" + +#: searx/answerers/random/answerer.py:53 +msgid "Random value generator" +msgstr "சீரற்ற மதிப்பு உருவாக்கி" + +#: searx/answerers/random/answerer.py:54 +msgid "Generate different random values" +msgstr "வெவ்வாறான சீரற்ற மதிப்புகளை உருவாக்கு" + +#: searx/answerers/statistics/answerer.py:53 +msgid "Statistics functions" +msgstr "புள்ளியியல் செயல்பாடுகள்" + +#: searx/answerers/statistics/answerer.py:54 +msgid "Compute {functions} of the arguments" +msgstr "" + +#: searx/engines/__init__.py:194 +msgid "Engine time (sec)" +msgstr "எந்திர நேரம் (நொடிகளில்)" + +#: searx/engines/__init__.py:198 +msgid "Page loads (sec)" +msgstr "" + +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 +#: searx/templates/simple/results.html:20 +msgid "Number of results" +msgstr "முடிவுகளின் எண்ணிக்கை" + +#: searx/engines/__init__.py:206 +msgid "Scores" +msgstr "மதிப்புகள்" + +#: searx/engines/__init__.py:210 +msgid "Scores per result" +msgstr "தேடல் மதிப்பு" + +#: searx/engines/__init__.py:214 +msgid "Errors" +msgstr "பிழைகள்" + +#: searx/engines/pdbe.py:87 +msgid "{title}&nbsp;(OBSOLETE)" +msgstr "" + +#: searx/engines/pdbe.py:91 +msgid "This entry has been superseded by" +msgstr "" + +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "பணம் பறிக்கும் தளங்களை தவிர்த்து முடிந்த வரையில் open-access பதிப்புகளை வழங்கும் தளங்களுக்கு செல்லவும்" + +#: searx/plugins/https_rewrite.py:32 +msgid "Rewrite HTTP links to HTTPS if possible" +msgstr "முடிந்தால் HTTP இணைப்புகளை HTTPS இணைப்புகளாக மாற்றவும்" + +#: searx/plugins/infinite_scroll.py:3 +msgid "Infinite scroll" +msgstr "தொடர் பட்டியல்" + +#: searx/plugins/infinite_scroll.py:4 +msgid "Automatically load next page when scrolling to bottom of current page" +msgstr "பக்கத்தின் முடிவை அடைந்தவுடன் தானாக அடுத்த பக்கததிற்கு செல்லவும்" + +#: searx/plugins/open_results_on_new_tab.py:18 +#: searx/templates/oscar/preferences.html:114 +#: searx/templates/simple/preferences.html:149 +msgid "Open result links on new browser tabs" +msgstr "இணைப்புகளை புதிய Tab-ல் திறக்கவும்" + +#: searx/plugins/open_results_on_new_tab.py:19 +msgid "" +"Results are opened in the same window by default. This plugin overwrites the" +" default behaviour to open links on new tabs/windows. (JavaScript required)" +msgstr "" + +#: searx/plugins/search_on_category_select.py:18 +msgid "Search on category select" +msgstr "தேர்ந்தெடுத்தப் பிரிவில் தேடுக" + +#: searx/plugins/search_on_category_select.py:19 +msgid "" +"Perform search immediately if a category selected. Disable to select " +"multiple categories. (JavaScript required)" +msgstr "பிரிவு தேர்வு செய்யப்பட்டால் தேடல் உடனடியாகச் செயற்படுத்தும். பல பிரிவுகளைத் தேர்வு செய்ய முடக்கவும். (ஜாவா ஸ்கிரிப்ட் தேவைப்படும்)" + +#: searx/plugins/self_info.py:20 +msgid "" +"Displays your IP if the query is \"ip\" and your user agent if the query " +"contains \"user agent\"." +msgstr "\"ip\" என்று தேடினால் உங்கள் ip முகவரியையும், \"user agent\" என்று தேடினால் உங்கள் user-agent-ம் காட்டப்படும்." + +#: searx/plugins/tracker_url_remover.py:26 +msgid "Tracker URL remover" +msgstr "உளவுப் பார்க்கும் வலைதள முகவரி நீக்கி" + +#: searx/plugins/tracker_url_remover.py:27 +msgid "Remove trackers arguments from the returned URL" +msgstr "உங்களை உளவு பார்த்து பின்தொடர பயன்படும் எழுத்துக்களை வலைதள முகவரியிலிருந்து நீக்குக" + +#: searx/plugins/vim_hotkeys.py:3 +msgid "Vim-like hotkeys" +msgstr "Vim போன்ற hotkeys" + +#: searx/plugins/vim_hotkeys.py:4 +msgid "" +"Navigate search results with Vim-like hotkeys (JavaScript required). Press " +"\"h\" key on main or result page to get help." +msgstr "" + +#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4 +#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4 +#: searx/templates/simple/404.html:4 +msgid "Page not found" +msgstr "பக்கம் கிடைக்கவில்லை" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +#, python-format +msgid "Go to %(search_page)s." +msgstr "%(search_page)s-க்கு செல்" + +#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6 +#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6 +#: searx/templates/simple/404.html:6 +msgid "search page" +msgstr "தேடல் பக்கம்" + +#: searx/templates/courgette/index.html:9 +#: searx/templates/courgette/index.html:13 +#: searx/templates/courgette/results.html:5 +#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12 +#: searx/templates/oscar/navbar.html:7 +#: searx/templates/oscar/preferences.html:3 +#: searx/templates/pix-art/index.html:8 +msgid "preferences" +msgstr "விருப்பத்தேர்வு" + +#: searx/templates/courgette/index.html:11 +#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2 +#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7 +msgid "about" +msgstr "பற்றி" + +#: searx/templates/courgette/preferences.html:5 +#: searx/templates/legacy/preferences.html:5 +#: searx/templates/oscar/preferences.html:8 +#: searx/templates/pix-art/preferences.html:5 +#: searx/templates/simple/preferences.html:26 +msgid "Preferences" +msgstr "விருப்பத்தேர்வு" + +#: searx/templates/courgette/preferences.html:9 +#: searx/templates/legacy/preferences.html:9 +#: searx/templates/oscar/preferences.html:33 +#: searx/templates/oscar/preferences.html:35 +#: searx/templates/simple/preferences.html:34 +msgid "Default categories" +msgstr "இயல்புநிலை பிரிவுகள்" + +#: searx/templates/courgette/preferences.html:13 +#: searx/templates/legacy/preferences.html:14 +#: searx/templates/oscar/preferences.html:41 +#: searx/templates/pix-art/preferences.html:9 +#: searx/templates/simple/preferences.html:39 +#: searx/templates/simple/preferences.html:163 +msgid "Search language" +msgstr "தேடல் மொழி" + +#: searx/templates/courgette/preferences.html:16 +#: searx/templates/legacy/preferences.html:17 +#: searx/templates/oscar/languages.html:6 +#: searx/templates/pix-art/preferences.html:12 +#: searx/templates/simple/languages.html:2 +#: searx/templates/simple/preferences.html:42 +msgid "Default language" +msgstr "இயல்புநிலை மொழி" + +#: searx/templates/courgette/preferences.html:24 +#: searx/templates/legacy/preferences.html:25 +#: searx/templates/oscar/preferences.html:47 +#: searx/templates/pix-art/preferences.html:20 +#: searx/templates/simple/preferences.html:120 +msgid "Interface language" +msgstr "முகப்பின் மொழி" + +#: searx/templates/courgette/preferences.html:34 +#: searx/templates/legacy/preferences.html:35 +#: searx/templates/oscar/preferences.html:57 +#: searx/templates/simple/preferences.html:51 +msgid "Autocomplete" +msgstr "நிறைவுத் தானியக்கம்" + +#: searx/templates/courgette/preferences.html:45 +#: searx/templates/legacy/preferences.html:46 +#: searx/templates/oscar/preferences.html:68 +#: searx/templates/simple/preferences.html:166 +msgid "Image proxy" +msgstr "பட நிகராளி" + +#: searx/templates/courgette/preferences.html:48 +#: searx/templates/legacy/preferences.html:49 +#: searx/templates/oscar/preferences.html:72 +#: searx/templates/simple/preferences.html:169 +msgid "Enabled" +msgstr "செயல்படுத்து" + +#: searx/templates/courgette/preferences.html:49 +#: searx/templates/legacy/preferences.html:50 +#: searx/templates/oscar/preferences.html:73 +#: searx/templates/simple/preferences.html:170 +msgid "Disabled" +msgstr "நிறுத்தப்பட்டது" + +#: searx/templates/courgette/preferences.html:54 +#: searx/templates/legacy/preferences.html:55 +#: searx/templates/oscar/preferences.html:77 +#: searx/templates/pix-art/preferences.html:30 +#: searx/templates/simple/preferences.html:156 +msgid "Method" +msgstr "முறை" + +#: searx/templates/courgette/preferences.html:63 +#: searx/templates/legacy/preferences.html:64 +#: searx/templates/oscar/preferences.html:86 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 +#: searx/templates/simple/preferences.html:63 +#: searx/templates/simple/preferences.html:90 +msgid "SafeSearch" +msgstr "பாதுகாப்பன தேடல்" + +#: searx/templates/courgette/preferences.html:66 +#: searx/templates/legacy/preferences.html:67 +#: searx/templates/oscar/preferences.html:90 +#: searx/templates/simple/preferences.html:66 +msgid "Strict" +msgstr "" + +#: searx/templates/courgette/preferences.html:67 +#: searx/templates/legacy/preferences.html:68 +#: searx/templates/oscar/preferences.html:91 +#: searx/templates/simple/preferences.html:67 +msgid "Moderate" +msgstr "மிதமான" + +#: searx/templates/courgette/preferences.html:68 +#: searx/templates/legacy/preferences.html:69 +#: searx/templates/oscar/preferences.html:92 +#: searx/templates/simple/preferences.html:68 +msgid "None" +msgstr "எதுவுமில்லை" + +#: searx/templates/courgette/preferences.html:73 +#: searx/templates/legacy/preferences.html:74 +#: searx/templates/oscar/preferences.html:96 +#: searx/templates/pix-art/preferences.html:39 +#: searx/templates/simple/preferences.html:131 +msgid "Themes" +msgstr "" + +#: searx/templates/courgette/preferences.html:83 +msgid "Color" +msgstr "வண்ணம்" + +#: searx/templates/courgette/preferences.html:86 +msgid "Blue (default)" +msgstr "நீலம் (இயல்பான)" + +#: searx/templates/courgette/preferences.html:87 +msgid "Violet" +msgstr "ஊதா" + +#: searx/templates/courgette/preferences.html:88 +msgid "Green" +msgstr "பச்சை" + +#: searx/templates/courgette/preferences.html:89 +msgid "Cyan" +msgstr "மயில் நிறம்" + +#: searx/templates/courgette/preferences.html:90 +msgid "Orange" +msgstr "ஆரஞ்சு" + +#: searx/templates/courgette/preferences.html:91 +msgid "Red" +msgstr "சிவப்பு" + +#: searx/templates/courgette/preferences.html:96 +#: searx/templates/legacy/preferences.html:93 +#: searx/templates/pix-art/preferences.html:49 +#: searx/templates/simple/preferences.html:77 +msgid "Currently used search engines" +msgstr "தற்போது பயன்படுத்திய தேடுபொறிகள்" + +#: searx/templates/courgette/preferences.html:100 +#: searx/templates/legacy/preferences.html:97 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 +#: searx/templates/pix-art/preferences.html:53 +#: searx/templates/simple/preferences.html:87 +msgid "Engine name" +msgstr "எந்திரத்தின் பெயர்" + +#: searx/templates/courgette/preferences.html:101 +#: searx/templates/legacy/preferences.html:98 +msgid "Category" +msgstr "வகுப்பு" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:113 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:110 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:64 +#: searx/templates/simple/preferences.html:86 +msgid "Allow" +msgstr "அனுமதி" + +#: searx/templates/courgette/preferences.html:102 +#: searx/templates/courgette/preferences.html:114 +#: searx/templates/legacy/preferences.html:99 +#: searx/templates/legacy/preferences.html:111 +#: searx/templates/pix-art/preferences.html:54 +#: searx/templates/pix-art/preferences.html:65 +msgid "Block" +msgstr "தடை" + +#: searx/templates/courgette/preferences.html:122 +#: searx/templates/legacy/preferences.html:119 +#: searx/templates/oscar/preferences.html:285 +#: searx/templates/pix-art/preferences.html:73 +#: searx/templates/simple/preferences.html:180 +msgid "" +"These settings are stored in your cookies, this allows us not to store this " +"data about you." +msgstr "" + +#: searx/templates/courgette/preferences.html:124 +#: searx/templates/legacy/preferences.html:121 +#: searx/templates/oscar/preferences.html:287 +#: searx/templates/pix-art/preferences.html:75 +#: searx/templates/simple/preferences.html:182 +msgid "" +"These cookies serve your sole convenience, we don't use these cookies to " +"track you." +msgstr "இந்த நினைவிகள் உங்களின் வசதிக்காக மட்டுமே. இந்த நினைவிகள் உங்களை உளவு பார்க்காது." + +#: searx/templates/courgette/preferences.html:127 +#: searx/templates/legacy/preferences.html:124 +#: searx/templates/oscar/preferences.html:293 +#: searx/templates/pix-art/preferences.html:78 +#: searx/templates/simple/preferences.html:185 +msgid "save" +msgstr "சேமி" + +#: searx/templates/courgette/preferences.html:128 +#: searx/templates/legacy/preferences.html:125 +#: searx/templates/oscar/preferences.html:295 +#: searx/templates/simple/preferences.html:186 +msgid "Reset defaults" +msgstr "இயல்புநிலைக்குத் திருப்பவும்" + +#: searx/templates/courgette/preferences.html:129 +#: searx/templates/legacy/preferences.html:126 +#: searx/templates/oscar/preferences.html:294 +#: searx/templates/pix-art/preferences.html:79 +#: searx/templates/simple/preferences.html:187 +msgid "back" +msgstr "பின்செல்" + +#: searx/templates/courgette/results.html:12 +#: searx/templates/legacy/results.html:13 +#: searx/templates/oscar/results.html:136 +#: searx/templates/simple/results.html:58 +msgid "Search URL" +msgstr "இத்தேடலின் முகவரி" + +#: searx/templates/courgette/results.html:16 +#: searx/templates/legacy/results.html:17 +#: searx/templates/oscar/results.html:141 +#: searx/templates/simple/results.html:62 +msgid "Download results" +msgstr "தேடல் பதில்களை தரவிறக்கு" + +#: searx/templates/courgette/results.html:34 +#: searx/templates/legacy/results.html:35 +#: searx/templates/simple/results.html:10 +msgid "Answers" +msgstr "பதில்கள்" + +#: searx/templates/courgette/results.html:42 +#: searx/templates/legacy/results.html:43 +#: searx/templates/oscar/results.html:116 +#: searx/templates/simple/results.html:42 +msgid "Suggestions" +msgstr "பரிந்துரைகள்" + +#: searx/templates/courgette/results.html:70 +#: searx/templates/legacy/results.html:81 +#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78 +#: searx/templates/simple/results.html:130 +msgid "previous page" +msgstr "முந்தைய பக்கம்" + +#: searx/templates/courgette/results.html:81 +#: searx/templates/legacy/results.html:92 +#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84 +#: searx/templates/simple/results.html:145 +msgid "next page" +msgstr "அடுத்தப் பக்கம்" + +#: searx/templates/courgette/search.html:3 +#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6 +#: searx/templates/oscar/search_full.html:9 +#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4 +msgid "Search for..." +msgstr "எதைப்பற்றி தேட வேண்டும்?" + +#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4 +#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4 +#: searx/templates/simple/stats.html:7 +msgid "Engine stats" +msgstr "எந்திரத்தின் புள்ளி விவரங்கள்" + +#: searx/templates/courgette/result_templates/images.html:4 +#: searx/templates/legacy/result_templates/images.html:4 +#: searx/templates/pix-art/result_templates/images.html:4 +msgid "original context" +msgstr "உண்மையான சூழல்" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Seeder" +msgstr "பகிர்பவர்" + +#: searx/templates/courgette/result_templates/torrent.html:7 +#: searx/templates/legacy/result_templates/torrent.html:11 +#: searx/templates/oscar/result_templates/torrent.html:6 +#: searx/templates/simple/result_templates/torrent.html:9 +msgid "Leecher" +msgstr "எடுப்பவர்" + +#: searx/templates/courgette/result_templates/torrent.html:9 +#: searx/templates/legacy/result_templates/torrent.html:9 +#: searx/templates/oscar/macros.html:23 +#: searx/templates/simple/result_templates/torrent.html:6 +msgid "magnet link" +msgstr "காந்த இணைப்பு" + +#: searx/templates/courgette/result_templates/torrent.html:10 +#: searx/templates/legacy/result_templates/torrent.html:10 +#: searx/templates/oscar/macros.html:24 +#: searx/templates/simple/result_templates/torrent.html:7 +msgid "torrent file" +msgstr "டொரன்ட் கோப்பு" + +#: searx/templates/legacy/categories.html:8 +#: searx/templates/simple/categories.html:6 +msgid "Click on the magnifier to perform search" +msgstr "உருப்பெருக்கியைச் சொடுக்கி தேடலைத் தொடங்கவும்" + +#: searx/templates/legacy/preferences.html:84 +#: searx/templates/oscar/preferences.html:113 +#: searx/templates/simple/preferences.html:142 +msgid "Results on new tabs" +msgstr "தேடல் முடிவுகள் புதிய Tab-ல்" + +#: searx/templates/legacy/preferences.html:87 +#: searx/templates/oscar/preferences.html:117 +#: searx/templates/simple/preferences.html:145 +msgid "On" +msgstr "இயக்கு" + +#: searx/templates/legacy/preferences.html:88 +#: searx/templates/oscar/preferences.html:118 +#: searx/templates/simple/preferences.html:146 +msgid "Off" +msgstr "அமர்த்து" + +#: searx/templates/legacy/result_templates/code.html:3 +#: searx/templates/legacy/result_templates/default.html:3 +#: searx/templates/legacy/result_templates/map.html:9 +#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48 +#: searx/templates/simple/macros.html:43 +msgid "cached" +msgstr "" + +#: searx/templates/oscar/advanced.html:4 +msgid "Advanced settings" +msgstr "மேம்பட்ட அமைப்புகள்" + +#: searx/templates/oscar/base.html:62 +#: searx/templates/oscar/messages/first_time.html:4 +#: searx/templates/oscar/messages/save_settings_successfull.html:5 +#: searx/templates/oscar/messages/unknow_error.html:5 +msgid "Close" +msgstr "மூடு" + +#: searx/templates/oscar/base.html:64 +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +#: searx/templates/simple/results.html:25 +msgid "Error!" +msgstr "பிழை!" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "Powered by" +msgstr "" + +#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55 +msgid "a privacy-respecting, hackable metasearch engine" +msgstr "உங்கள் அகவுரிமையை மதிக்கும் மாற்றியமைக்ககூடிய ஒரு தேடல் எந்திரம்" + +#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50 +#: searx/templates/simple/macros.html:43 +msgid "proxied" +msgstr "" + +#: searx/templates/oscar/macros.html:92 +msgid "supported" +msgstr "ஆதரவுண்டு" + +#: searx/templates/oscar/macros.html:96 +msgid "not supported" +msgstr "ஆதரவில்லை" + +#: searx/templates/oscar/preferences.html:13 +#: searx/templates/oscar/preferences.html:22 +#: searx/templates/simple/preferences.html:32 +msgid "General" +msgstr "பொது" + +#: searx/templates/oscar/preferences.html:14 +#: searx/templates/oscar/preferences.html:134 +#: searx/templates/simple/preferences.html:76 +msgid "Engines" +msgstr "எந்திரங்கள்" + +#: searx/templates/oscar/preferences.html:15 +#: searx/templates/oscar/preferences.html:207 +msgid "Plugins" +msgstr "நீட்சி" + +#: searx/templates/oscar/preferences.html:16 +#: searx/templates/oscar/preferences.html:233 +msgid "Answerers" +msgstr "பதில்கள்" + +#: searx/templates/oscar/preferences.html:17 +#: searx/templates/oscar/preferences.html:260 +msgid "Cookies" +msgstr "நினைவிகள்" + +#: searx/templates/oscar/preferences.html:42 +#: searx/templates/simple/preferences.html:48 +msgid "What language do you prefer for search?" +msgstr "தேடலுக்கு எந்த மொழியை விரும்புகிறீர்கள்?" + +#: searx/templates/oscar/preferences.html:48 +#: searx/templates/simple/preferences.html:128 +msgid "Change the language of the layout" +msgstr "வடிவமைப்பின் மொழியை மாற்று" + +#: searx/templates/oscar/preferences.html:58 +#: searx/templates/simple/preferences.html:60 +msgid "Find stuff as you type" +msgstr "உள்ளிடும் போதே தேடு" + +#: searx/templates/oscar/preferences.html:69 +#: searx/templates/simple/preferences.html:173 +msgid "Proxying image results through searx" +msgstr "" + +#: searx/templates/oscar/preferences.html:78 +msgid "" +"Change how forms are submited, <a " +"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" +" rel=\"external\">learn more about request methods</a>" +msgstr "" + +#: searx/templates/oscar/preferences.html:87 +#: searx/templates/simple/preferences.html:71 +msgid "Filter content" +msgstr "" + +#: searx/templates/oscar/preferences.html:97 +#: searx/templates/simple/preferences.html:139 +msgid "Change searx layout" +msgstr "searx-ன் வடிவமைப்பை மாற்று" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Choose style for this theme" +msgstr "" + +#: searx/templates/oscar/preferences.html:106 +#: searx/templates/oscar/preferences.html:111 +msgid "Style" +msgstr "" + +#: searx/templates/oscar/preferences.html:151 +#: searx/templates/oscar/preferences.html:163 +#: searx/templates/simple/preferences.html:88 +msgid "Shortcut" +msgstr "" + +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 +msgid "Selected language" +msgstr "தேர்வு செய்யப்பட்ட மொழி" + +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 +#: searx/templates/simple/preferences.html:91 +msgid "Time range" +msgstr "நேர வரம்பு" + +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 +#: searx/templates/simple/preferences.html:92 +msgid "Avg. time" +msgstr "சராசரி நேரம்" + +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 +#: searx/templates/simple/preferences.html:93 +msgid "Max time" +msgstr "அதிகபட்ச நேரம்" + +#: searx/templates/oscar/preferences.html:236 +msgid "This is the list of searx's instant answering modules." +msgstr "இது searx-ன் உடனடி பதிலளிக்கும் தொகுதிகளின் பட்டியல்." + +#: searx/templates/oscar/preferences.html:240 +msgid "Name" +msgstr "பெயர்" + +#: searx/templates/oscar/preferences.html:241 +msgid "Keywords" +msgstr "குறிப்புச்சொற்கள்" + +#: searx/templates/oscar/preferences.html:242 +msgid "Description" +msgstr "விளக்கம்" + +#: searx/templates/oscar/preferences.html:243 +msgid "Examples" +msgstr "எடுத்துக்காட்டுகள்" + +#: searx/templates/oscar/preferences.html:263 +msgid "" +"This is the list of cookies and their values searx is storing on your " +"computer." +msgstr "இந்தப் பட்டியல் உங்கள் கணினியில் சேமிக்கப்பட்டுள்ள searx-ன் நினைவிகள் மற்றும் அதனுடைய மதிப்புகள்." + +#: searx/templates/oscar/preferences.html:264 +msgid "With that list, you can assess searx transparency." +msgstr "இந்தப் பட்டியல் மூலம் நீங்கள் searx-ன் வெளிப்படைத்தன்மையை மதிப்பிடலாம்." + +#: searx/templates/oscar/preferences.html:269 +msgid "Cookie name" +msgstr "நினைவியின் பெயர்" + +#: searx/templates/oscar/preferences.html:270 +msgid "Value" +msgstr "மதிப்பு" + +#: searx/templates/oscar/preferences.html:289 +msgid "Search URL of the currently saved preferences" +msgstr "தற்போது சேமிக்கப்பட்ட விருப்பத்தேர்வுகளில் வலைதள முகவரியைத் தேடு" + +#: searx/templates/oscar/preferences.html:289 +msgid "" +"Note: specifying custom settings in the search URL can reduce privacy by " +"leaking data to the clicked result sites." +msgstr "குறிப்பு : தேடல் வலைதள முகவரியில் குறிப்பிட்ட விருப்ப அமைப்புகள், கிடைத்தத் தளங்களை சொடுக்குவதன் மூலம் தரவுகள் கசிவதால் அகவுரிமை குறையும்." + +#: searx/templates/oscar/results.html:17 +msgid "Search results" +msgstr "தேடல் முடிவுகள்" + +#: searx/templates/oscar/results.html:21 +#: searx/templates/simple/results.html:84 +msgid "Try searching for:" +msgstr "இதுபோல் தேடி பார்க்கவும்" + +#: searx/templates/oscar/results.html:100 +#: searx/templates/simple/results.html:25 +msgid "Engines cannot retrieve results" +msgstr "எந்திரங்களால் பதில்களை பெற முடியவில்லை" + +#: searx/templates/oscar/results.html:131 +msgid "Links" +msgstr "இணைப்புகள்" + +#: searx/templates/oscar/search.html:8 +#: searx/templates/oscar/search_full.html:11 +#: searx/templates/simple/search.html:5 +msgid "Start search" +msgstr "தேடலை துவங்கு" + +#: searx/templates/oscar/stats.html:2 +msgid "stats" +msgstr "புள்ளி விவரங்கள்" + +#: searx/templates/oscar/time-range.html:3 +#: searx/templates/simple/time-range.html:3 +msgid "Anytime" +msgstr "எந்நேரமும்" + +#: searx/templates/oscar/time-range.html:6 +#: searx/templates/simple/time-range.html:6 +msgid "Last day" +msgstr "நேற்று" + +#: searx/templates/oscar/time-range.html:9 +#: searx/templates/simple/time-range.html:9 +msgid "Last week" +msgstr "கடந்த வாரம்" + +#: searx/templates/oscar/time-range.html:12 +#: searx/templates/simple/time-range.html:12 +msgid "Last month" +msgstr "கடந்த மாதம்" + +#: searx/templates/oscar/time-range.html:15 +#: searx/templates/simple/time-range.html:15 +msgid "Last year" +msgstr "கடந்த ஆண்டு" + +#: searx/templates/oscar/messages/first_time.html:6 +#: searx/templates/oscar/messages/no_data_available.html:3 +msgid "Heads up!" +msgstr "வாழ்த்துக்கள்!" + +#: searx/templates/oscar/messages/first_time.html:7 +msgid "It look like you are using searx first time." +msgstr "நீங்கள் இதை பயன்படுத்துவது இதுதான் முதல்முறை போலுள்ளது." + +#: searx/templates/oscar/messages/no_cookies.html:3 +msgid "Information!" +msgstr "தகவல்!" + +#: searx/templates/oscar/messages/no_cookies.html:4 +msgid "currently, there are no cookies defined." +msgstr "தற்போது எந்தவொரு நினைவிகளும் வரையறுக்கப்படவில்லை." + +#: searx/templates/oscar/messages/no_data_available.html:4 +msgid "There is currently no data available. " +msgstr "தற்போது தரவுகள் ஏதும் இல்லை." + +#: searx/templates/oscar/messages/no_results.html:4 +#: searx/templates/simple/messages/no_results.html:4 +msgid "Engines cannot retrieve results." +msgstr "எந்திரத்தால் பதில்களை மீட்டெடுக்க இயலவில்லை." + +#: searx/templates/oscar/messages/no_results.html:10 +#: searx/templates/simple/messages/no_results.html:10 +msgid "Please, try again later or find another searx instance." +msgstr "தயவுசெய்து பின்னர் முயற்சிக்கவும் அல்லது வேறொரு searx-யைத் தேடவும்" + +#: searx/templates/oscar/messages/no_results.html:14 +#: searx/templates/simple/messages/no_results.html:14 +msgid "Sorry!" +msgstr "மன்னிக்கவும்!" + +#: searx/templates/oscar/messages/no_results.html:15 +#: searx/templates/simple/messages/no_results.html:15 +msgid "" +"we didn't find any results. Please use another query or search in more " +"categories." +msgstr "எங்களால் எந்ததொரு பதில்களையும் தேட இயலவில்லை. தயவு செய்து வேறொரு வினவலில் அல்லது கூடுதலானப் பிரிவுகளில் தேடவும்." + +#: searx/templates/oscar/messages/save_settings_successfull.html:7 +msgid "Well done!" +msgstr "சபாஷ்!" + +#: searx/templates/oscar/messages/save_settings_successfull.html:8 +msgid "Settings saved successfully." +msgstr "அமைப்புகள் வெற்றிகரமாக சேமிக்கப்பட்டது." + +#: searx/templates/oscar/messages/unknow_error.html:7 +msgid "Oh snap!" +msgstr "மன்னிக்கவும்!" + +#: searx/templates/oscar/messages/unknow_error.html:8 +msgid "Something went wrong." +msgstr "ஏதோ தவறு நடந்துள்ளது." + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "show media" +msgstr "ஊடகத்தைக் காட்டு" + +#: searx/templates/oscar/result_templates/default.html:7 +#: searx/templates/simple/result_templates/default.html:6 +msgid "hide media" +msgstr "ஊடகத்தை மறை" + +#: searx/templates/oscar/result_templates/images.html:30 +msgid "Get image" +msgstr "படத்தைப் பெறு" + +#: searx/templates/oscar/result_templates/images.html:33 +msgid "View source" +msgstr "மூலத்தைப் பார்" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "show map" +msgstr "வரைபடத்தை காண்பி" + +#: searx/templates/oscar/result_templates/map.html:7 +#: searx/templates/simple/result_templates/map.html:7 +msgid "hide map" +msgstr "வரைபடத்தை மறை" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "show details" +msgstr "விவரங்களைக் காட்டு" + +#: searx/templates/oscar/result_templates/map.html:11 +#: searx/templates/simple/result_templates/map.html:11 +msgid "hide details" +msgstr "விவரங்களை மறை" + +#: searx/templates/oscar/result_templates/torrent.html:7 +#: searx/templates/simple/result_templates/torrent.html:11 +msgid "Filesize" +msgstr "கோப்பளவு" + +#: searx/templates/oscar/result_templates/torrent.html:9 +#: searx/templates/simple/result_templates/torrent.html:12 +msgid "Bytes" +msgstr "பைட்டுகள்" + +#: searx/templates/oscar/result_templates/torrent.html:10 +#: searx/templates/simple/result_templates/torrent.html:13 +msgid "kiB" +msgstr "kiB" + +#: searx/templates/oscar/result_templates/torrent.html:11 +#: searx/templates/simple/result_templates/torrent.html:14 +msgid "MiB" +msgstr "MiB" + +#: searx/templates/oscar/result_templates/torrent.html:12 +#: searx/templates/simple/result_templates/torrent.html:15 +msgid "GiB" +msgstr "GiB" + +#: searx/templates/oscar/result_templates/torrent.html:13 +#: searx/templates/simple/result_templates/torrent.html:16 +msgid "TiB" +msgstr "TiB" + +#: searx/templates/oscar/result_templates/torrent.html:15 +#: searx/templates/simple/result_templates/torrent.html:20 +msgid "Number of Files" +msgstr "மொத்த கோப்புகள்" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "show video" +msgstr "காணொளிகளை காண்பி" + +#: searx/templates/oscar/result_templates/videos.html:7 +#: searx/templates/simple/result_templates/videos.html:6 +msgid "hide video" +msgstr "காணொளிகளை மறை" + +#: searx/templates/pix-art/results.html:28 +msgid "Load more..." +msgstr "இன்னும் கொஞ்சம்" + +#: searx/templates/simple/base.html:31 +msgid "No item found" +msgstr "எதுவும் கிடைக்கவில்லை" + +#: searx/templates/simple/preferences.html:89 +msgid "Supports selected language" +msgstr "தேர்ந்தெடுத்த மொழிக்கு ஆதரவு உள்ளது." + +#: searx/templates/simple/preferences.html:118 +msgid "User interface" +msgstr "பயனர் இடைமுகப்பு" + +#: searx/templates/simple/preferences.html:154 +msgid "Privacy" +msgstr "தனியுரிமை" diff --git a/searx/translations/te/LC_MESSAGES/messages.mo b/searx/translations/te/LC_MESSAGES/messages.mo index 57488bf0bda0fa32cb6d40b599b743d555c62b1a..f32870e9a6495d64fca7ffaa0ac085ca5dd771d4 100644 GIT binary patch delta 2542 zcmYk+du$X%9Ki9Z7LY<|DYiWNVEdq@(8KE$q?~9lMKlVv0R(}Vxb(KyrPp0@4<12M zL5oJ9Dg%N>Ap{LR5Vj?NMkz-AApV0d6pfLr4}1}V7>Py`<M(%LqRn<cGqW?l-*0BO zeLC@HQ_qE>++B(vi{CPS=iVs2|9%ofl^Q~~8;4^GhvCM+-e7z?%Dmk;3SYvT@DNtw zvEcdnz^`$HQa$QB8WQjdmg66oi^U8U;RGzi5VAns5%lj3`YVu2#koyH7Y%$G38lQi z6DS1@q7--rOUSQ2r@^HzX9twJhO(29%$6M&;Ych)DX1Q$pxMZ!7I4eMB`EXFz%G<H z8RSwMxJf~e2mP&>OMbPJMm|0-19%V%@DPs1cack-<t72nqwL@UW(!9-nQK8mhbrVP z4o8`nk5XV+U>!=n2=+*#IW#0u8_GAZ5{adHuo$02NxT>3BwoRraUd8!gR;}JD21Fu zN$8`T*rnk4KPYi>c_`0E<Z=G8u!NrMybPsZiL$dg<WjeAlZ8>d0q;cF;arsY_n@qA zMRKS`C_8)zrJ$~$zZPX)FG~EU@;HCl(T-r^KIBqwaFg-lC<#uZ1pWYJ;io7CeT8H3 zTYNu9slTw4{z(?g$$c4k1!a5)RgK3=l>Ti!G(t3%q8wE(w&ETfhd-heA}>-F=A+E3 z!z4!0z&EiG&*CJM4@h2ZEw`C?E6QJogA%t7yRhdVjfZKB;gcqpN~2W18D-)goQC~4 z1AUYNO88(VV?E0Jg(wAfVhL_WDdc&ail>79C9I-9njk#yQPXKOGO!#a@HTEz>As+U zD)1AOlemZy;5U>+#bd6|Z$L>nAE{9#ktymil=;u09QoUUpJnC!U!}nzsC+)@D3)Ul zK8O-%BW8~bCE-DoM1$Cl-=qA8yN6?F!c{06*o$&<gE$W_BbS;^5ZTDRSVVrcl!pA- zt-@w}0;Qn$P!@cId{^p+pno-R7+;?3uskq~@~&G@3f_S7(e6Y^xEE#q8z^xHu}3OB zM?>D-?<hw!iq$ec1+$f6i2hQPqwGa$P_LqV1E+%VpRk$!2!d7MT%3dL$RqVK$_bxD zb!Q^su2uTth|*ze;?s<@-K~#|9D7rXnYQ9?a=q@$ugOceDND7u2{);0N7<$BS|{O} zF(YZEGKq9b-Q~n>$1)tV+tSSiG5tzG!;Zo_-BK9VUli8Qu$``yT41h|*p^ygr90i2 zTHwa4Bso+ot5mCN*lDZV=x{SmjGklZ&Z3%?okq$rS68b0lcp25RGS$mi<=InwIwp- zO{un|)nO$qr`?jay~b=`uNGP{ep6Q3h*=$Gw#r3jhqcHulkJ`AI>rMF=j)$~D|NJ_ zuX-`H8Q0S+POdjn*@?CjCs#76mY9i*r9U1wCS<O3GikNbZ0}MXc7lv?%V8r4)oI5p zV+}V~+1(VHQg&MZGk)^;)&DDx_8QyGq>R<f(5ogi=o1sBR%BPD)P`=`$)v5+M&o*8 za;n}i<E|bkT^0$4!ZVG=S<%Mkso_XCoY!`LXd$6ew(ErEa*R<U5^kIo3P(bbCZlm? zv}u;Uy=-iCt9$yjZrfOLdcU*YHfE>nv{Y_7v9+e1o)hmj?Sy`$?62IJ)53XrTe&sf z_ulfo-M+Wa@84u(JBNMmi0^II0~Plb`Q9<#^Zfqp**S-qqd%P3rej9!(IZBEj{dc( zR4=b8*Dckf^)pokM+d8_bM!CO>-4iV%k<Dmw*F>Du`Z|`s;^AiLa+hi`ra<Te~YvU z_G0aHeXiEfFVsc#-IM24`(CePmweo}Rx00n)%OOa2JcjM@r!z5eT}|UU#5$uG>`PX zzHEJ)eD8I=w{oIxnri5}hDn9KcbxUUcaQ+t*M6X(@n~-7P)?cTmxu%GmN{f%e^2<{ z0W#<<;b=j2&m@xqY3skkRr<BY20bKFtLH~n=o69E<gU<5nksZ(Q%2WJzc^0T^grr* P`?F<A>A?oynKAoc60QMs literal 13839 zcmeI13veCPeTPp2;o*RJw51S2vv$CigLNgD1YCguTQ*>7TSih~(lnu~dsn)P?%loY z?v*TDrr<OrgfWll5K>;|VFHAJuOZ;jf?Z}hDHJj=8EDc>rn!`4ngLpdHYH6<O26MZ zyON9_khIXyDP!)pXZJk*?{jwbcZctLt>M2v=l>7!|4-hp*7Sc*eZZK*XnqUo(GTE( z@JDce_)5;7!h>kP0aw6-XsF)+9D=_OHGV6c4Y%d(Z^8p;KLziA&%s}Z>kl?&4!jB; z4Y$G$_${b;Ud#D9JeKzRn3Sc>d?>k2fXBd-;lA*b@NoDUcqqIOs{aP4^{<4VhS%lK z{}pPU{SI;cW<x|XAB3{Ue5mKY13wIxLJ#_IKe!?1<xulqo%2s2Q=8l15pXNiJdZ;U zJ_BX9SK&VJKcM=(0j2j52(RZKf|7q8<dInfCEqeAJ^La5%rHMCn8JndHYj<X&iP$9 zi}v$S^S+$(H7L2HtkyjMYW~?!<Bx{Y^H?Z3kI(OSLD_pT9EVGw*8e)hRpy2K`KvIY z{Th_~AwqL$CZXoL0&1PB;QQd0;gRqL_*?Mn@HqGslpOyI5!w6<%D%G*q8J_pPlA_2 z>GK$rzE42e@7er*8!C=|3}x?wf5XXfEIfyH2ke3uLCybFcpZEgGQ^zoo5TbRpyuBQ zCD)gs^xBl)-wHcvKLTZs7oqh3H+U30fW<ZcT&VFqP~#Uv<>%Q@b{T~XF%77GmqGbw zBSa)~eSUunl>Z)r()SVgLHKz7`~^6V_KR>39)@v01p}!3dkpr&7vPET1e_rMTmYqK z1f~BZ#Pnt(l>E0qt-A$k-3Ouk^B9!8--a6hw@`NbAzTCx!U)~)G^p_nsCXKO8n+&H zzzzBHd!YQf6-xhyq3rWbsQI7H`8}xdKZ1&<m!b4{1xmhu$=h#0t-B9K(z*vi<;83$ ze;o;>$2_QUC*}A1pyW6Q%3q&^8b6lbZ$Qbn4r<)z^7b`Q^4<(3@0~gC&!0aECC^_& z$?*)-I^WBm|2>pEuR!UiVmSczhqBY}L0o4(oAU<vSHEV=15k3Vr$};XHbTYI-8pyU z_n(83`&GCC{wKslX8CWsy8aoc@ee@7_0v%D{v0YE_Mtf50gr%+lSkkh_zcvz4|`6| zlOZ8sDp2cP43&>xgj#P4)O=6C1b!d#&-4?dJ+J|fgSSED)8kNf{Vx18d>)<zPn+xP zHvtjB{1Mc8o1pCRH7Gf@!!h_B_y@4>BhLSuq3m=&RKLfe)_ES5;EV9%@F;|ry#3IF z!%+VFEZhffg!0cdQ1ks6l%CH(#m9?Kdb|cnO|u`$Nxx(GIUe>wtrx?E@Mb7Eo`n1} z&+>!l=HK)7G4q_A`k>;c2_@gfQ2JjDWsjTk`;S7&`Apt^7OLMrz;XB!sP)I@yLGOI zlJik0|2zvd-<c>Wc}Aht8!BF}f$xL2LD}&Rs5spY)&Fmx<a-^e{~-(9Iv$K^_d)sd z0jM~72`Yc~|EOypp0flop*b5$z8K1`m%(%3mtYtCG3<p$V%+QCAXL1*1X0Dj0X5Hj zjJ+RR1r;xYQ1S&(@jniw&t_=t0p-_c;cWO%P~(3NrRTm3D#MRLLeyLdPk=2b`~48g z&inFn20Q^OUM_+M!K<O{bQ7cmm=@IhPr`Zd+i(#641Nl(Mp><MH|&Q`!V}@q-OfJ) zQ2WfeQ2M8EG5kE74gUfj0-uH-fIonT!k3`rdL7P!hm(}D+c9tvTmgAx)<N~VJLe84 zd7p#0+I$~MpZ7CJJQ7OJ<KY2tG1UA^q5QuJ%HDqr4}>>C#o3)u^4$Y9ej7X-{w37< z-+{94KSKHEV2mz3=0nBPVyNdsaDSM=!{8r6&37flHRcAWJbMDl-!JFS_xYHU_fRN# zkAl+gSg8K1q3qg#luC0qJRLp`HUEJhck&zorQduw08fXS=TD&G^%1DN`6)C@E8~7t z4k}(6WLX%Ere<la7EhR^Q92PMK|<SJiIZ7a56seL7MJ6CqZVYYQTMa3?AL0OUM==3 zUKFg$yoNs-coWqi^3rk=*J{k{WwAFLXIWhL;t{XhOp+jS9nI45(URvTACJQdqbDbr zF!hEfy(FlFNl=z-njvlkQKw%n2Wje!BVHIsspe}mhigcY*|uHSANRwWKU@pUvRYgo z<F^@j9hG3jZ`QH}X4zyGq^8f$g3&mcG<{V+LgZ>Z;f=&eJ@xz~@Y3dRJ<Nj2Lhlsc zt0uw7lDX9^YxH(?1yN}t919x==a=GSv`ek7vnCrslA-_kLx~@yBSCWh+9Z~_Y9AR0 zE^G#Ac78p`s&OTqi(<7UbLkr-kzbp8YAx`S$g9UJ>kr4xjOTWMmk&6l%RjY{GNtc2 zujWtEueg_01MWnlO<5j;xOUznj#ISBCToGT<5`%h1K#YzYGYm;+5UBZGzv$;fF7}j zDzXHD;V0!P9ht-Q#kDx$x87)Gfwz978Q~dRaB;DupNux^I2O~!@mLsmk*`(kHTRs? z36*AQV@^|hK{Ogha>k?|ndQzw9=?=kLhcv03iY@_RD}(#Y?g<qoLtdG1Cyj4Iw#)B zwO;6qfEANT4~6H3jk%s5Ra^%INIYys4DQsi97mZS5>#`id(17F<?%#h!#fF5;wLpL zBDd@cE4))PzfLpXc92#!ti6sjC@)}$(=#V3Mo}zBXQ(+Ia8XQc`|as@$*f3{IGN*s zB<p--V`|O_`3)}$bU|2oQU(2JqI8-yM@Br~n#aosRC8t!1&LqFi90Ld2q7zr5WN-h zblfLrQaWHGVuK;!GIM6E=r|6Q<h=8h=?l`5IWq}@$eb1UmDFo;v|6bFUL%RuO`4U_ zNEnewc`;C%$g;^wM}$m9{PJ}8a*LIz15-8W%{LZ$DC`r{<X`6e*&sb7Je9$$%qT_i zm{$wO0zI|K+)PzMT<VO3Nt#*Ll+5o2lM``LNzE#sdli4uUDPpN)m=^m!I-<6L}#-q z2+Gv}hS3<KRP&U!rBcbP_Sd;Ow%TU7S&h9`#}&*>tz4r_SmTd}qqOq0Dtzuugjv-) zH>`JBnX7R&77)rEXH&%nZLHgRKqag!D0yp%6aut5*Q1w`x9*3LM`F7Oa@7|njpDd! zP-~RTnwYARW{F?Ml@zz4Hcpp=83ojK$6a-vHlqrIBLt7Lpw~+qK{*_mlqJi}RJFYD zk%t7TIW8=`PYkS5{321MiEA54IPRAxRnT$Vn8sK9%vU67P+3)of{@FfvN$2Nrdb~* zj45U|vS+l5Oz9sPG5u99jeH`mKQjI74&G9?J1p;Csrlj>+r(}jOe8Gg?&qtrNsY0W zMC@P_-f$96s6u3z&GeHGME_bvw2A<Zu?cN&D21J!*6vg>NtwE~hb*AnQDXd}q)lR@ z8arB0DS3JIk{#SluTFIdiSD8|1+cXHI52B%4lMLC>YG2R5U8;l21`8htwODfF>YdA zvJU@Hmq?Ei<C+wh)U1uQ#aD2OA)=<TXRY%U_sCs&%I1FV8|@oO+#JQ|+Jwx&j7mYg zsiI`;5Cars{<k}~l=~&NZLgzY<z(Rtn>O&7u^v+=6~<%i{iJoi*?1!fp{Pirm^PCL zr3gU!6P;eZ<)><@blYkmf#_8PEvZQgQuOfrWHF-T4QZpy#bD*c294c1i$30PP$i|c z<>YEob!Nno;)lb5X5OP83%T;pvmrMS*tNW~hKAPWGcvzgg9@fboTj19HiQ01Fz9yZ z!7^1SH4fUobC((S+*)M%ve>ZmgBUTI`r}w+W*yCYQ><0o^48QYoVSrW->ZwjE_x!3 z-6{uzfD*`E7xh!e6z;e)XTEgWw3$27<SfZ@)i}w@9B>9>9f1^x6WW_5k~kXWahxQR zbIf4oCz*{!&L}jpFy%CwdQ&G8ZYE)wS#<g_gU!)VPGLH-aNTIIM4D$Fx=*P#q_a_K z0LL*xVA@Dg><ZUZ1uc2%##U5zXB=irh*5h8q4?;2G#*5ucBX}B;8o&iex~z};&sM2 z+-n0{LreLbQ^nQSX_UlrA!{ek*CYKEq#T!tFsAiXkC@B$cF%03b%)A)ZU$gV%0`s~ z!7v*)M_mGjGZ_m|4s6`h2?+^4wnd%TbNzIJ;(nOq#{*XgWF;*rHxUuJg!Y)2NE;r% zX}(nTV?MWSUCO9ddgIXedR%F8l3^Iz=Me84I*(9)IaDj}?cS2uQjl;@QKyrLMiQyL z<`b&hVR5Q3=jsq+&J8K*DQQ~P_0HQYH*i#D&I@WaxhI%o&a3*IA&TR4CAOysml}4< zbW5IQ&eOJ?+0K}0q3xz^&refr(N;&fHA)+}Fe($*ez6&Lk{@iRdb3%GBg$hsQ0lnv zyV>(|v9X>r!*noZpOZ($OogMIuMkyu5SfLGsCXPbD<w0c6QOZsxn`<ih45qku$H<; z-EZU<+Ns>-IK5(HYkq3N%#7g#y%<nQRoS?1m^z24vSFW0`N?1Ri~^4^QcfWwp};2N z*A)MHB{DM$3)iZd)K;A;bw~^uQoQj5>&k&U+^Zy+v}}{d6jssUw`kb$sovTOy=+4= zx(ln9y>xn|aXCaNyE7YiP@k4rub_IRB984bSmrZLG?bgjjB?_qRbwYgjZ!(RD3|li zR`05|;Bi26r&A?)u?f4^5Vq!A4R#*;vN!#nQ!?wT1Ss!PLPxq_p|`#sM!aZo%Uy7j zojx{uyq|?xEx34IG@Le0?&x1O*uQGU(251x$}d2L&XtwUbKOgGujhhu)<7VKb*@fF z!%F9}=4jeE6!&^7Rxe$->hz_{mk+EM9Gtbbf2gxB3G9Krb2(>>UT;x%&q<v<J)PY> z-lCq~6MByC?&<EPW9I;#)m!;=zr~&1Cv<i%_Igh2{aE+$-TXI8N9|71IZ8RPkh9*| zyj(V_-kK)4RP!6G<ed^-U~itz`!eT^j6?cZTH?#YsSJ1TxxHQ%Of@=(0>9qt4F#MU znqEi#qCPP(QL_0Ljs)v8y2~e?!g?Hc+2rghlDsPmx)#jhXv8Z~=NbA0(CbBP{WQ}h zi%!-lfXgKvkvC_F*Rx>O>XoZkOdGSO)IF=uy>4|5@p2`})@5D1kcQF8Ub*U1TeBt2 zY@~DXbU*3OsjG8ERE{fDfnIO%aG1?<?`6bW=d#IOZ<#+F)VxKd6Io$5Uu)W}&$U~3 zwYOf{Zr#^zZEm-Av|Ah6t?RjC+N~Sgtq0q!?d{grY>)f*cK6D5>#Oap8|^Q%-P+#z z1<l;r{!V=HX}7-7Ze7=IZ9*c?HjsV`qVp~29ryxdt%OEscdK1@Co5sTOWLjbS>5Zf zD)V%k?R>5MZCR^Iy5h5uHEYX0M2Y)k*7xoQB&!T6<7<AMAHHEtav!eQ(%$;TcFP&! zTH5#8c-p4!)^+qJzML&=)b&;W2fj90qY}qN2{Jv{-uihfiDDXW@ZdUY^SARI$_h_F zqrxS~PmD7c@@g*b<xk{)d&}hji(mr6WwY%;UTt9P<r*%FT(MISkzGm`W^%o;3?uJi zz(cm{ovxt(vR!z{{8-H{NjC*hyY&_OE6KPu9g{{4Sz$LJNk{T~DiDh)_dX)`AoEU* zy`2&7)|a$)>mHkIXoOj<$VDuD#p;QXaDwv-hNgKd_oqI%xjHe!kn+q7ufD}cxLt-% z8*TRvV)i`>?A(a^sbhF`lXWTKb*+^M;dcrMt1XM{!1V9HT1<&9n!m&XL=)?iryJ(X zY`IX&W1V=$<P3V)MkG;SAK0%g`i@vs24-=SQzP@VCv@-%dKQ}7<e~8e=RMEvL6~AH zjpU}Oe8BnmHQ%L3a%3P&_{E~Pn_>rin_nc~^exh*HLFoJE^D_Qu&&`(2~XSQJbBFO z`0RS_vQ4ryCB<bXPUB+p-oIfMn-&AFFC@37#xiKP`(k>p?YWI5SsYm~H!E4Iwss&f zdpY$K8!!X5wcdDFzI|G=IPINlh>J~#flO2v0_jF)Ka98gUWA48L9;z}!7$Fj8}`<V zU?4K+>%2e{b8MLU=xVJ+2Uc<RyL9I-u(mKe1G;*73o0;4al9x(+C>{)+F(D@+74(= zMIu9p;k%G=Mp1che70@3uCnr9g3jbW`!<$vaYQC+e?hD1E`(Qcd(FH5bysComd^9j zxe3pH$%fb#B%N7y^SZT5FMR>FdBd(uWNL4IC%**S#CB2a^5n){zY4noNd6$~9=z~g z`BH3EaTSVlE*iU|jjc;Fz8+f#+-p1N_+qOYzqXsLxww_gQX&@zC!%umf9nf#yLF|l zO{}BS0v~t(x4$;q*uX}+Ij7mmN14~&LsS%HUJ+~ez=8jRU#9KWk9TYdlBS#@T!o!F z1>BW?tlrHx>ltT-yMBo;*E5E@Je8UC5qri19nc9{vUywa#rkc3%eK)+Fl$=p)*?4% z&T3=-%^Nzavb!M_rw&e4T)XUWsj;2M#51Lvwko!ovLS~I_nLtvZ?#f0*q-#*-P~Tu zRCHuLTcBiel2)57C7-FTU~00E*?FRzp^Xd-K^T|bc1<^{+s5%3^A#qPOsu_Q4s%XB zk!jqV%#?5N*09AWlGAR%JY#%b-tE5hkR32}LPV_A%*m+v>`$o4$h?+NHg2)<uyapu z)X2g{LVoFF&2%h-x#(g?{r`9V_riC68xV3d5r97x3)cO-l<e5;mwy}6mlQ>pa4n8I zHn69{vxveXc6a&vK#`7$6|VRGmx6YSRX7_@#W^nx3h#S$j%jWG)%wGMvRXR140lPP z40*7<m9sPH;c}du+VKnjW#LVyH)jPZ5r%O`YZkrzt^eX+g~5rcD(>_q!K??JmC0is zP+yREr&mq)z!g4Mc=8f)wR>~f<?j}nMej5^Nn!+K#UdDp)v1aqlhjY^R|Oxp^7-t+ zMYr5zntCfz{bV{uAsC`cU2Zdml7(q^?D_|gy`Pep5P96E99Gi&GnU!&pGb;uwC4yb zB=+KM4S{dA`XJ11>a5dvDob3g)DEGI!tT|%ou<3Y5a%ub;<Bq>8I6djh!>F1Mq}=X zd_iotkzTBONqZ_FTHB2+>8Nvu9hlo66EO?F(}u?pQvsd(Zpt^sif#|pP`%(?YYoJ{ zflSQ9UANigYv5MmVUvA;KQN27Tq`?|cD%)(iFP$X9#X#=e>iecT4-$d`K_0BAmRdi T;Oyv3f~U}SlUcuqzb*Y20SU4J diff --git a/searx/translations/te/LC_MESSAGES/messages.po b/searx/translations/te/LC_MESSAGES/messages.po index 8da1506c..20df5b79 100644 --- a/searx/translations/te/LC_MESSAGES/messages.po +++ b/searx/translations/te/LC_MESSAGES/messages.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-03-08 16:40+0000\n" -"Last-Translator: Joseph Nuthalapati <njoseph@thoughtworks.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Telugu (http://www.transifex.com/asciimoo/searx/language/te/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,63 +31,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "ఫైళ్ళు" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "సాధారణ" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "సంగీతం" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "సోషల్ మీడియా" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "చిత్రాలు" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "వీడియోలు" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "ఐటి" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "వార్తలు" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "పటము" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "విజ్ఞానశాస్త్రం" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "చెల్లని అమరికలు" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "శోధనలో దోషము" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} నిమిషము(ల) క్రిందట" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "" @@ -107,29 +107,28 @@ msgstr "సాంఖ్యకశాస్త్ర ప్రమేయాలు" msgid "Compute {functions} of the arguments" msgstr "" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "ఫలితముల సంఖ్య" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "దోషములు" @@ -141,8 +140,14 @@ msgstr "" msgid "This entry has been superseded by" msgstr "" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" msgstr "" #: searx/plugins/https_rewrite.py:32 @@ -157,16 +162,6 @@ msgstr "" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "విధానం" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "ప్రస్తుతం ఉపయోగించబడుతున #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "వర్గము" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "అడ్డగించు" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "" #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "దాచు" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "నిష్క్రియాలకు అమర్చు" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "సాధారణ" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "యంత్రాలు" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "ప్లగిన్లు" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "జవాబులు" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "కుకీలు" @@ -710,88 +705,78 @@ msgstr "" msgid "Style" msgstr "శైలి" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "సత్వరమార్గం" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "ఎంచుకున్న భాష" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "కాల శ్రేణి" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "సగటు సమయం" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "గరిష్ఠ సమయం" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "పేరు" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "వర్ణన" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "ఉదాహరణలు" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "కుకీ పేరు" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "విలువ" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/tr/LC_MESSAGES/messages.mo b/searx/translations/tr/LC_MESSAGES/messages.mo index ec47020aa0239584e24b3091d8a7b154197e3577..8698157bdbf7b967abf8bc4b349130a475642671 100644 GIT binary patch delta 2554 zcmYMze@s<n9LMnkk_ajw$`7xg2L(js;sr4k4FxH6Dw>*8OXpEea0lFL_gpk;lWf(} zKU(oj-CEO;YnJ?>%;{#cQo%BRwPxCK>6|$$m#rF_)75%^+G#Pkuk$?jJkR&@e9z(h zx}DQIu4g9gwD@_MzdZi>2Wa&F&-rA_dW_)(9D<kp@eNF4eA^%2!$FK6;Rl$+U^pJY z0{j$9@CItXl$3w%u+q6GWFiamu?mxL6=vdEWR0~6Gq4@0VeP=d*og|Z2Zv#||NSR8 zknw5M`tzv3moXb}VY1ahVlHeZ2BeY-3sFrdLnW>7=cl6z)}n&dqXIcthA}L~E>ysa zsP$J+0l!BD`WdzVZ#anhRzDXy@n4vZiB!=^GEvD3u?T~x4VI${uR#@RMwVJ0@@sA7 zLml0LI_W`F!Ou}0IE&-)JM7TH1mbDqA*jN`QS(JO6ho+B)u;{XQTMM!y)zA%h1>l3 z-N>)ChmR51?a!Y;YFc0T<4Z&6e=!qRnOKeqRC^YmK_%`%EjWTIcoG%t4C(}zFocg# ztu7^<I$43be;R7O8r7*fq?EM?)!Ef)^j{lpU_!Q{7QTpy*ntZ2Dk{hu{<ssh@h()s z_fYRn7wXY;qwYVBWV6noI(r3m|4*nucU3@%?)fItXC+HV1<Lguhq|u}Rd^<9gBpK+ z0jlsy)BzfC8Ah-KPht+<@lE9BQwba}z=e`uBc9&sA5j}W^v8)zDsdKS;{cw*0xZN^ zsFy5-e|8nJQ2`gA)-A!wxB`ptHB@H~U@rBoqg<#(Uts{Rp*DDc>cHPP3R8HKSYQ>Q zI#i7cIuF&EB}fyk=WsMOqxRW>WAJVN`$MQl`WX(?|9>wRDs&e4wJ!6a4e$8=iB*h~ zc*UpSY}EH2D)=in65m1v{18>(B&q|a{qb2;z>COJu&!aM{{QcCVdDeTiAK^-wX}c_ z1)GivHW&4%R$(1(Ko#7Ny6*(4gXgdkZ=(v1;=wD(MASZ$k)~R8*r6n=xX=bosJGNZ zJ)_rAt$PRc?0Wq9Z&5GX52%9usCOfsGzyrFI*5&&$tuAGSdC$P6V;(Va_PSc-e*Ed z2hm3@%t5_OV{jGDM{V4NI!U)bK7@J~K1Mz3UepP{L>=rp>L9=RK13aKAgQ%(Sb+X3 zNq`9@9gR9krSDAt##+>~UWnRwH7ZcppZAb6SldwR-$e!L^1t7YJPqpz>cHpy`RlFz z#V@Fr>Y+bQ=9O1RvQVuqL@k_(N<I&pa4DAHF;sw?$RVvqXw|f|M7LNqZSm;FXzQjH zH-7lwkO2wi;?Ol_R@&pqVb9sn;x?H6wECo2EE+Sr)59hwBi}rov9)tpUXB}YiZ)n_ z!?o7pXoDMb;;vO6jku;MvoN{I_9D)v0&^~NjyW~lHg|^48SJ@nyTN_lX={m_jalo> z?^&bGgzRBvQFfkrA^WM+w#G)+i-)5T&)m$uk;c9&!|oQ_i?+o!y5{TLnP&FLxu$z$ zt0@jlGOGhY(;28fd^J#>P!S4-rrG5)s>-KN3RQ$csY{mxm${q69-9U02v%iRgvw_G zLlwb_DR%j^swp$f6L~rL_0issTEq6r-mXY{*q-Hu;~Sif%}%6YixZCT+nkq>Hmxj_ zYV{p@DIBpkyD@Vpf5hSN=;8#^J*L5ovlkEE9CPi4zMj*2`+CfMyE%Ej6L(sim^oI^ zW}X~7-fSPc-OL>~)odF#Hn=+4Y}G}*cE?`swD<LReLdFlXr!%ozwP}uUeSBJ$&T|; zU@D7hOlk2%v#vO77K|TdGD;|4GAh3&=CnFAMGL9KCbh2D;<mey76Oi#P++PjxGBB6 zB5o|KnF|xX89^%-I_(jskC=92?@=$#7e^=6n2Dt^bGme|i3Ll{`@u?cGq`@=qOyd4 E0R7f+VE_OC literal 12108 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 bu;Etji64%+mb-Fh<y|ue=2q{0!&dX(u)J3A diff --git a/searx/translations/tr/LC_MESSAGES/messages.po b/searx/translations/tr/LC_MESSAGES/messages.po index a15c8560..5217849e 100644 --- a/searx/translations/tr/LC_MESSAGES/messages.po +++ b/searx/translations/tr/LC_MESSAGES/messages.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-12-06 17:22+0000\n" -"Last-Translator: Arda Kılıçdağı <ardakilicdagi@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Turkish (http://www.transifex.com/asciimoo/searx/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,63 +33,63 @@ msgstr "istekte bir hata oluştu" msgid "unexpected crash" msgstr "beklenmmeyen hata" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "dosyalar" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "genel" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "müzik" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "sosyal medya" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "görseller" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "videolar" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "bilişim" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "haberler" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "harita" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "bilim" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Hatalı ayar girildi, lütfen ayarlarınızı kontrol edin" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Hatalı ayar" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "arama hatası" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} dakika() önce" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} saat(), {minutes} dakika() önce" @@ -109,29 +109,28 @@ msgstr "İstatistik fonksiyonları" msgid "Compute {functions} of the arguments" msgstr "Argümanların {functions} değerlerini hesapla" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Motor cevap süresi (sn)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Sayfa yüklenmesi (sn)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Sonuç sayısı" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Skor" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Sonuç başına skor" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Hatalar" @@ -143,8 +142,14 @@ msgstr "{title}&nbsp;(GEÇERSİZ)" msgid "This entry has been superseded by" msgstr "" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" msgstr "" #: searx/plugins/https_rewrite.py:32 @@ -159,16 +164,6 @@ msgstr "" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +326,8 @@ msgstr "Sorgu gönderim yöntemi" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +399,8 @@ msgstr "Şu anda kullanılan arama motorları" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +415,8 @@ msgstr "Türü" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,7 +434,7 @@ msgstr "Engelle" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -449,7 +444,7 @@ msgstr "Ayarlar çerezlerinizde saklanır. Verdiğiniz izinler, sizin hakkınız #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +454,7 @@ msgstr "Bu çerezler size kolaylık sağlar. Sizi takip etmek için kullanılmaz #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +462,14 @@ msgstr "kaydet" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Varsayılanları sıfırla" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +640,23 @@ msgid "General" msgstr "Genel" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Motorlar" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Eklentiler" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "" @@ -712,88 +707,78 @@ msgstr "" msgid "Style" msgstr "" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/uk/LC_MESSAGES/messages.mo b/searx/translations/uk/LC_MESSAGES/messages.mo index 6610dfaa7f53fdf5276d7bbd220a57a5c8f5adf0..91b53345679226cbdfca97556684ba71e439fc19 100644 GIT binary patch delta 3020 zcmYM$3rv+|9LMqJ0HO&3g5m|z6Cz&V;5ncmFa#7YWNM=8qN$l331zSV(V6XtmuxG^ z@n+_2UCfp>FL}g3Ga5ScmK?fR^H$TfW#lDWYFpF3zs|eG;C!Cj`#k^W|2*%}z_Rld zzRR&;8x21n@t4ToGhI~s|7TlwV|r5Ej_TTr4`CB_#a7#|Fp_#Zj>n6raY+%z%)~U* z^Ys{o>w<Nkd5c0f8n)q1+=+2Gnb{t}d6<CpI25;|COU3=29v3OgFI^Pq5=!;Va&rA zfnhid=`!gUi+LDhe8x<rpa<un0$Gf6u=c+JOpKcFDr#IOYNETS%!IKW^~Ym44zL}J znlH_E6!L4v@DYzwuq*4E=P5X`0+q7$7>b)v1Gl1fyx;C`Mg`J_(RdaW&}G!lIx!vZ zV;Z^`q(ElbE<jGlRG?1_E~OyrQ9F4JwV;KXcr$8(4^cbZiwf|d-F^s_;-grHC+vDb zOfbM=RHkO4o?D2TZ;|pJLZOC+!B~e{U>ovlcJRR_%mJ*zqo@EgnN2&$LuFzD>JF5m zGPV@8Py>#@M$|lQxCuK@cdR^?{12h<GI`U4J5d4bL&liT?Dmt$ahvau&6z9M4{xI; zj$}4Hmw<YUl2AJ=z}`5??w^aws26)-wa@NYhe~+^YDaHke|*>OKa45V+i(V6!`Yb6 zEP6{e<1{>sSs1~p%D`CE#wH+-nCYl>yr^}2izz78OHn&`74^UysLX7^3~WO;{)L(# zg*@xb(@@WOa43#O_0LBgRT*l>Rj7=tK+V54sLyPmpb563?!x=1$akV5+-29BP!qSH z7H&md+GD5<oJEcQ33XJRr~v*(jd%13*27T&MPY>A{{*{X2r9yns0j0IC)xcoPysw^ z*B7D!ufbAWj>^E-$gjC$8`amCRqQMUQ)%DDxpHmH_ZYAD|5v-=0qRo3@^z<6Gz1&4 z7&YOycpN*CO_}`+(j`2J+R;_i#JBJwhVu27f<I#tb{!Br!r@pzeKz`Zd$&^1jz7k1 zY(lkPN4*9A;3SM17+l~<)WVC9U$ce}ebs(|%3vGnNKRuNUPSGDhBNrQ57VeOI>~<) zg;p8}+T20LnmDesUb9S8AmdOImZCDT0JY#ts2y&$`@h5j>K&*Bd$MgEQ9kPXp%^t^ zIqHrqOY#LLc!h>xH0(w$xcLFKz;#@L5rcSzupYJZ6G&3b6=aBUFuN8==0h7PL1lCy z>PTKh1-b^c!B6b|(>@A{@EmG~m+X!kSmfaLq9(}WX+1a<*_^3F-Tn=z{w=86zZ>UZ z3v%B~AKqbIN;lGEp2ikjiOPg8mtH4@5>&*C@F`q^I-0Ynz`Bs0*%*(7Sd9q;=*LXz z?Zbm_K`41w2A)7IP=i`{6)ID^P)B<P$+XX0q~M|9Hfm?d+zbUW0rPM=a^cN-bmA`5 z1gB6(bRIbca}Tv(qAU1(D(Y>@LSi$Mu^ZOm81!Mg-v2Ksd`d$@dhiYuj^LcAFTzQ9 z6T@+|J9q>Im_dCWDl?5Z7<ZtK=p<_4YuE$t;}nc!m&)KQEW?8s&H82lvuVfas0VX! z98R^{8!?9ZcGLoUP&+?s`@3y-&Oy%)#SqL#1zw1HZX#-(GK|D(^r_&Zpwz#Py8U}l z1COCn+m4#}PgEe?Mh5%)p^hdQ6;Pq=T)TaR?c25oFqUxv?1fiH@~^Yr=X*40!I)9} zcMB7cwag7v<VoB_jT@WgKNYbtBw|`oiL=_fw7R_3Yt4!J#abPG)4w_<(-BhXwO)uF zZFR&RvW~_Lw0?^#^sneO(P913yTt!kd{KyhZ{Ko<mC`@cTHN0oSzA?I?X9eJE-bI` z`XBU<bY!?)?rf(gC)YDN)t%vXcYl1EtJGUpUQ=FG=_;OI>&<m$xIH;8cZMq?)9K01 z&CId#6Z>>szT~-TPiBt4Hu0Rpk?o&6;CNWycLGfvD+5h|)<APdePCb5sz9@|n85wf zgZ4T05B|~Nzn0<-jSVygnggE)4h4=d_6X$`>%#B~|FYD2hvjkQS+%bB{AK9}L#)Z3 gwf-xfqA>sXti({ODrc5;A?KELDYvgbJnvD*zxkDP2LJ#7 delta 4434 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 F`!Bk)FTnr+ diff --git a/searx/translations/uk/LC_MESSAGES/messages.po b/searx/translations/uk/LC_MESSAGES/messages.po index 7c6ac5aa..bd4b294c 100644 --- a/searx/translations/uk/LC_MESSAGES/messages.po +++ b/searx/translations/uk/LC_MESSAGES/messages.po @@ -5,14 +5,15 @@ # Translators: # pvhn4 <pvhn4@protonmail.com>, 2017 # pvhn4 <pvhn4@protonmail.com>, 2017 +# pvhn4 <pvhn4@protonmail.com>, 2017 # zubr139, 2016-2017 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2017-11-01 20:31+0000\n" -"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: zubr139\n" "Language-Team: Ukrainian (http://www.transifex.com/asciimoo/searx/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,63 +34,63 @@ msgstr "" msgid "unexpected crash" msgstr "" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "файли" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "загальні" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "музика" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "соцмережі" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "зображення" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "відео" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "новини" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "карти" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "наука" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Невірні налаштування, будь ласка, зробіть зміни в налаштуваннях" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "помилка пошуку" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} хвилин тому" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} годин, {minutes} хвилин тому" @@ -109,29 +110,28 @@ msgstr "Функції статистики" msgid "Compute {functions} of the arguments" msgstr "Розрахувати {functions} аргументів" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Час пошуку (сек)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Час завантадення (сек)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Число результатів" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Влучань" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Влучань за результат" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Помилок" @@ -143,9 +143,15 @@ msgstr "{title}&nbsp;(OBSOLETE)" msgid "This entry has been superseded by" msgstr "Цей запис був змінений" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "Переписати DOAI" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Уникайте платіжних каналів шляхом переадресації на версії публікацій з відкритим доступом, коли це можливо" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -159,16 +165,6 @@ msgstr "Нескінченна прокрутка" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Автоматично завантажувати наступну сторінку при прокрутці поточної до кінця" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Уникайте платіжних каналів шляхом переадресації на версії публікацій з відкритим доступом, коли це можливо" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +327,8 @@ msgstr "Метод" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +400,8 @@ msgstr "Пошукові системи, які використовуються #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +416,8 @@ msgstr "Категорія" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,7 +435,7 @@ msgstr "Заблокувати" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -449,7 +445,7 @@ msgstr "Налаштування зберігаються в ваших cookie- #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +455,7 @@ msgstr "Ці cookie-файли необхідні винятково для ва #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +463,14 @@ msgstr "зберегти" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Відновити стандартні налаштування" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +641,23 @@ msgid "General" msgstr "Загальні" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Пошукові системи" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Плагіни" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Відповідачі" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookie-файли" @@ -712,88 +708,78 @@ msgstr "Обрати стиль для цієї теми" msgid "Style" msgstr "Стиль" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Гарячі клавіші" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Часовий діапазон" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Середній час" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Максимальний час" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Список модулів миттєвих відповідей searx." -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Назва" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Ключові слова" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Опис" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Приклади" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Це список cookie-файлів та їх значень, які searx зберігає на вашому комп'ютері." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "По цьому списку ви можете оцінити відкритість searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Ім'я cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Значення" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/vi/LC_MESSAGES/messages.mo b/searx/translations/vi/LC_MESSAGES/messages.mo index 07dc309ea2d15d7f1eba83d43ec0d536cdb47f07..687a93d6c8cd47a53c70aaf42fbad93c1f5e5b74 100644 GIT binary patch delta 3116 zcmYM#3rv+|9LMqJsCeNb9^|52<baBZ9620G0`od;S`$ReWa<pV^k~Qkys#Xn8uPMw zOLV%?W|o#L)3uY=a#&QPp{{1yD$Q1btc!}(ywUpp_C8zea6ZrTyyyKt|L6Za?>YCD ztzQzn7Sn5&;qN&A$^2gmQ}6%3%@M}9>25(?+Kc`00QSKn*5epSzZs`t8|rg03_gX) zsQat1Kdy25L9?DlUj{bg0o;WHaa@!!X;_R&ScRFm1r_L+^&=cc{}W_R(}7Ct4yND( z?1h7wH3o;^0L;Y*6EtQD4JA;73-KBIfupEEpQ8d_KyowRp(@g0uiwK|`mShWJeY>P zaf)>YD*h~MDRPThjPcBGs%U7Ujp)JcsM5WUJ@G?~$7a;ZFWc)spb~3GUZ#sTCD?=I zX{FJqm8SDH8pmKZE=DD^4TEazp%ISzP!k`r9z!K|1~u^)s0l8h?)x6K(qB-C{$|H- zqDp=jS7SG_3#Nv$Y5Y}u5jVK0zcRnifJz!p+6t76n!tlSa3l`LY}ACak(j0wRm$a9 ziM5!Iov6gqI7nL9NK~crP~($OXJ-09>aWsPFrbO+F$XuI0-wO$*owT&qF7@_U^Oam zBPyY{Q44s_jyI#1{yEgj@1hpkJC1{h@u>K|APohWhzjsH>M@*$s=zAbW$Jj-=XRpD zpb?2_4%+e4s4e;wwbFB#h?nj4+n7QBF3!PJRy`ks)im^&UBqI%jbm|gf>V*TsFkim zRbT^BUDJqK!C}<Ir%@BPptj~BD&gy>`#VsT>q0*!4r2ApZ)Va^fI8ISs7Kwn2{UoK zy?zq4cg?5@w4y3>2{pl0>kZWXcTi{NK5A>bQ3<-Jzxq)arsv;HLlY;UPJc3L&oWRe z$wS>Z&5oC#5?O@WvZbi|YwdU)D#7)r`x<P2FDl_fsDzJ7J^yFy2fjpA;#*WA*H9DP zu-9*)66!{+us<6-8{<%wT832Dyk>2}W|uJ^Bin9X;b1B5ZloAy9|pCDr)cOfoke}{ z8qUJMPywg$J-PuGq9*<o72tQ&%EN{@D+<SU`f<o5^ALw(Vybh-Cg3>w&!XbIo=W{y zinkaTjfYVsyK3#kZ2EtrGEet7fwPe!m?uyrEl0(vz#?3W`psxXRrF`nLOM~Ea&h7_ zFe@$STqt3nkbwXy!~LiXucHEYpw2`WYUL)~snlRpKL@qv(@_g~8uh%_qYm3nR6=`D z@jgJsYYx)TAv%wGtbRmQpbM4pzo=5iQ%5D3hXq)PnxF|4=%nqpTCbqubfC`A9n{%* zfZFoNVa@`ANi;N&i#>4?Y9&*#7na~DoQr%l8250eGMU&$KL?fQL)4bUQr9pXjrzXG zv;FC)#EVe#Y;>*%&1M=Z;T!l8p2SJ`$OtF!YE<B@sFfZ>Rq7b>GG}>XZgU$oaRM8x zN~NIU&ciOO!jV|c+j!iHv3ma7XlTVhA=NQ|qDmW+Wy}OjN3Em`wbE6niMQDPQS43s zJZg_GAqU^wLTy3xDChnp45y!iN~{p$nBUByp)Ckt1g=G`v>u6JcA!>v8kJxR)?f$j zzy;aP%5LH+`h&er;@eQAzJPkXzeW#speopxlNwB<kwin8jl~F@j4Js|)EQWcs?ZCV zi?vvS@8W#yMpdjd$B7d_^=pu0W9qR#HlgC2z-as|hx+SOeq#sPu^;_^P>JXlLJ35o zR^mow9*4S~iAp>Vb>BqP(=@|6ANBbPjKY^uUvOJd_wD!D=l=);nyA%YXhQ|MV(qj( zKn0AV47%>YKIq2*SZI9`wc-V+&#yo?)>*fs=6f@ZhEDxE$ab2ce&=_)7<HJI`$Oj< z{s?Pmcb^J<6;tX8t&82($M5s{@;$i)g}IN8^7(zf@L9#)*-KUjssoiPy;I9-mK1vY zzT5(@&+qk*@#N+gjwxsupPZ0VRN2y05%A1y*|)Mb;CZY%P_ww~xfNwA%h!|zY8swT g?snye%2OKqHVn#)3{A<%a)p{lTy%v7WCg<i17#jdH2?qr delta 3469 zcmaLYdu)_d8prX|aw}~qwAC(9)FaXhl%X>Nv9+S2uo@LC)JCJAIBiEdGEB?NwAdxP zBOqRbx)OqlQN$?T5bNM=s#a1(G*z2jHxV?tLl<vh7ZF8?lJ57%oXy66Y)U`pGVeLh z^PKYzw*`;4CO$73zRB>@!@o)V`(cE7|NrUFGp3O42dJqpa5NsoQFz$-6Xw$&!arg@ z9eu6=8*vHh`ED%0S2F#C*+V0Tfqr}f|AEE0dW<n=;=Ndk-B^hqpcXpj{1vCr&t_Hj zHWjGAX5wjhE)K_Qun4cmakvumOv0G8G!(!+cpYwbANUcq(8#fwg$t0_%tTa0Dp2$1 z;2C%!S`6SwT<g3Owf=q12a%=CHY{O((@jGQ?L~_NsL~z5VfYJ{;1DYF62jN~Bvi)b z$dvJ;0=x*7X+835n)ovVV>lhRp#u5{6KZ@yBNx-Cg%3H8p#oF7+BgTbK>_NyQdFi> zP=Qvt@oH4bYq1m0Lj|x4IW05j=8qIo|0n~;7*GZw!lr4uPz&CT+UQ=)#s_dbZoxm` zE-b@-R3P6YF`MJ466bP}+HeBa;GL+1cB2x0ubBF)gde+!f1)na*Qk<@IVBUw6kJ5V z607k~s12UM&G;Jfh*@+h_X2~c4K|<xdjOT#qi(z#J@j8s&`?RfMOENuoPas(t_>!m z7Vx1Ks71Y|m!T@N40*(~qds>V>WDTVF`0+l_)gRjzKlxvb)1Naz3u~pSkAz=cqJB6 z-^Cb2y@tE79tZJkoXI)ph;Bk<8bMW{3#q=@fJ$I1YU7=#jbB0?(QYK*g!vl{EwB$& zx__Y`^C^QDFF-BOj=EHxs7zO5C9ZYz&!Wz@8&!eVP!-yPTK^;Ge$?{^F<bBdAsWi$ zFe<{Mu0Mp@co=ok#-mYhM*-@{#-lPRM?F{L#^<5}S%f;WYf#TGcjN7-0B^=Tz5nao zz+X`jKZ1&QyYodi{{||c_fdfipf=j?<`19(I*iItUz-gu3RS6Vk<&BloLexlE6bQ9 z4PByEzAv@#UyxHUcc9MjG1O&x0rk0ea3Ow*T5$U5#@vqcP#gE7p8q>4^FyeFj^LO0 zEAprrJcIh5MI*~*E?F6#YmB)Bwa_}$gLmN!+=MFi+s*-;PX9Ah;G?;zTDTZFJ>x@F z^m5cXjd%qvMRGRJpGo~smXrZyGJq=8*I15)lQZMBSVw;$D!{u@0lte`_(Rm4*oVse zD^#VFo%$uHGp|M^G8^@}FHg`IMq@Q9BK5W47Sw`IqAt-c)N8c|Re^n|fDfWFK7k6b zbPE3=;Z>*&?nAA!)%BluzKL2V@ga?qmk4!v4xrBbC@O>OvP^$G4x?Xz%A^X1V=boe zJk<BX&&XGZsiu6Y(8bt~3s3=1tjHXVA4ll@pHD+y91WQPb0bcpA4Y!7X8tInUQ__b zQJ+77Ds3U>wHl}49DEYB(O0NDFodeWgsGVdRv?d>IxN%s-$a8*%pJG}??IJv98qY4 z%kg_`L8i>rRb-26P;W&qsv;jFr(n{k(vO&K%=vgKD&R&`V6CVCZc$(F|5G$ns<%*g z;9cYmF@u<g*`CY-1(-{JGAb|+>WD5z9oZ7p=a=IcT!qAJ)}s=90TtlO7{~pXxSvKn zS5lcBzz)o>&P2WzRr1}aOy5C^`%#zi7o3O%-b`RqQ31?Cm3|KDj$DiRxD<UD#zpvu zm-;WJ@f`zWaXz!ka0#lv47rD96)MArQ42lm=3m8e^!K{{J{(Q|8&n`iQ2`905*hB# z1fGMMFZEM@ZCJs89`s`&&URjbMf7jLF&IOYd=2Wk&8RcohT16Q#(Pogyzl(X`5!D| z+|10(7YAsJqF;u}#N#|4m2o}lf$LEVu5_+LZMX?_`yaw8ESZ%#l8aDx>AG3TyYl`$ zVp^an7LNv+<2DqtfzCiE9B2v$?Tu|w8*gQ(y`w1{Y7WFhZIO-9!rrP2o125Nn4MRD zsf`9>ZQ;&f)YP{JBlb5FtD>QJFj-Z!G;3r_C>m^zZ#*ZzrpQ*dhdY*qB0RaWgW;B` z$=i$XAGO%$@%pUaS2xpF<@I^JxeMz(4Z+S(j6FT`0`Xv-^?QA_9<SfyueH9KI)6=- zm!I7Efmqzr7!5>X;Xu4CT4!5YYW%)gKA)Zazt+Y?>4~hflYgGHC1*x+U(z<EQ;$b% zyf3-J#?z^taU1E|+Gd+u+iW`ZM8vkYrc+O^&|p_`Y}o}_4UN&h=OV54=5)^v8}57K zWZsR@jxIYlo!ZfE7lhJ1>mznyYu^rYRVbb6joWZK^;qb4K9^ijK9H3)cjK+6-C%8H lSKl)owmF^J-f?p8?Gd{o-Seo8rh6WYESs8~RC!bGe*sG!#()3- diff --git a/searx/translations/vi/LC_MESSAGES/messages.po b/searx/translations/vi/LC_MESSAGES/messages.po index d8a1a0c9..4ad30d0b 100644 --- a/searx/translations/vi/LC_MESSAGES/messages.po +++ b/searx/translations/vi/LC_MESSAGES/messages.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-02-28 17:27+0000\n" -"Last-Translator: dd721411 <dd721411@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-02-23 17:39+0000\n" +"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n" "Language-Team: Vietnamese (http://www.transifex.com/asciimoo/searx/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,63 +31,63 @@ msgstr "ngoại lệ yêu cầu" msgid "unexpected crash" msgstr "lỗi bất ngờ" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "các tập tin" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "tổng quát" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "âm nhạc" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "mạng xã hội" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "hình ảnh" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "phim" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "CNTT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "tin tức" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "bản đồ" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "khoa học" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "Cài đặt không hợp lệ, xin xem lại tuỳ chỉnh" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "Cài đặt không hợp lệ" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "lỗi tìm kiếm" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} phút() trước" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} giờ(), {minutes} phút() trước" @@ -107,29 +107,28 @@ msgstr "Các hàm thống kê" msgid "Compute {functions} of the arguments" msgstr "Tính toán {functions} của các đối số" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "Thời gian trình tìm kiếm (giây)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "Tải trang (giây)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "Số lượng kết quả" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "Điểm số" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "Điểm số cho từng kết quả" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "Các lỗi" @@ -141,9 +140,15 @@ msgstr "{title}&nbsp;(LỖI THỜI)" msgid "This entry has been superseded by" msgstr "Mục này đã được thay thế bởi" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "Không có bản tóm tắt nào cho ấn phẩm này." +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "Tránh việc trả phí bằng cách chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -157,16 +162,6 @@ msgstr "Cuộn liên tục" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "Tự động tải trang kế tiếp khi cuộn đến cuối trang hiện tại" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "Viết lại DOI Truy Cập Miễn Phí" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "Tránh việc trả phí bằng cách chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -329,8 +324,8 @@ msgstr "Phương pháp" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -402,8 +397,8 @@ msgstr "Các trình tìm kiếm đang được dùng" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -418,8 +413,8 @@ msgstr "Danh mục" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -437,7 +432,7 @@ msgstr "Chặn" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -447,7 +442,7 @@ msgstr "Những cài đặt này được lưu trữ trong các cookie, điều #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -457,7 +452,7 @@ msgstr "Những cookie này chỉ phục vụ cho chính bạn, chúng tôi khô #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -465,14 +460,14 @@ msgstr "lưu" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "Đưa về mặc định" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -643,23 +638,23 @@ msgid "General" msgstr "Tổng quát" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "Các trình tìm kiếm" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "Các phần mở rộng" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "Trình trả lời nhanh" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Các cookie" @@ -710,88 +705,78 @@ msgstr "Chọn phong cách cho nền này" msgid "Style" msgstr "Phong cách" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "Trình xử lý DOI Truy Cập Miễn Phí" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "Chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể (yêu cầu phần mở rộng)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "Lối tắt" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "Ngôn ngữ được chọn" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "Khoảng thời gian" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "Thời gian trung bình" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "Thời gian tối đa" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "Đây là danh sách các module trả lời nhanh của searx" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "Tên" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "Các từ khoá" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "Mô tả" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "Các ví dụ" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "Đây là danh sách các cookie và giá trị của chúng mà searx đang lưu trữ trên máy tính của bạn." -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "Với danh sách này, bạn có thể đánh giá tính minh bạch của searx." -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Tên cookie" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "Giá trị" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "URL tìm kiếm của tuỳ chỉnh được lưu hiện tại" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/zh_CN/LC_MESSAGES/messages.mo b/searx/translations/zh_CN/LC_MESSAGES/messages.mo index b98af0547b5ee9c52621fed489e52878207436d0..081fc8818ea739d3860b38a4c338dc7556c97bee 100644 GIT binary patch delta 3206 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 F{RaWIXR-hQ delta 3654 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 diff --git a/searx/translations/zh_CN/LC_MESSAGES/messages.po b/searx/translations/zh_CN/LC_MESSAGES/messages.po index d71288ce..c37c6511 100644 --- a/searx/translations/zh_CN/LC_MESSAGES/messages.po +++ b/searx/translations/zh_CN/LC_MESSAGES/messages.po @@ -4,7 +4,9 @@ # # Translators: # Crystal RainSlide, 2018 +# Jsthon, 2019 # Mingye Wang <arthur200126@gmail.com>, 2018 +# Noémi Ványi <sitbackandwait@gmail.com>, 2019 # Sion Kazama, 2018 # wenke, 2015 # wenke, 2015-2018 @@ -12,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-12-10 08:32+0000\n" -"Last-Translator: Crystal RainSlide\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-03-23 07:45+0000\n" +"Last-Translator: Jsthon\n" "Language-Team: Chinese (China) (http://www.transifex.com/asciimoo/searx/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,63 +37,63 @@ msgstr "请求异常" msgid "unexpected crash" msgstr "意外崩溃" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "文件" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "全部" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "音乐" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" -msgstr "社交媒体" +msgstr "社交" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "图片" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "视频" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" -msgstr "IT" +msgstr "技术" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "新闻" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "地图" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "学术" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "设置无效,请编辑您的首选项" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "设置无效" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "搜索错误" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} 分钟前" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} 小时 {minutes} 分钟前" @@ -111,29 +113,28 @@ msgstr "统计功能" msgid "Compute {functions} of the arguments" msgstr "计算 {functions} 参数" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "搜索引擎时间(秒)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "页面加载(秒)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "结果数" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "得分" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "每个结果的分数" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "错误" @@ -145,9 +146,15 @@ msgstr "{title}&nbsp;(过时)" msgid "This entry has been superseded by" msgstr "此条目已被取代" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "本出版物没有摘要。" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI改写" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "尽量重定向到开放访问的文章以避免付费墙(如果可用)" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -161,16 +168,6 @@ msgstr "无限滚动" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "滚动到当前页面底部时自动加载下一页" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "开放访问 DOI 重定向" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "尽量重定向到开放访问的文章以避免付费墙(如果可用)" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -333,8 +330,8 @@ msgstr "方法" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -406,8 +403,8 @@ msgstr "目前使用的搜索引擎" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -422,8 +419,8 @@ msgstr "类别" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -441,7 +438,7 @@ msgstr "阻止" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -451,7 +448,7 @@ msgstr "这些设置被存储在您的 cookie 中,这种保存设置的方式 #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -461,7 +458,7 @@ msgstr "这些 Cookie 信息可辅助您便捷地使用服务,我们不会利 #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -469,14 +466,14 @@ msgstr "保存" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "恢复默认" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -647,23 +644,23 @@ msgid "General" msgstr "常规" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "搜索引擎" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "插件" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "智能答复" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -692,7 +689,7 @@ msgid "" "Change how forms are submited, <a " "href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" " rel=\"external\">learn more about request methods</a>" -msgstr "更改提交表单时使用的请求方法,<a href=\"https://zh.wikipedia.org/wiki/%%E8%%B6%%85%%E6%%96%%87%%E6%%9C%%AC%%E4%%BC%%A0%%E8%%BE%%93%%E5%%8D%%8F%%E8%%AE%%AE#%%E8%%AF%%B7%%E6%%B1%%82%%E6%%96%%B9%%E6%%B3%%95\" rel=\"external\">深入了解请求方法</a>" +msgstr "更改提交表单时使用的请求方法,<a href=\"https://zh.wikipedia.org/wiki/超文本传输协议#请求方法\" rel=\"external\">深入了解请求方法</a>" #: searx/templates/oscar/preferences.html:87 #: searx/templates/simple/preferences.html:71 @@ -714,88 +711,78 @@ msgstr "选择此主题的样式" msgid "Style" msgstr "样式" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "开放访问 DOI 解析器" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "尽可能重定向到出版物的开放访问版本(需要插件)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "快捷键" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "选择语言" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "时间范围" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "平均时间" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "最大时间" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "这是 searx 的即时回答模块列表。" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "名称" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "关键词" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "描述" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "示例" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "此列表展示了 searx 在您设备上存储的 cookie 信息。" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "您可以基于此表格来评估 searx 的透明度。" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookie 名称" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "值" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "当前保存选项的搜索链接" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." diff --git a/searx/translations/zh_Hant_TW/LC_MESSAGES/messages.mo b/searx/translations/zh_Hant_TW/LC_MESSAGES/messages.mo index 0b2a3c921c5ff7748bf777c45b2ed40178eadc1a..54e063875453048f83430c6e70334b43d22dba73 100644 GIT binary patch delta 14 VcmaDB^(<;bp)8~M<|5fI`~Wn820Q=& delta 14 VcmaDB^(<;bp)8}><|5fI`~Wn220H)% diff --git a/searx/translations/zh_TW/LC_MESSAGES/messages.mo b/searx/translations/zh_TW/LC_MESSAGES/messages.mo index b6d43e2a89bb24fc1c4ccbdb0134f675a055ba92..ee24c1e77b5281e63a4bc016d71e054228657044 100644 GIT binary patch delta 3189 zcmYM#3ryBk7{~F0AYM>F6d@FO18>~y1uuw&=`_n+UNiH8*U+I89V)tId!@<P+`J-` zfJ;*{^MdxOk$EeZPSi48&K$ZLij>Y(=Cq5g@6Y$yV#w#5^FQY~&$;~nUYk-m$#*j< zq}=gS$G@)pYiOz3|3B4X&UK)=74@hV+u&hrg(uCk*pB+Q_!2gt`X$o%I;Nq<7h^b< z2I@XnL7_Db)mVcy*bzsyckWr7fnBf|d*fDApflzL>`whMGN*flN-UUJ;xP<EFc}H$ z`d}13kCD#j+-M3KI0Kc)0?fswPdgA86|fQ2?=C9PBh=1>L<F99#suo!(1U|96la)o zQSld=MHtTf&PSm$u0u^!gC5+6+QM%z7_XuFHK2Cjfj$2dl~{13a}-?!D!~NQO4E>E z_acA#;8;vUANrKhUJCLsw#5^uiO-o=P>J0@O?(?Q!Cln2$EcMCu^mdZHLATGYU`u1 z2;-2`aT~4ugAVL}Aq_ieQ06hDOVRa01<FPR%E1;m0(;;{)P#$Wxm^)*8m<%<VFhMk zC>KeI4@NC)1Zt<oS$l3r_FtDLj|Oe+8q~zw@j0wP1^yo2!&}I&TiJ;uaRVxF9V(&I zs0GwpdjqCZzk^zNbaY^$N%#!)zCH??;5Af$X{Z2mP_N@M)DCPyeq9xR)bAkb2<nj7 z?rUqmjyj^BP%FKIarnTVhqKC_)T40%`d*+gmBI$p>vj*vV0esk18_QON6Jwv-GbVI zoyab`I@AKrqb9zNn)pZ5(cD8N`~)>VBsQ>f5tzyRE{lSf2lG(@s!*3^J8IxZ*c<oR z^Q)*cZ9wh7Ez}PEhMM3nvnBhh@sX&z6N6ev94f(XPwSk23I$Ev2Q_g&)a}nko!Kzd zO2(lE&bIafR3a-;N46R@zQWq8PzmlpjXPlVW2l7BVOzcbmsP+U)}a}d&_h%rf1@U9 z$w4Y$dsISks1>H-c+5oYR0*=%Zohd34+lAS6E%J_7fa)|qfdp8t)Ujx;fQ$}v#DRQ zdRxAyqo~KA#?3+Qm79-Bbd|NQ!Aj~IQFkS+TcF<%)TjIn)Lkp=#`!DIW*TG_vRL;a zYU_`oR$h-9cp262K59!Jq7n{D2pEof-UXFVBI<jPX3wjweYe&93BJI<Q#5EL7f}Hk zk$dERK}{U&2?R_)Jx?~hs06ai;pRA0zv-y)d8mHHs7tsGdC}Y^9|d*Xjmr1{Dv_h8 z0hdtiH>`dKBdGs@`mltskG(Jx)o+UV7HWKf)!#Nt%=M^weOoB#J>G^I;I{{-P??^! z`g!v*zC-&Ds6-|u2Kvpz<<u9T;xwASq9%HRN-!iTP!Goxz5mhHFa)*omr;RpaRx5L zEWC&c+_HPXC^G>yK^k&et}iOi1Z&U7Wa^7i3$4U*+=sEu?}qhwnu(i+nxGUFa5E}U zm9-y4O>n~MH_f}Kz>lpS)-$luSX6r=Do%fEABDPG6IEw^S3p4%uP{q6l=>!fi@6OI zXcwygaa5psoQaJ%7l(5p)Nc=t#4j-w!}vG^V-{-s^XSuu;uQ+o@|oshRL51Qj;m2$ zxQ!T!J5Xo&333hGA<V(6sP9E5_FMf%n-fv}ry-~4=34ujWPATN(x8dnH*3sK&6B8r z7qA6hK_z(Ao?o};cg*|dLu^C8f6P#BoaTu%<5Spwbx5H>_Ol0rQ4@|b$6NbkbFR6> zTxG5`E6rV~IETzH%&$=YYo5!Xpi6Si9^A!A)PG0b822g%r%&iY)L9p&`s>5WTZD}n zI?_{^x4bZaX`Vkfd`fUxQ-`De@1iCL`B!#Y-zw9a?#=RKWDm+1nCi{+dfSd2lRiGL zD1S-*qJs3{vzF!!@??55vgwqbInd+nKd9e;vYf859cC5I@eG~4s9;W>XF}e*W%&hV zE4uz0l;vL@pA(eWe59nQqO_@c@2z9onopG7Uc0_||Nf-r+RvH}zS~ssd6U1~ADa*w j6gFJB{am{CcI_U2yywl}vdu}y{j0lA4f6NtnbPV%c^h09 delta 3538 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 diff --git a/searx/translations/zh_TW/LC_MESSAGES/messages.po b/searx/translations/zh_TW/LC_MESSAGES/messages.po index 93adf449..d09317ab 100644 --- a/searx/translations/zh_TW/LC_MESSAGES/messages.po +++ b/searx/translations/zh_TW/LC_MESSAGES/messages.po @@ -4,15 +4,16 @@ # # Translators: # FIRST AUTHOR <EMAIL@ADDRESS>, 2016 -# Jeff Huang <s8321414@gmail.com>, 2017 +# 黃柏諺 <s8321414@gmail.com>, 2017,2019 +# Marc Abonce Seguin, 2019 # Mingye Wang <arthur200126@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: searx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2017-11-01 21:31+0100\n" -"PO-Revision-Date: 2018-09-16 00:29+0000\n" -"Last-Translator: Mingye Wang <arthur200126@gmail.com>\n" +"POT-Creation-Date: 2017-10-07 19:18+0200\n" +"PO-Revision-Date: 2019-07-28 05:46+0000\n" +"Last-Translator: Marc Abonce Seguin\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/asciimoo/searx/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,63 +34,63 @@ msgstr "請求例外" msgid "unexpected crash" msgstr "未預期的當機" -#: searx/webapp.py:136 +#: searx/webapp.py:135 msgid "files" msgstr "檔案" -#: searx/webapp.py:137 +#: searx/webapp.py:136 msgid "general" msgstr "一般" -#: searx/webapp.py:138 +#: searx/webapp.py:137 msgid "music" msgstr "音樂" -#: searx/webapp.py:139 +#: searx/webapp.py:138 msgid "social media" msgstr "社群媒體" -#: searx/webapp.py:140 +#: searx/webapp.py:139 msgid "images" msgstr "圖片" -#: searx/webapp.py:141 +#: searx/webapp.py:140 msgid "videos" msgstr "影片" -#: searx/webapp.py:142 +#: searx/webapp.py:141 msgid "it" msgstr "IT" -#: searx/webapp.py:143 +#: searx/webapp.py:142 msgid "news" msgstr "新聞" -#: searx/webapp.py:144 +#: searx/webapp.py:143 msgid "map" msgstr "地圖" -#: searx/webapp.py:145 +#: searx/webapp.py:144 msgid "science" msgstr "科學" -#: searx/webapp.py:399 searx/webapp.py:658 +#: searx/webapp.py:398 searx/webapp.py:653 msgid "Invalid settings, please edit your preferences" msgstr "無效的設定,請編輯您的偏好設定" -#: searx/webapp.py:415 +#: searx/webapp.py:410 msgid "Invalid settings" msgstr "無效的設定" -#: searx/webapp.py:449 searx/webapp.py:493 +#: searx/webapp.py:444 searx/webapp.py:488 msgid "search error" msgstr "搜尋錯誤" -#: searx/webapp.py:530 +#: searx/webapp.py:525 msgid "{minutes} minute(s) ago" msgstr "{minutes} 分鐘前" -#: searx/webapp.py:532 +#: searx/webapp.py:527 msgid "{hours} hour(s), {minutes} minute(s) ago" msgstr "{hours} 小時 {minutes} 分鐘前" @@ -109,29 +110,28 @@ msgstr "統計功能" msgid "Compute {functions} of the arguments" msgstr "計算 {functions} 參數" -#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201 +#: searx/engines/__init__.py:194 msgid "Engine time (sec)" msgstr "引擎時間(秒)" -#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205 +#: searx/engines/__init__.py:198 msgid "Page loads (sec)" msgstr "頁面載入(秒)" -#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209 -#: searx/templates/oscar/results.html:95 +#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95 #: searx/templates/simple/results.html:20 msgid "Number of results" msgstr "結果筆數" -#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213 +#: searx/engines/__init__.py:206 msgid "Scores" msgstr "分數" -#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217 +#: searx/engines/__init__.py:210 msgid "Scores per result" msgstr "每個結果的分數" -#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221 +#: searx/engines/__init__.py:214 msgid "Errors" msgstr "錯誤" @@ -143,9 +143,15 @@ msgstr "{title}&nbsp;(已過時)" msgid "This entry has been superseded by" msgstr "此條目已被取代" -#: searx/engines/pubmed.py:74 -msgid "No abstract is available for this publication." -msgstr "此出版品無可用摘要。" +#: searx/plugins/doai_rewrite.py:7 +msgid "DOAI rewrite" +msgstr "DOAI 重寫" + +#: searx/plugins/doai_rewrite.py:8 +msgid "" +"Avoid paywalls by redirecting to open-access versions of publications when " +"available" +msgstr "盡可能重新導向至出版品的開放存取版本,來避免付費牆" #: searx/plugins/https_rewrite.py:32 msgid "Rewrite HTTP links to HTTPS if possible" @@ -159,16 +165,6 @@ msgstr "無限捲動" msgid "Automatically load next page when scrolling to bottom of current page" msgstr "當捲動至目前頁面的底部時自動載入下一頁" -#: searx/plugins/oa_doi_rewrite.py:9 -msgid "Open Access DOI rewrite" -msgstr "開放存取 DOI 重寫" - -#: searx/plugins/oa_doi_rewrite.py:10 -msgid "" -"Avoid paywalls by redirecting to open-access versions of publications when " -"available" -msgstr "盡可能重新導向至出版品的開放存取版本,來避免付費牆" - #: searx/plugins/open_results_on_new_tab.py:18 #: searx/templates/oscar/preferences.html:114 #: searx/templates/simple/preferences.html:149 @@ -331,8 +327,8 @@ msgstr "方法" #: searx/templates/courgette/preferences.html:63 #: searx/templates/legacy/preferences.html:64 #: searx/templates/oscar/preferences.html:86 -#: searx/templates/oscar/preferences.html:165 -#: searx/templates/oscar/preferences.html:173 +#: searx/templates/oscar/preferences.html:153 +#: searx/templates/oscar/preferences.html:161 #: searx/templates/simple/preferences.html:63 #: searx/templates/simple/preferences.html:90 msgid "SafeSearch" @@ -404,8 +400,8 @@ msgstr "目前使用的搜尋引擎" #: searx/templates/courgette/preferences.html:100 #: searx/templates/legacy/preferences.html:97 -#: searx/templates/oscar/preferences.html:162 -#: searx/templates/oscar/preferences.html:176 +#: searx/templates/oscar/preferences.html:150 +#: searx/templates/oscar/preferences.html:164 #: searx/templates/pix-art/preferences.html:53 #: searx/templates/simple/preferences.html:87 msgid "Engine name" @@ -420,8 +416,8 @@ msgstr "分類" #: searx/templates/courgette/preferences.html:113 #: searx/templates/legacy/preferences.html:99 #: searx/templates/legacy/preferences.html:110 -#: searx/templates/oscar/preferences.html:161 -#: searx/templates/oscar/preferences.html:177 +#: searx/templates/oscar/preferences.html:149 +#: searx/templates/oscar/preferences.html:165 #: searx/templates/pix-art/preferences.html:54 #: searx/templates/pix-art/preferences.html:64 #: searx/templates/simple/preferences.html:86 @@ -439,7 +435,7 @@ msgstr "封鎖" #: searx/templates/courgette/preferences.html:122 #: searx/templates/legacy/preferences.html:119 -#: searx/templates/oscar/preferences.html:297 +#: searx/templates/oscar/preferences.html:285 #: searx/templates/pix-art/preferences.html:73 #: searx/templates/simple/preferences.html:180 msgid "" @@ -449,7 +445,7 @@ msgstr "這些設定只會儲存在您的 cookies 中,這樣我們無需也不 #: searx/templates/courgette/preferences.html:124 #: searx/templates/legacy/preferences.html:121 -#: searx/templates/oscar/preferences.html:299 +#: searx/templates/oscar/preferences.html:287 #: searx/templates/pix-art/preferences.html:75 #: searx/templates/simple/preferences.html:182 msgid "" @@ -459,7 +455,7 @@ msgstr "這些 cookies 僅做為提供您方便之用,我們不會使用這些 #: searx/templates/courgette/preferences.html:127 #: searx/templates/legacy/preferences.html:124 -#: searx/templates/oscar/preferences.html:305 +#: searx/templates/oscar/preferences.html:293 #: searx/templates/pix-art/preferences.html:78 #: searx/templates/simple/preferences.html:185 msgid "save" @@ -467,14 +463,14 @@ msgstr "儲存" #: searx/templates/courgette/preferences.html:128 #: searx/templates/legacy/preferences.html:125 -#: searx/templates/oscar/preferences.html:307 +#: searx/templates/oscar/preferences.html:295 #: searx/templates/simple/preferences.html:186 msgid "Reset defaults" msgstr "重設為預設值" #: searx/templates/courgette/preferences.html:129 #: searx/templates/legacy/preferences.html:126 -#: searx/templates/oscar/preferences.html:306 +#: searx/templates/oscar/preferences.html:294 #: searx/templates/pix-art/preferences.html:79 #: searx/templates/simple/preferences.html:187 msgid "back" @@ -645,23 +641,23 @@ msgid "General" msgstr "一般" #: searx/templates/oscar/preferences.html:14 -#: searx/templates/oscar/preferences.html:146 +#: searx/templates/oscar/preferences.html:134 #: searx/templates/simple/preferences.html:76 msgid "Engines" msgstr "引擎" #: searx/templates/oscar/preferences.html:15 -#: searx/templates/oscar/preferences.html:219 +#: searx/templates/oscar/preferences.html:207 msgid "Plugins" msgstr "外掛程式" #: searx/templates/oscar/preferences.html:16 -#: searx/templates/oscar/preferences.html:245 +#: searx/templates/oscar/preferences.html:233 msgid "Answerers" msgstr "答案" #: searx/templates/oscar/preferences.html:17 -#: searx/templates/oscar/preferences.html:272 +#: searx/templates/oscar/preferences.html:260 msgid "Cookies" msgstr "Cookies" @@ -690,7 +686,7 @@ msgid "" "Change how forms are submited, <a " "href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\"" " rel=\"external\">learn more about request methods</a>" -msgstr "變更遞交形式,<a href=\"https://zh.wikipedia.org/wiki/%%E8%%B6%%85%%E6%%96%%87%%E6%%9C%%AC%%E4%%BC%%A0%%E8%%BE%%93%%E5%%8D%%8F%%E8%%AE%%AE#%%E8%%AF%%B7%%E6%%B1%%82%%E6%%96%%B9%%E6%%B3%%95\" rel=\"external\">看看更多關於請求方法的介紹</a>" +msgstr "變更遞交形式,<a href=\"https://zh.wikipedia.org/wiki/超文本传输协议#请求方法\" rel=\"external\">看看更多關於請求方法的介紹</a>" #: searx/templates/oscar/preferences.html:87 #: searx/templates/simple/preferences.html:71 @@ -712,88 +708,78 @@ msgstr "選擇這個主題的樣式" msgid "Style" msgstr "樣式" -#: searx/templates/oscar/preferences.html:122 -msgid "Open Access DOI resolver" -msgstr "開放存取 DOI 解析器" - -#: searx/templates/oscar/preferences.html:123 -msgid "" -"Redirect to open-access versions of publications when available (plugin " -"required)" -msgstr "盡可能重新導向至出版品的開放存取版本(需要外掛程式)" - +#: searx/templates/oscar/preferences.html:151 #: searx/templates/oscar/preferences.html:163 -#: searx/templates/oscar/preferences.html:175 #: searx/templates/simple/preferences.html:88 msgid "Shortcut" msgstr "快捷鍵" -#: searx/templates/oscar/preferences.html:164 -#: searx/templates/oscar/preferences.html:174 +#: searx/templates/oscar/preferences.html:152 +#: searx/templates/oscar/preferences.html:162 msgid "Selected language" msgstr "已選取的語言" -#: searx/templates/oscar/preferences.html:166 -#: searx/templates/oscar/preferences.html:172 +#: searx/templates/oscar/preferences.html:154 +#: searx/templates/oscar/preferences.html:160 #: searx/templates/simple/preferences.html:91 msgid "Time range" msgstr "時間範圍" -#: searx/templates/oscar/preferences.html:167 -#: searx/templates/oscar/preferences.html:171 +#: searx/templates/oscar/preferences.html:155 +#: searx/templates/oscar/preferences.html:159 #: searx/templates/simple/preferences.html:92 msgid "Avg. time" msgstr "平均時間" -#: searx/templates/oscar/preferences.html:168 -#: searx/templates/oscar/preferences.html:170 +#: searx/templates/oscar/preferences.html:156 +#: searx/templates/oscar/preferences.html:158 #: searx/templates/simple/preferences.html:93 msgid "Max time" msgstr "最大時間" -#: searx/templates/oscar/preferences.html:248 +#: searx/templates/oscar/preferences.html:236 msgid "This is the list of searx's instant answering modules." msgstr "這是 searx 的即時回覆模組清單。" -#: searx/templates/oscar/preferences.html:252 +#: searx/templates/oscar/preferences.html:240 msgid "Name" msgstr "名稱" -#: searx/templates/oscar/preferences.html:253 +#: searx/templates/oscar/preferences.html:241 msgid "Keywords" msgstr "關鍵字" -#: searx/templates/oscar/preferences.html:254 +#: searx/templates/oscar/preferences.html:242 msgid "Description" msgstr "描述" -#: searx/templates/oscar/preferences.html:255 +#: searx/templates/oscar/preferences.html:243 msgid "Examples" msgstr "範例" -#: searx/templates/oscar/preferences.html:275 +#: searx/templates/oscar/preferences.html:263 msgid "" "This is the list of cookies and their values searx is storing on your " "computer." msgstr "這是 searx 儲存在您電腦上的 cookies 與它們的值的清單。" -#: searx/templates/oscar/preferences.html:276 +#: searx/templates/oscar/preferences.html:264 msgid "With that list, you can assess searx transparency." msgstr "有了這份清單,您就可以評估 searx 的透明度。" -#: searx/templates/oscar/preferences.html:281 +#: searx/templates/oscar/preferences.html:269 msgid "Cookie name" msgstr "Cookie 名稱" -#: searx/templates/oscar/preferences.html:282 +#: searx/templates/oscar/preferences.html:270 msgid "Value" msgstr "值" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "Search URL of the currently saved preferences" msgstr "目前偏好設定的搜尋 URL" -#: searx/templates/oscar/preferences.html:301 +#: searx/templates/oscar/preferences.html:289 msgid "" "Note: specifying custom settings in the search URL can reduce privacy by " "leaking data to the clicked result sites." From 89662cd33efd9d54e02c83b74d36eca8ae85d77e Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 30 Jan 2020 13:33:19 +0100 Subject: [PATCH 146/238] [enh] update AUTHORS.rst with new contributors --- AUTHORS.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/AUTHORS.rst b/AUTHORS.rst index 2a2f1921..9ab78b05 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -100,3 +100,26 @@ generally made searx better: - @ZEROF - Ivan Skytte Jørgensen @isj-privacore - @miicha +- Étienne Deparis @milouse +- @pelag0s +- Denis Wernert @d-tux +- Robin Hallabro-Kokko @hallabro +- Jonas Zohren @jfowl +- Elias Ojala @theel0ja +- @brunob +- Nick Espig @nachtalb +- Rachmadani Haryono @rachmadaniHaryono +- Frank de Lange @yetangitu +- Émilien Devos @unifox +- Nicolas Gelot @nfk +- @volth +- Mathieu Brunot @madmath03 +- @lorddavidiii +- @x250 +- Robby O'Connor @robbyoconnor +- Finn @0xhtml +- @tmikaeld +- @hobbestigrou +- Vipul @finn0 +- @CaffeinatedTech +- Robin Schneider @ypid From 6060ab85f8d920bd25093d70bf0a86920dcd5a9a Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 30 Jan 2020 13:39:06 +0100 Subject: [PATCH 147/238] [enh] version v0.16.0 --- CHANGELOG.rst | 38 ++++++++++++++++++++++++++++++++++++++ searx/version.py | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 70e9e415..b921788c 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,41 @@ +0.16.0 2020.01.30 +================= + +- New engines + + - Splash + - Apkmirror + - NPM search + - Invidious + - Seedpeer +- New languages + + - Estonian + - Interlingua + - Lithuanian + - Tibetian + - Occitan + - Tamil +- Engine fixes (wolframalpha, google scholar, youtube, google images, seznam, google, soundcloud, google cloud, duden, btdigg, google play, bing images, flickr noapi, wikidata, dailymotion, google videos, arxiv, dictzone, fdroid, etymonline, bing, duckduckgo, startpage, voat, 1x, deviantart, digg, gigablast, mojeek, duckduckgo definitions, spotify, libgen, qwant, openstreetmap, wikipedia, ina, microsoft academic, scanr structures) +- Dependency updates +- Speed optimizations +- Initial support for offline engines +- Image format display +- Inline js scripts removed +- Infinite scroll plugin fix +- Simple theme bugfixes +- Docker image updates +- Bang expression fixes +- Result merging fixes +- New environment variable added: SEARX_BIND_ADDRESS + + +News +~~~~ + +- @return42 joined the maintainer team +- This is the last release with Python2 support + 0.15.0 2019.01.06 ================= diff --git a/searx/version.py b/searx/version.py index 4e149722..3fe3dba8 100644 --- a/searx/version.py +++ b/searx/version.py @@ -18,7 +18,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. # version of searx VERSION_MAJOR = 0 -VERSION_MINOR = 15 +VERSION_MINOR = 16 VERSION_BUILD = 0 VERSION_STRING = "{0}.{1}.{2}".format(VERSION_MAJOR, From b8b13372c8fd3bfe978a1c724ab98b05348df054 Mon Sep 17 00:00:00 2001 From: Nicolas Gelot <nicolas.gelot@e.email> Date: Thu, 6 Feb 2020 22:40:58 +0100 Subject: [PATCH 148/238] Fix deprecated werkzeug import Close: #1830 Signed-off-by: Nicolas Gelot <nicolas.gelot@e.email> --- requirements.txt | 2 +- searx/webapp.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 6e4df37a..ea4a5a7a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ certifi==2019.3.9 babel==2.7.0 -flask-babel==0.12.2 +flask-babel==1.0.0 flask==1.0.2 idna==2.8 jinja2==2.10.1 diff --git a/searx/webapp.py b/searx/webapp.py index aadefe6b..5ed9f127 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -47,7 +47,7 @@ except: from html import escape from datetime import datetime, timedelta from time import time -from werkzeug.contrib.fixers import ProxyFix +from werkzeug.middleware.proxy_fix import ProxyFix from flask import ( Flask, request, render_template, url_for, Response, make_response, redirect, send_from_directory From f9c7a678d273c55a0e8a1a7a2dbfd696b2046e60 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Fri, 7 Feb 2020 12:00:45 +0100 Subject: [PATCH 149/238] [doc] fix rst format to be able to upload the package to pypi --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 7fcda4f9..afe413af 100644 --- a/README.rst +++ b/README.rst @@ -18,17 +18,17 @@ Installation ~~~~~~~~~~~~ With Docker ------- +----------- Go to the `searx-docker <https://github.com/searx/searx-docker>`__ project. Without Docker ------- +-------------- For all of the details, follow this `step by step installation <https://asciimoo.github.io/searx/dev/install/installation.html>`__. Note: the documentation needs to be updated. If you are in a hurry ------- +--------------------- - clone the source: ``git clone https://github.com/asciimoo/searx.git && cd searx`` - install dependencies: ``./manage.sh update_packages`` From 0579d9378301409f21eb806e7c32ddf8a8bbb6ec Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Fri, 7 Feb 2020 19:16:15 +0100 Subject: [PATCH 150/238] [fix] Disable HTTP keep alive Fix HTTP 429 response from filtron See https://github.com/searx/searx-docker/issues/24 --- dockerfiles/uwsgi.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dockerfiles/uwsgi.ini b/dockerfiles/uwsgi.ini index fa2fd630..ecc4b394 100644 --- a/dockerfiles/uwsgi.ini +++ b/dockerfiles/uwsgi.ini @@ -31,3 +31,7 @@ touch-logrotate = /run/uwsgi-logrotate unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate } log-backupname = /var/log/uwsgi/uwsgi.log.1 logto = /var/log/uwsgi/uwsgi.log + +# No keep alive +# See https://github.com/searx/searx-docker/issues/24 +add-header = Connection: close From 99435381a84072b110c32004b2fb778af9b96f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= <sitbackandwait@gmail.com> Date: Sat, 1 Feb 2020 11:01:17 +0100 Subject: [PATCH 151/238] [enh] introduce private engines This PR adds a new setting to engines named `tokens`. It expects a list of tokens which lets searx validate if the request should be accepted or not. --- searx/__init__.py | 1 + searx/engines/__init__.py | 9 ++- searx/engines/dummy-offline.py | 12 ++++ searx/engines/genius.py | 1 + searx/preferences.py | 44 +++++++++++++ searx/query.py | 4 +- searx/search.py | 5 +- searx/templates/oscar/preferences.html | 6 ++ searx/webapp.py | 17 +++-- tests/unit/test_search.py | 90 ++++++++++++++++++++------ 10 files changed, 161 insertions(+), 28 deletions(-) create mode 100644 searx/engines/dummy-offline.py diff --git a/searx/__init__.py b/searx/__init__.py index d32fe006..2f3ebfcf 100644 --- a/searx/__init__.py +++ b/searx/__init__.py @@ -38,6 +38,7 @@ def check_settings_yml(file_name): else: return None + # find location of settings.yml if 'SEARX_SETTINGS_PATH' in environ: # if possible set path to settings using the diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 2393f52b..9ccef8b5 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -54,7 +54,8 @@ engine_default_args = {'paging': False, 'suspend_end_time': 0, 'continuous_errors': 0, 'time_range_support': False, - 'offline': False} + 'offline': False, + 'tokens': []} def load_engine(engine_data): @@ -160,7 +161,7 @@ def to_percentage(stats, maxvalue): return stats -def get_engines_stats(): +def get_engines_stats(preferences): # TODO refactor pageloads = [] engine_times = [] @@ -171,8 +172,12 @@ def get_engines_stats(): max_pageload = max_engine_times = max_results = max_score = max_errors = max_score_per_result = 0 # noqa for engine in engines.values(): + if not preferences.validate_token(engine): + continue + if engine.stats['search_count'] == 0: continue + results_num = \ engine.stats['result_count'] / float(engine.stats['search_count']) diff --git a/searx/engines/dummy-offline.py b/searx/engines/dummy-offline.py new file mode 100644 index 00000000..13a9ecc0 --- /dev/null +++ b/searx/engines/dummy-offline.py @@ -0,0 +1,12 @@ +""" + Dummy Offline + + @results one result + @stable yes +""" + + +def search(query, request_params): + return [{ + 'result': 'this is what you get', + }] diff --git a/searx/engines/genius.py b/searx/engines/genius.py index b265e9d7..aa5afad9 100644 --- a/searx/engines/genius.py +++ b/searx/engines/genius.py @@ -72,6 +72,7 @@ def parse_album(hit): result.update({'content': 'Released: {}'.format(year)}) return result + parse = {'lyric': parse_lyric, 'song': parse_lyric, 'artist': parse_artist, 'album': parse_album} diff --git a/searx/preferences.py b/searx/preferences.py index 30a4252b..6befdd6e 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -104,6 +104,31 @@ class MultipleChoiceSetting(EnumStringSetting): resp.set_cookie(name, ','.join(self.value), max_age=COOKIE_MAX_AGE) +class SetSetting(Setting): + def _post_init(self): + if not hasattr(self, 'values'): + self.values = set() + + def get_value(self): + return ','.join(self.values) + + def parse(self, data): + if data == '': + self.values = set() + return + + elements = data.split(',') + for element in elements: + self.values.add(element) + + def parse_form(self, data): + elements = data.split(',') + self.values = set(elements) + + def save(self, name, resp): + resp.set_cookie(name, ','.join(self.values), max_age=COOKIE_MAX_AGE) + + class SearchLanguageSetting(EnumStringSetting): """Available choices may change, so user's value may not be in choices anymore""" @@ -272,6 +297,7 @@ class Preferences(object): self.engines = EnginesSetting('engines', choices=engines) self.plugins = PluginsSetting('plugins', choices=plugins) + self.tokens = SetSetting('tokens') self.unknown_params = {} def get_as_url_params(self): @@ -288,6 +314,8 @@ class Preferences(object): settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled) settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled) + settings_kv['tokens'] = ','.join(self.tokens.values) + return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8') def parse_encoded_data(self, input_data): @@ -307,6 +335,8 @@ class Preferences(object): elif user_setting_name == 'disabled_plugins': self.plugins.parse_cookie((input_data.get('disabled_plugins', ''), input_data.get('enabled_plugins', ''))) + elif user_setting_name == 'tokens': + self.tokens.parse(user_setting) elif not any(user_setting_name.startswith(x) for x in [ 'enabled_', 'disabled_', @@ -328,6 +358,8 @@ class Preferences(object): enabled_categories.append(user_setting_name[len('category_'):]) elif user_setting_name.startswith('plugin_'): disabled_plugins.append(user_setting_name) + elif user_setting_name == 'tokens': + self.tokens.parse_form(user_setting) else: self.unknown_params[user_setting_name] = user_setting self.key_value_settings['categories'].parse_form(enabled_categories) @@ -346,6 +378,18 @@ class Preferences(object): user_setting.save(user_setting_name, resp) self.engines.save(resp) self.plugins.save(resp) + self.tokens.save('tokens', resp) for k, v in self.unknown_params.items(): resp.set_cookie(k, v, max_age=COOKIE_MAX_AGE) return resp + + def validate_token(self, engine): + valid = True + if hasattr(engine, 'tokens') and engine.tokens: + valid = False + for token in self.tokens.values: + if token in engine.tokens: + valid = True + break + + return valid diff --git a/searx/query.py b/searx/query.py index c4002bd3..79afa024 100644 --- a/searx/query.py +++ b/searx/query.py @@ -177,7 +177,8 @@ class RawTextQuery(object): class SearchQuery(object): """container for all the search parameters (query, language, etc...)""" - def __init__(self, query, engines, categories, lang, safesearch, pageno, time_range, timeout_limit=None): + def __init__(self, query, engines, categories, lang, safesearch, pageno, time_range, + timeout_limit=None, preferences=None): self.query = query.encode('utf-8') self.engines = engines self.categories = categories @@ -186,6 +187,7 @@ class SearchQuery(object): self.pageno = pageno self.time_range = None if time_range in ('', 'None', None) else time_range self.timeout_limit = timeout_limit + self.preferences = preferences def __str__(self): return str(self.query) + ";" + str(self.engines) diff --git a/searx/search.py b/searx/search.py index 5c268cc5..2dcc4c8f 100644 --- a/searx/search.py +++ b/searx/search.py @@ -407,7 +407,7 @@ def get_search_query_from_webapp(preferences, form): return (SearchQuery(query, query_engines, query_categories, query_lang, query_safesearch, query_pageno, - query_time_range, query_timeout), + query_time_range, query_timeout, preferences), raw_text_query) @@ -459,6 +459,9 @@ class Search(object): engine = engines[selected_engine['name']] + if not search_query.preferences.validate_token(engine): + continue + # skip suspended engines if engine.suspend_end_time >= time(): logger.debug('Engine currently suspended: %s', selected_engine['name']) diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html index 1a484dd4..b03929df 100644 --- a/searx/templates/oscar/preferences.html +++ b/searx/templates/oscar/preferences.html @@ -131,6 +131,12 @@ {% endfor %} </select> {{ preferences_item_footer(info, label, rtl) }} + + {% set label = _('Engine tokens') %} + {% set info = _('Access tokens for private engines') %} + {{ preferences_item_header(info, label, rtl) }} + <input class="form-control" id='tokens' name='tokens' value='{{ preferences.tokens.get_value() }}'/> + {{ preferences_item_footer(info, label, rtl) }} </div> </fieldset> </div> diff --git a/searx/webapp.py b/searx/webapp.py index 5ed9f127..fd34a9ef 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -731,8 +731,13 @@ def preferences(): # stats for preferences page stats = {} + engines_by_category = {} for c in categories: + engines_by_category[c] = [] for e in categories[c]: + if not request.preferences.validate_token(e): + continue + stats[e.name] = {'time': None, 'warn_timeout': False, 'warn_time': False} @@ -740,9 +745,11 @@ def preferences(): stats[e.name]['warn_timeout'] = True stats[e.name]['supports_selected_language'] = _is_selected_language_supported(e, request.preferences) + engines_by_category[c].append(e) + # get first element [0], the engine time, # and then the second element [1] : the time (the first one is the label) - for engine_stat in get_engines_stats()[0][1]: + for engine_stat in get_engines_stats(request.preferences)[0][1]: stats[engine_stat.get('name')]['time'] = round(engine_stat.get('avg'), 3) if engine_stat.get('avg') > settings['outgoing']['request_timeout']: stats[engine_stat.get('name')]['warn_time'] = True @@ -752,7 +759,7 @@ def preferences(): locales=settings['locales'], current_locale=get_locale(), image_proxy=image_proxy, - engines_by_category=categories, + engines_by_category=engines_by_category, stats=stats, answerers=[{'info': a.self_info(), 'keywords': a.keywords} for a in answerers], disabled_engines=disabled_engines, @@ -828,7 +835,7 @@ def image_proxy(): @app.route('/stats', methods=['GET']) def stats(): """Render engine statistics page.""" - stats = get_engines_stats() + stats = get_engines_stats(request.preferences) return render( 'stats.html', stats=stats, @@ -891,7 +898,7 @@ def clear_cookies(): @app.route('/config') def config(): return jsonify({'categories': list(categories.keys()), - 'engines': [{'name': engine_name, + 'engines': [{'name': name, 'categories': engine.categories, 'shortcut': engine.shortcut, 'enabled': not engine.disabled, @@ -904,7 +911,7 @@ def config(): 'safesearch': engine.safesearch, 'time_range_support': engine.time_range_support, 'timeout': engine.timeout} - for engine_name, engine in engines.items()], + for name, engine in engines.items() if request.preferences.validate_token(engine)], 'plugins': [{'name': plugin.name, 'enabled': plugin.default_on} for plugin in plugins], diff --git a/tests/unit/test_search.py b/tests/unit/test_search.py index a39786d1..18c22195 100644 --- a/tests/unit/test_search.py +++ b/tests/unit/test_search.py @@ -1,60 +1,112 @@ # -*- coding: utf-8 -*- from searx.testing import SearxTestCase +from searx.preferences import Preferences +from searx.engines import engines -import searx.preferences import searx.search -import searx.engines + + +SAFESEARCH = 0 +PAGENO = 1 +PUBLIC_ENGINE_NAME = 'general dummy' +PRIVATE_ENGINE_NAME = 'general private offline' +TEST_ENGINES = [ + { + 'name': PUBLIC_ENGINE_NAME, + 'engine': 'dummy', + 'categories': 'general', + 'shortcut': 'gd', + 'timeout': 3.0, + 'tokens': [], + }, + { + 'name': PRIVATE_ENGINE_NAME, + 'engine': 'dummy-offline', + 'categories': 'general', + 'shortcut': 'do', + 'timeout': 3.0, + 'offline': True, + 'tokens': ['my-token'], + }, +] class SearchTestCase(SearxTestCase): @classmethod def setUpClass(cls): - searx.engines.initialize_engines([{ - 'name': 'general dummy', - 'engine': 'dummy', - 'categories': 'general', - 'shortcut': 'gd', - 'timeout': 3.0 - }]) + searx.engines.initialize_engines(TEST_ENGINES) def test_timeout_simple(self): searx.search.max_request_timeout = None - search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}], - ['general'], 'en-US', 0, 1, None, None) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, None, + preferences=Preferences(['oscar'], ['general'], engines, [])) search = searx.search.Search(search_query) search.search() self.assertEquals(search.actual_timeout, 3.0) def test_timeout_query_above_default_nomax(self): searx.search.max_request_timeout = None - search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}], - ['general'], 'en-US', 0, 1, None, 5.0) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 5.0, + preferences=Preferences(['oscar'], ['general'], engines, [])) search = searx.search.Search(search_query) search.search() self.assertEquals(search.actual_timeout, 3.0) def test_timeout_query_below_default_nomax(self): searx.search.max_request_timeout = None - search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}], - ['general'], 'en-US', 0, 1, None, 1.0) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 1.0, + preferences=Preferences(['oscar'], ['general'], engines, [])) search = searx.search.Search(search_query) search.search() self.assertEquals(search.actual_timeout, 1.0) def test_timeout_query_below_max(self): searx.search.max_request_timeout = 10.0 - search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}], - ['general'], 'en-US', 0, 1, None, 5.0) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 5.0, + preferences=Preferences(['oscar'], ['general'], engines, [])) search = searx.search.Search(search_query) search.search() self.assertEquals(search.actual_timeout, 5.0) def test_timeout_query_above_max(self): searx.search.max_request_timeout = 10.0 - search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}], - ['general'], 'en-US', 0, 1, None, 15.0) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 15.0, + preferences=Preferences(['oscar'], ['general'], engines, [])) search = searx.search.Search(search_query) search.search() self.assertEquals(search.actual_timeout, 10.0) + + def test_query_private_engine_without_token(self): + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PRIVATE_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 2.0, + preferences=Preferences(['oscar'], ['general'], engines, [])) + search = searx.search.Search(search_query) + results = search.search() + self.assertEquals(results.results_length(), 0) + + def test_query_private_engine_with_incorrect_token(self): + preferences_with_tokens = Preferences(['oscar'], ['general'], engines, []) + preferences_with_tokens.parse_dict({'tokens': 'bad-token'}) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PRIVATE_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 2.0, + preferences=preferences_with_tokens) + search = searx.search.Search(search_query) + results = search.search() + self.assertEquals(results.results_length(), 0) + + def test_query_private_engine_with_correct_token(self): + preferences_with_tokens = Preferences(['oscar'], ['general'], engines, []) + preferences_with_tokens.parse_dict({'tokens': 'my-token'}) + search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PRIVATE_ENGINE_NAME}], + ['general'], 'en-US', SAFESEARCH, PAGENO, None, 2.0, + preferences=preferences_with_tokens) + search = searx.search.Search(search_query) + results = search.search() + self.assertEquals(results.results_length(), 1) From f0684a5bb5860c2b9caffefb47dc55781092819e Mon Sep 17 00:00:00 2001 From: piplongrun <piplongrun@users.noreply.github.com> Date: Wed, 12 Feb 2020 23:58:50 +0100 Subject: [PATCH 152/238] Add eTools engine --- searx/engines/etools.py | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 searx/engines/etools.py diff --git a/searx/engines/etools.py b/searx/engines/etools.py new file mode 100644 index 00000000..a9eb0980 --- /dev/null +++ b/searx/engines/etools.py @@ -0,0 +1,54 @@ +""" + eTools (Web) + + @website https://www.etools.ch + @provide-api no + @using-api no + @results HTML + @stable no (HTML can change) + @parse url, title, content +""" + +from lxml import html +from searx.engines.xpath import extract_text +from searx.url_utils import quote +from searx.utils import eval_xpath + +categories = ['general'] +paging = False +language_support = False +safesearch = True + +base_url = 'https://www.etools.ch' +search_path = '/searchAdvancedSubmit.do'\ + '?query={search_term}'\ + '&pageResults=20'\ + '&safeSearch={safesearch}' + + +def request(query, params): + if params['safesearch']: + safesearch = 'true' + else: + safesearch = 'false' + + params['url'] = base_url + search_path.format(search_term=quote(query), safesearch=safesearch) + + return params + + +def response(resp): + results = [] + + dom = html.fromstring(resp.text) + + for result in eval_xpath(dom, '//table[@class="result"]//td[@class="record"]'): + url = eval_xpath(result, './a/@href')[0] + title = extract_text(eval_xpath(result, './a//text()')) + content = extract_text(eval_xpath(result, './/div[@class="text"]//text()')) + + results.append({'url': url, + 'title': title, + 'content': content}) + + return results From e1b60106b7dab37fe29cb68c9b625c5fe52c1385 Mon Sep 17 00:00:00 2001 From: piplongrun <piplongrun@users.noreply.github.com> Date: Wed, 12 Feb 2020 23:59:18 +0100 Subject: [PATCH 153/238] Add etools engine to the list --- searx/settings.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/searx/settings.yml b/searx/settings.yml index ab3de395..08ff8dc6 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -202,6 +202,11 @@ engines: timeout: 3.0 disabled : True + - name : etools + engine : etools + shortcut : eto + disabled : True + - name : etymonline engine : xpath paging : True From 88f9ac58f4577e3efed63bceb91b51258060a8a0 Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Fri, 14 Feb 2020 13:45:50 +0100 Subject: [PATCH 154/238] [mod] move public instance list to https://searx.space --- README.rst | 2 +- docs/conf.py | 2 +- docs/user/index.rst | 1 - docs/user/public_instances.rst | 319 +------------------------- searx/templates/__common__/about.html | 2 +- searx/templates/oscar/base.html | 2 +- searx/templates/simple/base.html | 2 +- 7 files changed, 7 insertions(+), 323 deletions(-) diff --git a/README.rst b/README.rst index afe413af..eb2c58ea 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,7 @@ engine <https://en.wikipedia.org/wiki/Metasearch_engine>`__. Pronunciation: səːks List of `running -instances <https://github.com/asciimoo/searx/wiki/Searx-instances>`__. +instances <https://searx.space/>`__. See the `documentation <https://asciimoo.github.io/searx>`__ and the `wiki <https://github.com/asciimoo/searx/wiki>`__ for more information. diff --git a/docs/conf.py b/docs/conf.py index af255e23..cd61b697 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -94,7 +94,7 @@ html_context = { "project_links": [ ProjectLink("Source", GIT_URL), ProjectLink("Wiki", "https://github.com/asciimoo/searx/wiki"), - ProjectLink("Public instances", "https://asciimoo.github.io/searx/user/public_instances.html"), + ProjectLink("Public instances", "https://searx.space/"), ProjectLink("Twitter", "https://twitter.com/Searx_engine"), ] } diff --git a/docs/user/index.rst b/docs/user/index.rst index 329be3b1..b13aca21 100644 --- a/docs/user/index.rst +++ b/docs/user/index.rst @@ -5,6 +5,5 @@ User documentation .. toctree:: :maxdepth: 1 - public_instances search_syntax own-instance diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst index 9665c58b..f58ab7a0 100644 --- a/docs/user/public_instances.rst +++ b/docs/user/public_instances.rst @@ -1,318 +1,3 @@ -.. _public instances: - -.. - links has been ported from markdown to reST by:: - - regexpr: \[([^\]]*)\]\(([^)]*)\) - substitution: `\1 <\2>`__ - - -====================== -Public Searx instances -====================== - -.. _mailing list: mailto:searx-instances@autistici.org -.. _subscription page: https://www.autistici.org/mailman/listinfo/searx-instances - - -Useful information -================== - -* Up-to-date health report available on https://stats.searx.xyz [1]_, for onion - (tor) services: https://stats.searx.xyz/tor.html - -* Searx instances `mailing list`_ & `subscription page`_. - -* Some of the Searx instances have a CAcert SSL certificate. You can install the - missing root cert `from here <http://www.cacert.org/index.php?id=3>`__. - -* To add your own Searx instance to this page send us your PR. A GitHub account - is required to send PR or add an issue. - -.. [1] Note that most of the instances with a A+ grade in CSP column in this - site are not fully functional - for example auto-completion may not work. - - -List of public Searx instances -============================== - -Meta-searx instances -==================== - -These are websites that source from other searx instances. These are useful if -you can't decide which Searx instance to use: - - -.. flat-table:: Meta-searx instances - :header-rows: 1 - :stub-columns: 0 - :widths: 2 1 2 4 4 - - * - clearnet host - - onion host - - issuer - - source selection method - - extra privacy features - - * - `Neocities <https://searx.neocities.org/>`__ - - n/a - - Comodo (`Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org>`__) - - Redirects users directly to a random selection of any known running - server after entering query. Requires - Javascript. `Changelog <https://searx.neocities.org/changelog.html>`__. - - Excludes servers with user tracking and analytics or are proxied through - Cloudflare. - - * - `Searxes <https://searxes.danwin1210.me/>`__ @Danwin - - onion v3 `hidden service - <http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/>`__ - - Let's Encrypt (`Verification - <https://www.ssllabs.com/ssltest/analyze.html?d=searxes.danwin1210.me>`__) - - sources data from a randomly selected running server that satisfies - admin's quality standards which is used for post-processing - - filters out privacy-hostile websites (like CloudFlare) and either marks - them as such or folds them below the high ranking results. - - -Alive and running -================= - -**BEFORE EDITING**: Please add your Searx instance by respecting the alphabetic order. - -.. note:: - - Public instances listed here may yield less accurate results as they have - much higher traffic and consequently have a higher chance of being blocked by - search providers such as Google, Qwant, Bing, Startpage, etc. Hosting your - own instance or using an instance that isn't listed here may give you a more - consistent search experience. - -* `ai.deafpray.wtf/searx <https://ai.deafpray.wtf/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=ai.deafpray.wtf/searx>`__ -* `bamboozle.it <https://bamboozle.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bamboozle.it>`__ -* `bee.jaekr.dev <https://bee.jaekr.dev>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bee.jaekr.dev>`__ -* `beezboo.com <https://beezboo.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=beezboo.com>`__ -* `burtrum.org/searx <https://burtrum.org/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=burtrum.org/searx>`__ -* `darmarit.cloud/searx <https://darmarit.cloud/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=darmarit.cloud/searx>`__ -* `dc.ax <https://dc.ax>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=dc.ax>`__ -* `dynabyte.ca <https://dynabyte.ca>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=dynabyte.ca>`__ -* `goso.ga <https://goso.ga/search>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=goso.ga>`__ -* `gruble.de <https://www.gruble.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.gruble.de>`__ -* `haku.ahmia.fi <https://haku.ahmia.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.ahmia.fi&latest>`__ -* `haku.lelux.fi <https://haku.lelux.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi>`__ -* `huyo.me <https://huyo.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=huyo.me>`__ -* `jsearch.pw <https://jsearch.pw>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=jsearch.pw>`__ -* `le-dahut.com/searx <https://le-dahut.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=le-dahut.com/searx>`__ -* `mijisou.com <https://mijisou.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=mijisou.com>`__ -* `null.media <https://null.media>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=null.media>`__ -* `openworlds.info <https://openworlds.info/>`__ - Issuer: Let's Encrypt -* `perfectpixel.de/searx/ <https://www.perfectpixel.de/searx/>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.perfectpixel.de>`__ -* `ransack.i2p <http://ransack.i2p/>`__ - I2P eepsite, only accessible with `I2P <https://geti2p.net/>`__ (`base32 address <http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p>`__) -* `rapu.nz <https://rapu.nz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=rapu.nz>`__ -* `roflcopter.fr <https://wtf.roflcopter.fr/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=wtf.roflcopter.fr>`__ -* `roteserver.de/searx <https://roteserver.de/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=roteserver.de>`__ -* `s.cmd.gg <https://s.cmd.gg>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.cmd.gg>`__ -* `search.activemail.de <https://search.activemail.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.activemail.de&latest>`__ -* `search.anonymize.com <https://search.anonymize.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.anonymize.com>`__ -* `search.azkware.net <https://search.azkware.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.azkware.net>`__ -* `search.biboumail.fr <https://search.biboumail.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.biboumail.fr>`__ -* `search.blankenberg.eu <https://search.blankenberg.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.blankenberg.eu>`__ -* `search.d4networks.com <https://search.d4networks.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.d4networks.com>`__ -* `search.datensturm.net <https://search.datensturm.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.datensturm.net>`__ -* `search.disroot.org <https://search.disroot.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.disroot.org>`__ -* `search.ethibox.fr <https://search.ethibox.fr>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.ethibox.fr>`__ -* `search.fossdaily.xyz <https://search.fossdaily.xyz>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.fossdaily.xyz>`__ -* `search.galaxy.cat <https://search.galaxy.cat>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.galaxy.cat>`__ -* `search.gibberfish.org <https://search.gibberfish.org/>`__ (as `Hidden Service <http://o2jdk5mdsijm2b7l.onion/>`__ or `Proxied through Tor <https://search.gibberfish.org/tor/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.gibberfish.org>`__ -* `search.koehn.com <https://search.koehn.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.koehn.com>`__ -* `search.lgbtq.cool <https://search.lgbtq.cool/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.lgbtq.cool>`__ -* `search.mdosch.de <https://search.mdosch.de/>`__ (as `Hidden Service <http://search.4bkxscubgtxwvhpe.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mdosch.de>`__ -* `search.modalogi.com <https://search.modalogi.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.modalogi.com&latest>`__ -* `search.moravit.com <https://search.moravit.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.moravit.com>`__ -* `search.nebulacentre.net <https://search.nebulacentre.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.nebulacentre.net>`__ -* `search.paulla.asso.fr <https://search.paulla.asso.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.paulla.asso.fr>`__ -* `search.pifferi.info <https://search.pifferi.info/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.pifferi.info&latest>`__ -* `search.poal.co <https://search.poal.co/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.poal.co>`__ -* `search.privacytools.io <https://search.privacytools.io/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.privacytools.io>`__ - Uses Matomo for user tracking and analytics -* `search.seds.nl <https://search.seds.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.seds.nl&latest>`__ -* `search.snopyta.org <https://search.snopyta.org/>`__ (as `Hidden Service <http://juy4e6eicawzdrz7.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.snopyta.org>`__ -* `search.spaeth.me <https://search.spaeth.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.spaeth.me&latest>`__ -* `search.st8.at <https://search.st8.at/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.st8.at>`__ -* `search.stinpriza.org <https://search.stinpriza.org>`__ (as `Hidden Service <http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.stinpriza.org&hideResults=on>`__ -* `search.sudo-i.net <https://search.sudo-i.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.sudo-i.net>`__ -* `search.tolstoevsky.ml <https://search.tolstoevsky.ml>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.tolstoevsky.ml>`__ -* `searchsin.com/searx <https://searchsin.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchsin.com/searx>`__ -* `searx.anongoth.pl <https://searx.anongoth.pl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.anongoth.pl&latest>`__ -* `searx.be <https://searx.be>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.be>`__ -* `searx.ca <https://searx.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ca>`__ -* `searx.canox.net <https://searx.canox.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.canox.net>`__ -* `searx.cybt.de <https://searx.cybt.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cybt.de>`__ -* `searx.de <https://www.searx.de/>`__ - Issuer: COMODO `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.de>`__ -* `searx.decatec.de <https://searx.decatec.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.decatec.de>`__ -* `searx.devol.it <https://searx.devol.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=sears.devol.it>`__ -* `searx.dnswarden.com <https://searx.dnswarden.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dnswarden.com>`__ -* `searx.drakonix.net <https://searx.drakonix.net/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.drakonix.net>`__ -* `searx.dresden.network <https://searx.dresden.network/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dresden.network>`__ -* `searx.elukerio.org <https://searx.elukerio.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.elukerio.org/>`__ -* `searx.everdot.org <https://searx.everdot.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.everdot.org/>`__ - Crawls using YaCy -* `searx.foo.li <https://searx.foo.li>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.foo.li&hideResults=on>`__ -* `searx.fossencdi.org <https://searx.fossencdi.org>`__ (as `Hidden Service <http://searx.cwuzdtzlubq5uual.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.fossencdi.org>`__ -* `searx.fr32k.de <https://searx.fr32k.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.fr32k.de>`__ -* `searx.good.one.pl <https://searx.good.one.pl>`__ (as `Hidden Service <http://searxl7u2y6gvonm.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.good.one.pl>`__ -* `searx.gotrust.de <https://searx.gotrust.de/>`__ (as `Hidden Service <http://nxhhwbbxc4khvvlw.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.gotrust.de>`__ -* `searx.hardwired.link <https://searx.hardwired.link/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.hardwired.link>`__ -* `searx.hlfh.space <https://searx.hlfh.space>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.hlfh.space>`__ -* `searx.info <https://searx.info>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.info>`__ -* `searx.itunix.eu <https://searx.itunix.eu/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.itunix.eu>`__ -* `searx.john-at-me.net <https://searx.john-at-me.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.john-at-me.net>`__ -* `searx.kvch.me <https://searx.kvch.me>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.kvch.me>`__ -* `searx.laquadrature.net <https://searx.laquadrature.net>`__ (as `Hidden Service <http://searchb5a7tmimez.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.laquadrature.net>`__ -* `searx.lelux.fi <https://searx.lelux.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi>`__ -* `searx.lhorn.de <https://searx.lhorn.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest>`__ -* `searx.li <https://searx.li/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.li>`__ -* `searx.libmail.eu <https://searx.libmail.eu/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.libmail.eu/>`__ -* `searx.linux.pizza <https://searx.linux.pizza>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.linux.pizza>`__ -* `searx.lynnesbian.space <https://searx.lynnesbian.space/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lynnesbian.space>`__ -* `searx.mastodontech.de <https://searx.mastodontech.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mastodontech.de>`__ -* `searx.me <https://searx.me>`__ (as `Hidden Service <http://ulrn6sryqaifefld.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.me>`__ -* `searx.mxchange.org <https://searx.mxchange.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mxchange.org>`__ -* `searx.nakhan.net <https://searx.nakhan.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nakhan.net>`__ -* `searx.nixnet.xyz <https://searx.nixnet.xyz>`__ (as `Hidden Service <http://searx.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nixnet.xyz>`__ -* `searx.nnto.net <https://searx.nnto.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nnto.net>`__ -* `searx.openhoofd.nl <https://searx.openhoofd.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=openhoofd.nl>`__ -* `searx.openpandora.org <https://searx.openpandora.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.openpandora.org&latest>`__ -* `searx.operationtulip.com <https://searx.operationtulip.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.operationtulip.com>`__ -* `searx.orcadian.net <https://searx.orcadian.net/>`__ - Issuer: Comodo CA Limited `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.orcadian.net>`__ -* `searx.ouahpit.info <https://searx.ouahpiti.info/>`__ - Issuer: Let's Encrypt -* `searx.pofilo.fr <https://searx.pofilo.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.pofilo.fr>`__ -* `searx.prvcy.eu <https://searx.prvcy.eu/>`__ (as `Hidden Service <http://hmfztxt3pfhevucl.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.prvcy.eu>`__ -* `searx.pwoss.org <https://searx.pwoss.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.pwoss.org>`__ -* `searx.ro <https://searx.ro/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ro>`__ -* `searx.ru <https://searx.ru/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ru>`__ -* `searx.solusar.de <https://searx.solusar.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.solusar.de>`__ -* `searx.targaryen.house <https://searx.targaryen.house/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.targaryen.house>`__ -* `searx.tuxcloud.net <https://searx.tuxcloud.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.tuxcloud.net>`__ -* `searx.tyil.nl <https://searx.tyil.nl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.tyil.nl>`__ -* `searx.wegeeks.win <https://searx.wegeeks.win>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.wegeeks.win>`__ -* `searx.win <https://searx.win/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.win&latest>`__ -* `searx.xyz <https://searx.xyz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xyz&latest>`__ -* `searx.zareldyn.net <https://searx.zareldyn.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zareldyn.net>`__ -* `searx.zdechov.net <https://searx.zdechov.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zdechov.net>`__ -* `searxs.eu <https://www.searxs.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.searxs.eu&hideResults=on>`__ -* `seeks.hsbp.org <https://seeks.hsbp.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=seeks.hsbp.org>`__ - `PGP signed fingerprints of cert <https://seeks.hsbp.org/cert>`__ -* `skyn3t.in/srx <https://skyn3t.in/srx/>`__ - Issuer: Let's Encrypt | onion `hidden service <http://skyn3tb3bas655mw.onion/srx/>`__ -* `spot.ecloud.global <https://spot.ecloud.global/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=spot.ecloud.global>`__ -* `srx.sx <https://srx.sx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=srx.sx>`__ -* `stemy.me/searx <https://stemy.me/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=stemy.me>`__ -* `suche.dasnetzundich.de <https://suche.dasnetzundich.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.dasnetzundich.de>`__ -* `suche.elaon.de <https://suche.elaon.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.elaon.de>`__ -* `suche.xyzco456vwisukfg.onion <http://suche.xyzco456vwisukfg.onion/>`__ -* `suche.uferwerk.org <https://suche.uferwerk.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.uferwerk.org>`__ -* `timdor.noip.me/searx <https://timdor.noip.me/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=timdor.noip.me/searx>`__ -* `trovu.komun.org <https://trovu.komun.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=trovu.komun.org>`__ -* `unmonito.red <https://unmonito.red/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=unmonito.red>`__ -* `www.finden.tk <https://www.finden.tk/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.finden.tk>`__ -* `zoek.anchel.nl <https://zoek.anchel.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=zoek.anchel.nl>`__ - - - -Running in exclusive private walled-gardens -=========================================== - -These instances run in walled-gardens that exclude some segment of the general -public (e.g. Tor users and users sharing IPs with many other users). Caution: -privacy is also compromised on these sites due to exposure of cleartext traffic -to a third party other than the website operator. - -* `intelme.com <https://intelme.com>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=intelme.com>`__ -* `search404.io <https://www.search404.io/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search404.io>`__ -* `searx.com.au <https://searx.com.au/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.com.au>`__ -* `searx.lavatech.top <https://searx.lavatech.top/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lavatech.top>`__ -* `searchx.mobi <https://searchx.mobi/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchx.mobi>`__ -* `searx.org <https://searx.org/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.org>`__ -* `searx.run <https://searx.run/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.run>`__ -* `searx.world <https://searx.world>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.world>`__ - Adds Amazon affiliate links - - -Running with an incorrect SSL certificate -========================================= - -* `listi.me <https://listi.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=listi.me&latest>`__ -* `s.matejc.com <https://s.matejc.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.matejc.com>`__ -* `search.jollausers.de <https://search.jollausers.de>`__ - Incorrectly configured `SSL certificate <https://www.ssllabs.com/ssltest/analyze.html?d=search.jollausers.de>`__ -* `search.paviro.de <https://search.paviro.de>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.paviro.de>`__ -* `searx.abenthung.it <https://searx.abenthung.it/>`__ - Issuer: Comodo CA Limited `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.abenthung.it>`__ -* `searx.coding4schoki.org <https://searx.coding4schoki.org/>`__ - Incorrectly configured `SSL Certificate <https://www.ssllabs.com/ssltest/analyze.html?d=searx.coding4schoki.org>`__ -* `searx.haxors.club <https://searx.haxors.club/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.haxors.club>`__ -* `searx.nulltime.net <https://searx.nulltime.net/>`__ (as `Hidden Service <http://searx7gwtu5rh6wr.onion>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nulltime.net>`__ -* `searx.ch <https://searx.ch/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ch>`__ (cert clock problems) - - -Offline -======= - -* `a.searx.space <https://a.searx.space>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=a.searx.space>`__ (unstable, under construction). -* `anyonething.de <https://anyonething.de>`__ - (was found to have become a pastebin on or before 2019-03-01) Issuer: Comodo CA Limited (Warning: uses Cloudflare) `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=anyonething.de>`__ -* `h7jwxg5rakyfvikpi.onion <http://7jwxg5rakyfvikpi.onion/>`__ - available only as Tor Hidden Service (down on 2019-06-26) -* `hacktivis.me/searx <https://hacktivis.me/searx>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=hacktivis.me/searx>`__ -* `icebal.com <https://icebal.com>`__ - (down) Issuer: Let's Encrypt -* `netrangler.host <https://netrangler.host>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=netrangler.host>`__ -* `opengo.nl <https://www.opengo.nl>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.opengo.nl>`__ -* `p9e.de <https://p9e.de/>`__ - (down - timeout) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=p9e.de>`__ -* `rubri.co <https://rubri.co>`__ - (down) Issuer: Let's Encrypt -* `s.bacafe.xyz <https://s.bacafe.xyz/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.bacafe.xyz&latest>`__ -* `search.alecpap.com <https://search.alecpap.com/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.alecpap.com>`__ -* `search.blackit.de <https://search.blackit.de/>`__ - (down) Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.blackit.de>`__ -* `search.deblan.org <https://search.deblan.org/>`__ (down) - Issuer: COMODO via GANDI `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.deblan.org>`__ -* `search.homecomputing.fr <https://search.homecomputing.fr/>`__ - (down) Issuer: CAcert `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.homecomputing.fr>`__ -* `search.jpope.org <https://search.jpope.org>`__ - (down - timeout) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.jpope.org>`__ -* `search.kakise.xyz <https://search.kakise.xyz/>`__ - down -* `search.kosebamse.com <https://search.kosebamse.com>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.kosebamse.com>`__ -* `search.kujiu.org <https://search.kujiu.org>`__ - (down) Issuer: Let's Encrypt -* `search.mailaender.coffee <https://search.mailaender.coffee/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mailaender.coffee>`__ -* `search.matrix.ac <https://search.matrix.ac>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=matrix.ac>`__ -* `search.mypsc.ca <https://search.mypsc.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mypsc.ca>`__ -* `search.namedkitten.pw <https://search.namedkitten.pw>`__ - (SSL error) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.namedkitten.pw>`__ -* `search.opentunisia.org <https://search.opentunisia.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.opentunisia.org>`__ -* `search.r3d007.com <https://search.r3d007.com/>`__ - (down) Issuer: Let's Encrypt -* `search.static.lu <https://search.static.lu/>`__ - (down) Issuer: StartCom `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.static.lu>`__ -* `search.teej.xyz <https://search.teej.xyz>`__ - (down) Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.teej.xyz>`__ -* `search.wxzm.sx <https://search.wxzm.sx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.wxzm.sx>`__ -* `searx.4ray.co <https://searx.4ray.co/>`__ - (no longer an instance, redirects to main page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.4ray.co>`__ -* `searx.32bitflo.at <https://searx.32bitflo.at/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.32bitflo.at>`__ -* `searx.ahh.si <https://searx.ahh.si/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ahh.si>`__ -* `searx.angristan.xyz <https://searx.angristan.xyz/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.angristan.xyz>`__ -* `searx.antirep.net <https://searx.antirep.net/>`__ - (return a 502 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.antirep.net>`__ -* `searx.aquilenet.fr <https://searx.aquilenet.fr/>`__ - (down - 429 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.aquilenet.fr>`__ -* `searx.at <https://searx.at/>`__ - (return "request exception" at every search) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.at>`__ -* `searx.cc <https://searx.cc/>`__ - (down on 2019-06-26) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cc>`__ -* `searx.dk <https://searx.dk/>`__ - (down - 429 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dk>`__ -* `searx.ehrmanns.ch <https://searx.ehrmanns.ch>`__ - (down) Issuer: Let's Encrypt -* `searx.glibre.net <https://searx.glibre.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.glibre.net>`__ -* `searx.infini.fr <https://searx.infini.fr>`__ - (return a page stating that the website is not installed) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.infini.fr>`__ -* `searx.jeanphilippemorvan.info <https://searx.jeanphilippemorvan.info/>`__ - (down) Issuer: StartCom `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.jeanphilippemorvan.info>`__ -* `searx.lhorn.de <https://searx.lhorn.de/>`__ - (redirect the Searx's github repository page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest>`__ (only reachable from european countries) -* `searx.lvweb.host <https://searx.lvweb.host>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lvweb.host>`__ -* `searx.mrtino.eu <https://searx.mrtino.eu>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mrtino.eu>`__ -* `searx.netzspielplatz.de <https://searx.netzspielplatz.de/>`__ - (error page about GDPR even when browsing it from USA and Asia) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.netzspielplatz.de>`__ -* `searx.new-admin.net <https://searx.new-admin.net>`__ - (down) Issuer: Let's Encrypt -* `searx.nogafa.org <https://searx.nogafa.org/>`__ - (broken CSS) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nogafa.org>`__ -* `searx.potato.hu <https://searx.potato.hu>`__ - (not a searx instance) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.potato.hu>`__ -* `searx.rubbeldiekatz.info <https://searx.rubbeldiekatz.info/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.rubbeldiekatz.info/>`__ -* `searx.s42.space <https://searx.s42.space>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.s42.space>`__ -* `searx.salcay.hu <https://searx.salcay.hu/>`__ - (down - blank page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.salcay.hu>`__ -* `searx.selea.se <https://searx.selea.se>`__ - (Leads to default Apache page) Issuer: RapidSSL (HSTS preloaded, DNSSEC) `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.selea.se>`__ | `HSTS Preload <https://hstspreload.org/?domain=searx.selea.se>`__ -* `searx.steinscraft.net <https://searx.steinscraft.net/>`__ - (down) Issuer: Cloudflare -* `searx.techregion.de <https://searx.techregion.de/>`__ - (domain expired) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.techregion.de>`__ -* `searx.tognella.com <https://searx.tognella.com/>`__ - (down) Issuer: Cloudflare -* `searx.xi.ht <https://searx.xi.ht/>`__ - (return a 502 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xi.ht>`__ -* `searxist.com <https://searxist.com/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searxist.com>`__ -* `so.sb <https://so.sb/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=so.sb>`__ -* `srx.stdout.net <https://srx.stdout.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=srx.stdout.net>`__ -* `w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion <http://w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion/>`__ - Hidden Service -* `win8linux.nohost.me <https://win8linux.nohost.me/searx/>`__ - (down) Issuer: Let's Encrypt -* `wiznet.tech <https://wiznet.tech>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=wiznet.tech>`__ -* `www.mercurius.space <https://www.mercurius.space/>`__ - (down) Issuer: Let's Encrypt -* `www.ready.pm <https://www.ready.pm>`__ - Issuer: WoSign `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.ready.pm>`__ -* `z.awsmppl.com <https://z.awsmppl.com>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=z.awsmppl.com>`__ -* `zlsdzh.tk <https://zlsdzh.tk>`__ - (down - 404 HTTP error) Issuer: TrustAsia Technologies, Inc. `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=zlsdzh.tk>`__ * +:orphan: +This page page has been moved to `searx.space <https://searx.space/>`__ diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html index bf173335..ff86ddd2 100644 --- a/searx/templates/__common__/about.html +++ b/searx/templates/__common__/about.html @@ -22,7 +22,7 @@ Searx can be added to your browser's search bar; moreover, it can be set as the <h2>How can I make it my own?</h2> -<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">list</a> to help other people reclaim their privacy and make the Internet freer! +<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="https://searx.space/">list</a> to help other people reclaim their privacy and make the Internet freer! <br />The more decentralized the Internet is, the more freedom we have!</p> diff --git a/searx/templates/oscar/base.html b/searx/templates/oscar/base.html index 66a9e602..9465ca58 100644 --- a/searx/templates/oscar/base.html +++ b/searx/templates/oscar/base.html @@ -88,7 +88,7 @@ {{ _('Powered by') }} <a href="https://asciimoo.github.io/searx/">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> | <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> | - <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">{{ _('Public instances') }}</a> + <a href="https://searx.space/">{{ _('Public instances') }}</a> </small> </p> </div> diff --git a/searx/templates/simple/base.html b/searx/templates/simple/base.html index 92597b65..bba02dbf 100644 --- a/searx/templates/simple/base.html +++ b/searx/templates/simple/base.html @@ -53,7 +53,7 @@ {{ _('Powered by') }} <a href="{{ url_for('about') }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> | <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> | - <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">{{ _('Public instances') }}</a> + <a href="https://searx.space/">{{ _('Public instances') }}</a> </p> </footer> <!--[if gte IE 9]>--> From b136480546c7b14958261338c27f0b2a97ea0aac Mon Sep 17 00:00:00 2001 From: piplongrun <piplongrun@users.noreply.github.com> Date: Fri, 14 Feb 2020 19:19:24 +0100 Subject: [PATCH 155/238] Add Swisscows autocomplete option --- searx/autocomplete.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/searx/autocomplete.py b/searx/autocomplete.py index ff895850..00a9f955 100644 --- a/searx/autocomplete.py +++ b/searx/autocomplete.py @@ -165,6 +165,14 @@ def startpage(query, lang): return [] +def swisscows(query, lang): + # swisscows autocompleter + url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5' + + resp = loads(get(url.format(query=urlencode({'query': query}))).text) + return resp + + def qwant(query, lang): # qwant autocompleter (additional parameter : lang=en_en&count=xxx ) url = 'https://api.qwant.com/api/suggest?{query}' @@ -196,6 +204,7 @@ backends = {'dbpedia': dbpedia, 'duckduckgo': duckduckgo, 'google': google, 'startpage': startpage, + 'swisscows': swisscows, 'qwant': qwant, 'wikipedia': wikipedia } From 6df41728872934fe0e7f12c0a272d370f50d26a9 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Tue, 18 Feb 2020 00:56:27 +0100 Subject: [PATCH 156/238] [fix] allow settin custom locale from settins.yml --- searx/preferences.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/preferences.py b/searx/preferences.py index 669232b1..37d4f13a 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -11,7 +11,7 @@ if version[0] == '3': COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years -LANGUAGE_CODES = [l[0] for l in languages] +LANGUAGE_CODES = [l[0].split('-')[0] for l in languages] LANGUAGE_CODES.append('all') DISABLED = 0 ENABLED = 1 From a9d184473f8da473918ad02ca1b3346420b296fc Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 20 Feb 2020 18:11:34 +0100 Subject: [PATCH 157/238] docs: fix dead Searx-instance links to https://searx.space Related to #1853 / BTW update year of copyright note Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/conf.py | 2 +- docs/dev/reST.rst | 2 +- docs/index.rst | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index cd61b697..ebcd102b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,7 +11,7 @@ DOCS_URL = os.environ.get("DOCS_URL", "https://asciimoo.github.io/searx/") # Project -------------------------------------------------------------- project = u'searx' -copyright = u'2015-2019, Adam Tauber, Noémi Ványi' +copyright = u'2015-2020, Adam Tauber, Noémi Ványi' author = u'Adam Tauber' release, version = VERSION_STRING, VERSION_STRING highlight_language = 'none' diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst index 4dc1279f..4835cbbc 100644 --- a/docs/dev/reST.rst +++ b/docs/dev/reST.rst @@ -285,7 +285,7 @@ content becomes smart. :rst:role:`pep` :pep:`8` ``:pep:`8``` sphinx.ext.extlinks_ -------------------------------------------------------------------------------------------------- - project's wiki article :wiki:`Searx-instances` ``:wiki:`Searx-instances``` + project's wiki article :wiki:`Offline-engines` ``:wiki:`Offline-engines``` to docs public URL :docs:`dev/reST.html` ``:docs:`dev/reST.html``` files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst``` pull request :pull:`1756` ``:pull:`1756``` diff --git a/docs/index.rst b/docs/index.rst index d9503fef..b62f4dc5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,8 +20,8 @@ Searx is a free internet metasearch engine which aggregates results from more than 70 search services. Users are neither tracked nor profiled. Additionally, searx can be used over Tor for online anonymity. -Get started with searx by using one of the :wiki:`Searx-instances`. If you -don't trust anyone, you can set up your own, see :ref:`installation`. +Get started with searx by using one of the Searx-instances_. If you don't trust +anyone, you can set up your own, see :ref:`installation`. .. toctree:: :maxdepth: 2 @@ -30,3 +30,5 @@ don't trust anyone, you can set up your own, see :ref:`installation`. admin/index dev/index blog/index + +.. _Searx-instances: https://searx.space From c0006cadf70f0ee457d881bbd4ec40e30b0acd8f Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin <marc-abonce@mailbox.org> Date: Sun, 23 Feb 2020 02:03:42 -0700 Subject: [PATCH 158/238] fix default locale and language issues --- searx/preferences.py | 9 +++++++-- searx/settings.yml | 1 + searx/webapp.py | 22 +++++++++++----------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/searx/preferences.py b/searx/preferences.py index 37d4f13a..6e31aa18 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -4,6 +4,7 @@ from sys import version from searx import settings, autocomplete from searx.languages import language_codes as languages +from searx.utils import match_language from searx.url_utils import parse_qs, urlencode if version[0] == '3': @@ -11,7 +12,7 @@ if version[0] == '3': COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years -LANGUAGE_CODES = [l[0].split('-')[0] for l in languages] +LANGUAGE_CODES = [l[0] for l in languages] LANGUAGE_CODES.append('all') DISABLED = 0 ENABLED = 1 @@ -132,6 +133,10 @@ class SetSetting(Setting): class SearchLanguageSetting(EnumStringSetting): """Available choices may change, so user's value may not be in choices anymore""" + def _validate_selection(self, selection): + if not match_language(selection, self.choices, fallback=None) and selection != "": + raise ValidationException('Invalid language code: "{0}"'.format(selection)) + def parse(self, data): if data not in self.choices and data != self.value: # hack to give some backwards compatibility with old language cookies @@ -268,7 +273,7 @@ class Preferences(object): super(Preferences, self).__init__() self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories + ['none']), - 'language': SearchLanguageSetting(settings['ui']['default_locale'], + 'language': SearchLanguageSetting(settings['search']['default_lang'], choices=list(LANGUAGE_CODES) + ['']), 'locale': EnumStringSetting(settings['ui']['default_locale'], choices=list(settings['locales'].keys()) + ['']), diff --git a/searx/settings.yml b/searx/settings.yml index ab3de395..65f42af8 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -5,6 +5,7 @@ general: search: safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "wikipedia" - leave blank to turn it off by default + default_lang : "" # Default search language - leave blank to detect from browser information or use codes from 'languages.py' ban_time_on_fail : 5 # ban time in seconds after engine errors max_ban_time_on_fail : 120 # max ban time in seconds after engine errors diff --git a/searx/webapp.py b/searx/webapp.py index a856c07d..8712cc3c 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -157,14 +157,16 @@ _category_names = (gettext('files'), outgoing_proxies = settings['outgoing'].get('proxies') or None +def _get_browser_language(request, lang_list): + for lang in request.headers.get("Accept-Language", "en").split(","): + locale = match_language(lang, lang_list, fallback=None) + if locale is not None: + return locale + + @babel.localeselector def get_locale(): - locale = "en-US" - - for lang in request.headers.get("Accept-Language", locale).split(","): - locale = match_language(lang, settings['locales'].keys(), fallback=None) - if locale is not None: - break + locale = _get_browser_language(request, settings['locales'].keys()) logger.debug("default locale from browser info is `%s`", locale) @@ -372,8 +374,7 @@ def render(template_name, override_theme=None, **kwargs): kwargs['language_codes'] = languages if 'current_language' not in kwargs: kwargs['current_language'] = match_language(request.preferences.get_value('language'), - LANGUAGE_CODES, - fallback=locale) + LANGUAGE_CODES) # override url_for function in templates kwargs['url_for'] = url_for_theme @@ -444,11 +445,10 @@ def pre_request(): request.errors.append(gettext('Invalid settings')) # init search language and locale - locale = get_locale() if not preferences.get_value("language"): - preferences.parse_dict({"language": locale}) + preferences.parse_dict({"language": _get_browser_language(request, LANGUAGE_CODES)}) if not preferences.get_value("locale"): - preferences.parse_dict({"locale": locale}) + preferences.parse_dict({"locale": get_locale()}) # request.user_plugins request.user_plugins = [] From b7105da2af11c4f5cd34d2cba61da5a0f3f36d95 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 23 Feb 2020 15:41:08 +0100 Subject: [PATCH 159/238] Add missing autocomplete backends to settings.yml comment Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/settings.yml b/searx/settings.yml index f39a5e32..078d95b7 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -4,7 +4,7 @@ general: search: safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict - autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "wikipedia" - leave blank to turn it off by default + autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default default_lang : "" # Default search language - leave blank to detect from browser information or use codes from 'languages.py' ban_time_on_fail : 5 # ban time in seconds after engine errors max_ban_time_on_fail : 120 # max ban time in seconds after engine errors From 179be12732cc02ff39e70b76c37b142683710107 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 23 Feb 2020 20:52:00 +0100 Subject: [PATCH 160/238] preferences.py: pylint, SPDX tag & docstrings (no functional change) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 6 +- searx/preferences.py | 206 ++++++++++++++++++++++++++++++------------- 2 files changed, 148 insertions(+), 64 deletions(-) diff --git a/Makefile b/Makefile index f35b86c4..0fc7f996 100644 --- a/Makefile +++ b/Makefile @@ -72,9 +72,11 @@ $(GH_PAGES):: PHONY += test test.pylint test.pep8 test.unit test.robot +test: test.pylint test.pep8 test.unit test.robot + # TODO: balance linting with pylint -test: test.pep8 test.unit test.robot - - make pylint +test.pylint: pylint-exe + $(call cmd,pylint,searx/preferences.py) test.pep8: pyenvinstall $(PY_ENV_ACT); ./manage.sh pep8_check diff --git a/searx/preferences.py b/searx/preferences.py index 6e31aa18..b0f8887c 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -1,3 +1,9 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +"""Searx preferences implementation. +""" + +# pylint: disable=useless-object-inheritance + from base64 import urlsafe_b64encode, urlsafe_b64decode from zlib import compress, decompress from sys import version @@ -8,6 +14,7 @@ from searx.utils import match_language from searx.url_utils import parse_qs, urlencode if version[0] == '3': + # pylint: disable=invalid-name unicode = str @@ -20,11 +27,14 @@ DOI_RESOLVERS = list(settings['doi_resolvers']) class MissingArgumentException(Exception): - pass + """Exption from ``cls._post_init`` when a argument is missed. + """ class ValidationException(Exception): - pass + + """Exption from ``cls._post_init`` when configuration value is invalid. + """ class Setting(object): @@ -42,33 +52,45 @@ class Setting(object): pass def parse(self, data): + """Parse ``data`` and store the result at ``self.value`` + + If needed, its overwritten in the inheritance. + """ self.value = data def get_value(self): + """Returns the value of the setting + + If needed, its overwritten in the inheritance. + """ return self.value def save(self, name, resp): + """Save cookie ``name`` in the HTTP reponse obect + + If needed, its overwritten in the inheritance.""" resp.set_cookie(name, self.value, max_age=COOKIE_MAX_AGE) class StringSetting(Setting): """Setting of plain string values""" - pass class EnumStringSetting(Setting): """Setting of a value which can only come from the given choices""" - def _validate_selection(self, selection): - if selection not in self.choices: - raise ValidationException('Invalid value: "{0}"'.format(selection)) - def _post_init(self): if not hasattr(self, 'choices'): raise MissingArgumentException('Missing argument: choices') self._validate_selection(self.value) + def _validate_selection(self, selection): + if selection not in self.choices: # pylint: disable=no-member + raise ValidationException('Invalid value: "{0}"'.format(selection)) + def parse(self, data): + """Parse and validate ``data`` and store the result at ``self.value`` + """ self._validate_selection(data) self.value = data @@ -78,7 +100,7 @@ class MultipleChoiceSetting(EnumStringSetting): def _validate_selections(self, selections): for item in selections: - if item not in self.choices: + if item not in self.choices: # pylint: disable=no-member raise ValidationException('Invalid value: "{0}"'.format(selections)) def _post_init(self): @@ -87,6 +109,8 @@ class MultipleChoiceSetting(EnumStringSetting): self._validate_selections(self.value) def parse(self, data): + """Parse and validate ``data`` and store the result at ``self.value`` + """ if data == '': self.value = [] return @@ -95,38 +119,47 @@ class MultipleChoiceSetting(EnumStringSetting): self._validate_selections(elements) self.value = elements - def parse_form(self, data): + def parse_form(self, data): # pylint: disable=missing-function-docstring self.value = [] for choice in data: - if choice in self.choices and choice not in self.value: + if choice in self.choices and choice not in self.value: # pylint: disable=no-member self.value.append(choice) def save(self, name, resp): + """Save cookie ``name`` in the HTTP reponse obect + """ resp.set_cookie(name, ','.join(self.value), max_age=COOKIE_MAX_AGE) class SetSetting(Setting): + """Setting of values of type ``set`` (comma separated string) """ def _post_init(self): if not hasattr(self, 'values'): self.values = set() def get_value(self): + """Returns a string with comma separated values. + """ return ','.join(self.values) def parse(self, data): + """Parse and validate ``data`` and store the result at ``self.value`` + """ if data == '': - self.values = set() + self.values = set() # pylint: disable=attribute-defined-outside-init return elements = data.split(',') for element in elements: self.values.add(element) - def parse_form(self, data): + def parse_form(self, data): # pylint: disable=missing-function-docstring elements = data.split(',') - self.values = set(elements) + self.values = set(elements) # pylint: disable=attribute-defined-outside-init def save(self, name, resp): + """Save cookie ``name`` in the HTTP reponse obect + """ resp.set_cookie(name, ','.join(self.values), max_age=COOKIE_MAX_AGE) @@ -134,14 +167,19 @@ class SearchLanguageSetting(EnumStringSetting): """Available choices may change, so user's value may not be in choices anymore""" def _validate_selection(self, selection): - if not match_language(selection, self.choices, fallback=None) and selection != "": + if selection != "" and not match_language( + # pylint: disable=no-member + selection, self.choices, fallback=None): raise ValidationException('Invalid language code: "{0}"'.format(selection)) def parse(self, data): - if data not in self.choices and data != self.value: + """Parse and validate ``data`` and store the result at ``self.value`` + """ + if data not in self.choices and data != self.value: # pylint: disable=no-member # hack to give some backwards compatibility with old language cookies data = str(data).replace('_', '-') lang = data.split('-')[0] + # pylint: disable=no-member if data in self.choices: pass elif lang in self.choices: @@ -157,16 +195,21 @@ class MapSetting(Setting): def _post_init(self): if not hasattr(self, 'map'): raise MissingArgumentException('missing argument: map') - if self.value not in self.map.values(): + if self.value not in self.map.values(): # pylint: disable=no-member raise ValidationException('Invalid default value') def parse(self, data): + """Parse and validate ``data`` and store the result at ``self.value`` + """ + # pylint: disable=no-member if data not in self.map: raise ValidationException('Invalid choice: {0}'.format(data)) self.value = self.map[data] - self.key = data + self.key = data # pylint: disable=attribute-defined-outside-init def save(self, name, resp): + """Save cookie ``name`` in the HTTP reponse obect + """ if hasattr(self, 'key'): resp.set_cookie(name, self.key, max_age=COOKIE_MAX_AGE) @@ -180,24 +223,26 @@ class SwitchableSetting(Setting): if not hasattr(self, 'choices'): raise MissingArgumentException('missing argument: choices') - def transform_form_items(self, items): + def transform_form_items(self, items): # pylint: disable=missing-function-docstring + # pylint: disable=no-self-use return items - def transform_values(self, values): + def transform_values(self, values): # pylint: disable=missing-function-docstring + # pylint: disable=no-self-use return values - def parse_cookie(self, data): + def parse_cookie(self, data): # pylint: disable=missing-function-docstring + # pylint: disable=attribute-defined-outside-init if data[DISABLED] != '': self.disabled = set(data[DISABLED].split(',')) if data[ENABLED] != '': self.enabled = set(data[ENABLED].split(',')) - def parse_form(self, items): + def parse_form(self, items): # pylint: disable=missing-function-docstring items = self.transform_form_items(items) - - self.disabled = set() - self.enabled = set() - for choice in self.choices: + self.disabled = set() # pylint: disable=attribute-defined-outside-init + self.enabled = set() # pylint: disable=attribute-defined-outside-init + for choice in self.choices: # pylint: disable=no-member if choice['default_on']: if choice['id'] in items: self.disabled.add(choice['id']) @@ -205,31 +250,34 @@ class SwitchableSetting(Setting): if choice['id'] not in items: self.enabled.add(choice['id']) - def save(self, resp): + def save(self, resp): # pylint: disable=arguments-differ + """Save cookie in the HTTP reponse obect + """ resp.set_cookie('disabled_{0}'.format(self.value), ','.join(self.disabled), max_age=COOKIE_MAX_AGE) resp.set_cookie('enabled_{0}'.format(self.value), ','.join(self.enabled), max_age=COOKIE_MAX_AGE) - def get_disabled(self): + def get_disabled(self): # pylint: disable=missing-function-docstring disabled = self.disabled - for choice in self.choices: + for choice in self.choices: # pylint: disable=no-member if not choice['default_on'] and choice['id'] not in self.enabled: disabled.add(choice['id']) return self.transform_values(disabled) - def get_enabled(self): + def get_enabled(self): # pylint: disable=missing-function-docstring enabled = self.enabled - for choice in self.choices: + for choice in self.choices: # pylint: disable=no-member if choice['default_on'] and choice['id'] not in self.disabled: enabled.add(choice['id']) return self.transform_values(enabled) class EnginesSetting(SwitchableSetting): + """Engine settings""" def _post_init(self): super(EnginesSetting, self)._post_init() transformed_choices = [] - for engine_name, engine in self.choices.items(): + for engine_name, engine in self.choices.items(): # pylint: disable=no-member,access-member-before-definition for category in engine.categories: transformed_choice = dict() transformed_choice['default_on'] = not engine.disabled @@ -251,11 +299,12 @@ class EnginesSetting(SwitchableSetting): class PluginsSetting(SwitchableSetting): + """Plugin settings""" def _post_init(self): super(PluginsSetting, self)._post_init() transformed_choices = [] - for plugin in self.choices: + for plugin in self.choices: # pylint: disable=access-member-before-definition transformed_choice = dict() transformed_choice['default_on'] = plugin.default_on transformed_choice['id'] = plugin.id @@ -272,33 +321,56 @@ class Preferences(object): def __init__(self, themes, categories, engines, plugins): super(Preferences, self).__init__() - self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories + ['none']), - 'language': SearchLanguageSetting(settings['search']['default_lang'], - choices=list(LANGUAGE_CODES) + ['']), - 'locale': EnumStringSetting(settings['ui']['default_locale'], - choices=list(settings['locales'].keys()) + ['']), - 'autocomplete': EnumStringSetting(settings['search']['autocomplete'], - choices=list(autocomplete.backends.keys()) + ['']), - 'image_proxy': MapSetting(settings['server']['image_proxy'], - map={'': settings['server']['image_proxy'], - '0': False, - '1': True, - 'True': True, - 'False': False}), - 'method': EnumStringSetting('POST', choices=('GET', 'POST')), - 'safesearch': MapSetting(settings['search']['safe_search'], map={'0': 0, - '1': 1, - '2': 2}), - 'theme': EnumStringSetting(settings['ui']['default_theme'], choices=themes), - 'results_on_new_tab': MapSetting(False, map={'0': False, - '1': True, - 'False': False, - 'True': True}), - 'doi_resolver': MultipleChoiceSetting(['oadoi.org'], choices=DOI_RESOLVERS), - 'oscar-style': EnumStringSetting( - settings['ui'].get('theme_args', {}).get('oscar_style', 'logicodev'), - choices=['', 'logicodev', 'logicodev-dark', 'pointhi']), - } + self.key_value_settings = { + 'categories': MultipleChoiceSetting( + ['general'], choices=categories + ['none'] + ), + 'language': SearchLanguageSetting( + settings['search']['default_lang'], + choices=list(LANGUAGE_CODES) + [''] + ), + 'locale': EnumStringSetting( + settings['ui']['default_locale'], + choices=list(settings['locales'].keys()) + [''] + ), + 'autocomplete': EnumStringSetting( + settings['search']['autocomplete'], + choices=list(autocomplete.backends.keys()) + [''] + ), + 'image_proxy': MapSetting( + settings['server']['image_proxy'], + map={ '': settings['server']['image_proxy'], + '0': False, + '1': True, + 'True': True, + 'False': False} + ), + 'method': EnumStringSetting( + 'POST', + choices=('GET', 'POST') + ), + 'safesearch': MapSetting( + settings['search']['safe_search'], + map={'0': 0, + '1': 1, + '2': 2}), + 'theme': EnumStringSetting( + settings['ui']['default_theme'], + choices=themes + ), + 'results_on_new_tab': MapSetting( + False, + map ={'0': False, '1': True, + 'False': False, + 'True': True} + ), + 'doi_resolver': MultipleChoiceSetting( + ['oadoi.org'], choices=DOI_RESOLVERS + ), + 'oscar-style': EnumStringSetting( + settings['ui'].get('theme_args', {}).get('oscar_style', 'logicodev'), + choices=['', 'logicodev', 'logicodev-dark', 'pointhi']), + } self.engines = EnginesSetting('engines', choices=engines) self.plugins = PluginsSetting('plugins', choices=plugins) @@ -306,6 +378,7 @@ class Preferences(object): self.unknown_params = {} def get_as_url_params(self): + """Return preferences as URL parameters""" settings_kv = {} for k, v in self.key_value_settings.items(): if isinstance(v, MultipleChoiceSetting): @@ -324,6 +397,7 @@ class Preferences(object): return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8') def parse_encoded_data(self, input_data): + """parse (base64) preferences from request (``flask.request.form['preferences']``)""" decoded_data = decompress(urlsafe_b64decode(input_data.encode('utf-8'))) dict_data = {} for x, y in parse_qs(decoded_data).items(): @@ -331,6 +405,7 @@ class Preferences(object): self.parse_dict(dict_data) def parse_dict(self, input_data): + """parse preferences from request (``flask.request.form``)""" for user_setting_name, user_setting in input_data.items(): if user_setting_name in self.key_value_settings: self.key_value_settings[user_setting_name].parse(user_setting) @@ -351,6 +426,7 @@ class Preferences(object): self.unknown_params[user_setting_name] = user_setting def parse_form(self, input_data): + """Parse formular (``<input>``) data from a ``flask.request.form``""" disabled_engines = [] enabled_categories = [] disabled_plugins = [] @@ -373,12 +449,18 @@ class Preferences(object): # cannot be used in case of engines or plugins def get_value(self, user_setting_name): + """Returns the value for ``user_setting_name`` + """ + ret_val = None if user_setting_name in self.key_value_settings: - return self.key_value_settings[user_setting_name].get_value() + ret_val = self.key_value_settings[user_setting_name].get_value() if user_setting_name in self.unknown_params: - return self.unknown_params[user_setting_name] + ret_val = self.unknown_params[user_setting_name] + return ret_val def save(self, resp): + """Save cookie in the HTTP reponse obect + """ for user_setting_name, user_setting in self.key_value_settings.items(): user_setting.save(user_setting_name, resp) self.engines.save(resp) @@ -388,7 +470,7 @@ class Preferences(object): resp.set_cookie(k, v, max_age=COOKIE_MAX_AGE) return resp - def validate_token(self, engine): + def validate_token(self, engine): # pylint: disable=missing-function-docstring valid = True if hasattr(engine, 'tokens') and engine.tokens: valid = False From 1cae4fa88da1cfad6f953b0ebc170946f3af6c89 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 23 Feb 2020 20:56:05 +0100 Subject: [PATCH 161/238] preferences.py: implement defaults if unset Implemnts defaults for: - search.default_lang, search.autocomplete, search.safe_search, - ui.default_theme, ui.default_locale - server.image_proxy This fixes also: https://github.com/asciimoo/searx/pull/1860#issuecomment-590082955 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/preferences.py | 42 ++++++++++++++++++++++++---------------- searx/settings_robot.yml | 4 ---- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/searx/preferences.py b/searx/preferences.py index b0f8887c..f70aee37 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -326,43 +326,51 @@ class Preferences(object): ['general'], choices=categories + ['none'] ), 'language': SearchLanguageSetting( - settings['search']['default_lang'], + settings['search'].get('default_lang', ''), choices=list(LANGUAGE_CODES) + [''] ), 'locale': EnumStringSetting( - settings['ui']['default_locale'], + settings['ui'].get('default_locale', ''), choices=list(settings['locales'].keys()) + [''] ), 'autocomplete': EnumStringSetting( - settings['search']['autocomplete'], + settings['search'].get('autocomplete', ''), choices=list(autocomplete.backends.keys()) + [''] ), 'image_proxy': MapSetting( - settings['server']['image_proxy'], - map={ '': settings['server']['image_proxy'], - '0': False, - '1': True, - 'True': True, - 'False': False} + settings['server'].get('image_proxy', False), + map={ + '': settings['server'].get('image_proxy', 0), + '0': False, + '1': True, + 'True': True, + 'False': False + } ), 'method': EnumStringSetting( 'POST', choices=('GET', 'POST') ), 'safesearch': MapSetting( - settings['search']['safe_search'], - map={'0': 0, - '1': 1, - '2': 2}), + settings['search'].get('safe_search', 0), + map={ + '0': 0, + '1': 1, + '2': 2 + } + ), 'theme': EnumStringSetting( - settings['ui']['default_theme'], + settings['ui'].get('default_theme', 'oscar'), choices=themes ), 'results_on_new_tab': MapSetting( False, - map ={'0': False, '1': True, - 'False': False, - 'True': True} + map={ + '0': False, + '1': True, + 'False': False, + 'True': True + } ), 'doi_resolver': MultipleChoiceSetting( ['oadoi.org'], choices=DOI_RESOLVERS diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml index 25f229e5..33e76268 100644 --- a/searx/settings_robot.yml +++ b/searx/settings_robot.yml @@ -3,8 +3,6 @@ general: instance_name : "searx_test" search: - safe_search : 0 - autocomplete : "" language: "all" server: @@ -12,14 +10,12 @@ server: bind_address : 127.0.0.1 secret_key : "ultrasecretkey" # change this! base_url : False - image_proxy : False http_protocol_version : "1.0" ui: static_path : "" templates_path : "" default_theme : oscar - default_locale : "" outgoing: request_timeout : 1.0 # seconds From 4a94b4cca6e609856cf717dfae5d7ea4a1df0469 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 23 Feb 2020 22:51:07 +0100 Subject: [PATCH 162/238] searx/testing.py: pylint & SPDX tag (no functional change) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 1 + searx/testing.py | 20 +++++++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 0fc7f996..85f9760d 100644 --- a/Makefile +++ b/Makefile @@ -77,6 +77,7 @@ test: test.pylint test.pep8 test.unit test.robot # TODO: balance linting with pylint test.pylint: pylint-exe $(call cmd,pylint,searx/preferences.py) + $(call cmd,pylint,searx/testing.py) test.pep8: pyenvinstall $(PY_ENV_ACT); ./manage.sh pep8_check diff --git a/searx/testing.py b/searx/testing.py index a3616dc1..8931c6a8 100644 --- a/searx/testing.py +++ b/searx/testing.py @@ -1,37 +1,38 @@ # -*- coding: utf-8 -*- +# SPDX-License-Identifier: AGPL-3.0-or-later """Shared testing code.""" +# pylint: disable=missing-function-docstring import os import subprocess import traceback -from os.path import dirname, join, abspath +from os.path import dirname, join, abspath, realpath from splinter import Browser from unittest2 import TestCase - class SearxTestLayer: """Base layer for non-robot tests.""" __name__ = u'SearxTestLayer' + @classmethod def setUp(cls): pass - setUp = classmethod(setUp) + @classmethod def tearDown(cls): pass - tearDown = classmethod(tearDown) + @classmethod def testSetUp(cls): pass - testSetUp = classmethod(testSetUp) + @classmethod def testTearDown(cls): pass - testTearDown = classmethod(testTearDown) class SearxRobotLayer(): @@ -41,10 +42,7 @@ class SearxRobotLayer(): os.setpgrp() # create new process group, become its leader # get program paths - webapp = os.path.join( - os.path.abspath(os.path.dirname(os.path.realpath(__file__))), - 'webapp.py' - ) + webapp = join(abspath(dirname(realpath(__file__))), 'webapp.py') exe = 'python' # set robot settings path @@ -105,7 +103,7 @@ if __name__ == '__main__': try: test_layer.setUp() run_robot_tests([getattr(robot, x) for x in dir(robot) if x.startswith('test_')]) - except Exception: + except Exception: # pylint: disable=broad-except errors = True print('Error occured: {0}'.format(traceback.format_exc())) test_layer.tearDown() From 81f106e5de58c40d5ee9dd3232ab2244ea4103cd Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 23 Feb 2020 23:03:05 +0100 Subject: [PATCH 163/238] searx/testing.py: bugfix process model (do not use Flask's debug mode) Don't enable Flask's debug mode, the debugger from Flask will cause a wired process model, where the server never dies. Further read: - debug mode: https://flask.palletsprojects.com/quickstart/#debug-mode - Flask.run(..): https://flask.palletsprojects.com/api/#flask.Flask.run closes: https://github.com/asciimoo/searx/issues/1862 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/testing.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/searx/testing.py b/searx/testing.py index 8931c6a8..716e203c 100644 --- a/searx/testing.py +++ b/searx/testing.py @@ -45,8 +45,16 @@ class SearxRobotLayer(): webapp = join(abspath(dirname(realpath(__file__))), 'webapp.py') exe = 'python' + # The Flask app is started by Flask.run(...), don't enable Flask's debug + # mode, the debugger from Flask will cause wired process model, where + # the server never dies. Further read: + # + # - debug mode: https://flask.palletsprojects.com/quickstart/#debug-mode + # - Flask.run(..): https://flask.palletsprojects.com/api/#flask.Flask.run + + os.environ['SEARX_DEBUG'] = '0' + # set robot settings path - os.environ['SEARX_DEBUG'] = '1' os.environ['SEARX_SETTINGS_PATH'] = abspath( dirname(__file__) + '/settings_robot.yml') From 51e78211de5b1fcec818be089631e778bd136fc9 Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin <marc-abonce@mailbox.org> Date: Sun, 23 Feb 2020 21:46:26 -0700 Subject: [PATCH 164/238] monkey patch babel get_translations to support Occitan --- searx/webapp.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/searx/webapp.py b/searx/webapp.py index 8712cc3c..b661e39d 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -45,6 +45,7 @@ try: from cgi import escape except: from html import escape +from six import next from datetime import datetime, timedelta from time import time from werkzeug.middleware.proxy_fix import ProxyFix @@ -52,6 +53,8 @@ from flask import ( Flask, request, render_template, url_for, Response, make_response, redirect, send_from_directory ) +from babel.support import Translations +import flask_babel from flask_babel import Babel, gettext, format_date, format_decimal from flask.json import jsonify from searx import settings, searx_dir, searx_debug @@ -156,6 +159,22 @@ _category_names = (gettext('files'), outgoing_proxies = settings['outgoing'].get('proxies') or None +_flask_babel_get_translations = flask_babel.get_translations + + +# monkey patch for flask_babel.get_translations +def _get_translations(): + translation_locale = request.form.get('use-translation') + if translation_locale: + babel_ext = flask_babel.current_app.extensions['babel'] + translation = Translations.load(next(babel_ext.translation_directories), 'oc') + else: + translation = _flask_babel_get_translations() + return translation + + +flask_babel.get_translations = _get_translations + def _get_browser_language(request, lang_list): for lang in request.headers.get("Accept-Language", "en").split(","): @@ -180,6 +199,10 @@ def get_locale(): if locale == 'zh_TW': locale = 'zh_Hant_TW' + if locale == 'oc': + request.form['use-translation'] = 'oc' + locale = 'fr_FR' + logger.debug("selected locale is `%s`", locale) return locale From aa95a0d70b57fe0dc0ba26b6511185e5629cbde2 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 24 Feb 2020 07:55:14 +0100 Subject: [PATCH 165/238] searx/testing.py: fixed pep8 error Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/testing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/searx/testing.py b/searx/testing.py index 716e203c..f0e303e1 100644 --- a/searx/testing.py +++ b/searx/testing.py @@ -13,6 +13,7 @@ from os.path import dirname, join, abspath, realpath from splinter import Browser from unittest2 import TestCase + class SearxTestLayer: """Base layer for non-robot tests.""" From 700574357ac1ee475be042b88aa5a8816f7793ba Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 24 Feb 2020 08:14:09 +0100 Subject: [PATCH 166/238] make test: bugfix, pyenvinstall is a prerequisite for the pylint test Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 85f9760d..85f549d8 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,7 @@ PHONY += test test.pylint test.pep8 test.unit test.robot test: test.pylint test.pep8 test.unit test.robot # TODO: balance linting with pylint -test.pylint: pylint-exe +test.pylint: pyenvinstall $(call cmd,pylint,searx/preferences.py) $(call cmd,pylint,searx/testing.py) From c89c05bcebb44699c94d6da2fcb8ad376b60fe67 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Tue, 25 Feb 2020 18:44:28 +0100 Subject: [PATCH 167/238] bugfix: google-news and bing-news has changed the language parameter closes: https://github.com/asciimoo/searx/issues/1838 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/engines/bing_news.py | 3 ++- searx/engines/google_news.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py index 669130c4..827555bd 100644 --- a/searx/engines/bing_news.py +++ b/searx/engines/bing_news.py @@ -58,8 +58,9 @@ def _get_url(query, language, offset, time_range): offset=offset, interval=time_range_dict[time_range]) else: + # e.g. setmkt=de-de&setlang=de search_path = search_string.format( - query=urlencode({'q': query, 'setmkt': language}), + query=urlencode({'q': query, 'setlang': language}), offset=offset) return base_url + search_path diff --git a/searx/engines/google_news.py b/searx/engines/google_news.py index 9c837b45..c9cc7543 100644 --- a/searx/engines/google_news.py +++ b/searx/engines/google_news.py @@ -54,7 +54,7 @@ def request(query, params): if params['language'] != 'all': language = match_language(params['language'], supported_languages, language_aliases).split('-')[0] if language: - params['url'] += '&lr=lang_' + language + params['url'] += '&hl=' + language return params From 2f6f9665a9fc6a1464ab07cb4ec848e2d28ee700 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sat, 29 Feb 2020 17:01:11 +0100 Subject: [PATCH 168/238] requirements-dev.txt: add missing pylint for liniting tests Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- requirements-dev.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-dev.txt b/requirements-dev.txt index 3e8f617a..eed7ec3d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,6 +5,7 @@ mock==2.0.0 nose2[coverage_plugin] cov-core==1.15.0 pep8==1.7.0 +pylint plone.testing==5.0.0 splinter==0.11.0 transifex-client==0.12.2 From 40843fe95ada52bc8791b4706392bda5afecf32e Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 1 Mar 2020 07:56:46 +0100 Subject: [PATCH 169/238] searx/data/engines_languages.json: sort json file (no content change) To get meaningfull diffs, the json file has to be sorted. Before applying any further content patch, the json file needs a inital sort (without changing any content). Sorted by:: import sys, json with open('engines_languages.json') as f: j = json.load(f) with open('engines_languages.json', 'w') as f: json.dump(j, f, indent=2, sort_keys=True) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 13 + searx/data/engines_languages.json | 54964 ++++++++++++++-------------- utils/fetch_languages.py | 23 +- 3 files changed, 27508 insertions(+), 27492 deletions(-) diff --git a/Makefile b/Makefile index 85f549d8..5a47129e 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,7 @@ help: @echo ' uninstall - uninstall (./local)' @echo ' gh-pages - build docs & deploy on gh-pages branch' @echo ' clean - drop builds and environments' + @echo ' project - re-build generic files of the searx project' @echo '' @$(MAKE) -s -f utils/makefile.include make-help @echo '' @@ -67,6 +68,18 @@ docs-live: pyenvinstall sphinx-live $(GH_PAGES):: @echo "doc available at --> $(DOCS_URL)" +# update project files +# -------------------- + +PHONY += project engines-languages + +project: searx/data/engines_languages.json + +searx/data/engines_languages.json: pyenvinstall + $(PY_ENV_ACT); python utils/fetch_languages.py + mv engines_languages.json searx/data/engines_languages.json + mv languages.py searx/languages.py + # test # ---- diff --git a/searx/data/engines_languages.json b/searx/data/engines_languages.json index 2c9e64e8..55beed76 100644 --- a/searx/data/engines_languages.json +++ b/searx/data/engines_languages.json @@ -1,27489 +1,27489 @@ { - "qwant news": [ - "bg-BG", - "br-FR", - "ca-AD", - "ca-ES", - "ca-FR", - "co-FR", - "cs-CZ", - "cy-GB", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-GB", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "es-AD", - "es-AR", - "es-CL", - "es-ES", - "es-MX", - "et-EE", - "eu-ES", - "eu-FR", - "fi-FI", - "fr-AD", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "gd-GB", - "he-IL", - "hu-HU", - "it-CH", - "it-IT", - "ja-JP", - "ko-KR", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-AD", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sv-SE", - "th-TH", - "tr-TR" - ], - "qwant social": [ - "bg-BG", - "br-FR", - "ca-AD", - "ca-ES", - "ca-FR", - "co-FR", - "cs-CZ", - "cy-GB", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-GB", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "es-AD", - "es-AR", - "es-CL", - "es-ES", - "es-MX", - "et-EE", - "eu-ES", - "eu-FR", - "fi-FI", - "fr-AD", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "gd-GB", - "he-IL", - "hu-HU", - "it-CH", - "it-IT", - "ja-JP", - "ko-KR", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-AD", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sv-SE", - "th-TH", - "tr-TR" - ], - "duckduckgo": [ - "ar-XA", - "bg-BG", - "ca-CT", - "ca-ES", - "cs-CZ", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-ID", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-UK", - "en-US", - "en-ZA", - "es-AR", - "es-CL", - "es-CO", - "es-ES", - "es-MX", - "es-PE", - "es-US", - "et-EE", - "fi-FI", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "he-IL", - "hr-HR", - "hu-HU", - "id-ID", - "it-CH", - "it-IT", - "jp-JP", - "kr-KR", - "lt-LT", - "lv-LV", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sk-SK", - "sl-SL", - "sv-SE", - "th-TH", - "tl-PH", - "tr-TR", - "tzh-HK", - "tzh-TW", - "vi-VN", - "wt-WT", - "zh-CN" - ], - "ddg definitions": [ - "ar-XA", - "bg-BG", - "ca-CT", - "ca-ES", - "cs-CZ", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-ID", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-UK", - "en-US", - "en-ZA", - "es-AR", - "es-CL", - "es-CO", - "es-ES", - "es-MX", - "es-PE", - "es-US", - "et-EE", - "fi-FI", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "he-IL", - "hr-HR", - "hu-HU", - "id-ID", - "it-CH", - "it-IT", - "jp-JP", - "kr-KR", - "lt-LT", - "lv-LV", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sk-SK", - "sl-SL", - "sv-SE", - "th-TH", - "tl-PH", - "tr-TR", - "tzh-HK", - "tzh-TW", - "vi-VN", - "wt-WT", - "zh-CN" - ], - "bing": [ - "ar", - "bg", - "ca", - "cs", - "da", - "de", - "el", - "en", - "es", - "et", - "fa", - "fi", - "fr", - "he", - "hr", - "hu", - "id", - "is", - "it", - "ja", - "ko", - "lt", - "lv", - "ms", - "nl", - "no", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sk", - "sl", - "sq", - "sr", - "sv", - "th", - "tr", - "uk", - "vi", - "zh-CHS", - "zh-CHT" - ], - "bing videos": [ - "ar-AE", - "ar-EG", - "ar-SA", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "en-AU", - "en-CA", - "en-GB", - "en-ID", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "en-ZA", - "es-AR", - "es-CL", - "es-ES", - "es-MX", - "es-US", - "fi-FI", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "it-IT", - "ja-JP", - "ko-KR", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-BR", - "pt-PT", - "ru-RU", - "sv-SE", - "tr-TR", - "zh-CN", - "zh-HK", - "zh-TW" - ], - "qwant": [ - "bg-BG", - "br-FR", - "ca-AD", - "ca-ES", - "ca-FR", - "co-FR", - "cs-CZ", - "cy-GB", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-GB", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "es-AD", - "es-AR", - "es-CL", - "es-ES", - "es-MX", - "et-EE", - "eu-ES", - "eu-FR", - "fi-FI", - "fr-AD", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "gd-GB", - "he-IL", - "hu-HU", - "it-CH", - "it-IT", - "ja-JP", - "ko-KR", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-AD", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sv-SE", - "th-TH", - "tr-TR" - ], - "gigablast": [], - "google news": { - "nl": { - "name": "Nederlands" - }, - "eo": { - "name": "Esperanto" - }, - "ko": { - "name": "한국어" - }, - "id": { - "name": "Indonesia" - }, - "ca": { - "name": "Català" - }, - "ar": { - "name": "العربية" - }, - "sl": { - "name": "Slovenščina" - }, - "sr": { - "name": "Српски" - }, - "sv": { - "name": "Svenska" - }, - "be": { - "name": "Беларуская" - }, - "et": { - "name": "Eesti" - }, - "sw": { - "name": "Kiswahili" - }, - "is": { - "name": "Íslenska" - }, - "it": { - "name": "Italiano" - }, - "hi": { - "name": "हिन्दी" - }, - "pl": { - "name": "Polski" - }, - "el": { - "name": "Ελληνικά" - }, - "hu": { - "name": "Magyar" - }, - "fr": { - "name": "Français" - }, - "th": { - "name": "ไทย" - }, - "tl": { - "name": "Filipino" - }, - "de": { - "name": "Deutsch" - }, - "ru": { - "name": "Русский" - }, - "sk": { - "name": "Slovenčina" - }, - "lt": { - "name": "Lietuvių" - }, - "vi": { - "name": "Tiếng Việt" - }, - "uk": { - "name": "Українська" - }, - "pt": { - "name": "Português" - }, - "zh-TW": { - "name": "中文 (繁體)" - }, - "cs": { - "name": "Čeština" - }, - "fa": { - "name": "فارسی" - }, - "af": { - "name": "Afrikaans" - }, - "hy": { - "name": "Հայերեն" - }, - "bg": { - "name": "Български" - }, - "hr": { - "name": "Hrvatski" - }, - "en": { - "name": "English" - }, - "tr": { - "name": "Türkçe" - }, - "lv": { - "name": "Latviešu" - }, - "ro": { - "name": "Română" - }, - "zh-CN": { - "name": "中文 (简体)" - }, - "ja": { - "name": "日本語" - }, - "iw": { - "name": "עברית" - }, - "es": { - "name": "Español" - }, - "fi": { - "name": "Suomi" - }, - "no": { - "name": "Norsk" - }, - "da": { - "name": "Dansk" - } + "bing": [ + "ar", + "bg", + "ca", + "cs", + "da", + "de", + "el", + "en", + "es", + "et", + "fa", + "fi", + "fr", + "he", + "hr", + "hu", + "id", + "is", + "it", + "ja", + "ko", + "lt", + "lv", + "ms", + "nl", + "no", + "pl", + "pt-BR", + "pt-PT", + "ro", + "ru", + "sk", + "sl", + "sq", + "sr", + "sv", + "th", + "tr", + "uk", + "vi", + "zh-CHS", + "zh-CHT" + ], + "bing images": [ + "ar-AE", + "ar-EG", + "ar-SA", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "en-AU", + "en-CA", + "en-GB", + "en-ID", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-US", + "en-ZA", + "es-AR", + "es-CL", + "es-ES", + "es-MX", + "es-US", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "it-IT", + "ja-JP", + "ko-KR", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-BR", + "pt-PT", + "ru-RU", + "sv-SE", + "tr-TR", + "zh-CN", + "zh-HK", + "zh-TW" + ], + "bing news": [ + "ar", + "bg", + "ca", + "cs", + "da", + "de", + "el", + "en", + "es", + "et", + "fa", + "fi", + "fr", + "he", + "hr", + "hu", + "id", + "is", + "it", + "ja", + "ko", + "lt", + "lv", + "ms", + "nl", + "no", + "pl", + "pt-BR", + "pt-PT", + "ro", + "ru", + "sk", + "sl", + "sq", + "sr", + "sv", + "th", + "tr", + "uk", + "vi", + "zh-CHS", + "zh-CHT" + ], + "bing videos": [ + "ar-AE", + "ar-EG", + "ar-SA", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "en-AU", + "en-CA", + "en-GB", + "en-ID", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-US", + "en-ZA", + "es-AR", + "es-CL", + "es-ES", + "es-MX", + "es-US", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "it-IT", + "ja-JP", + "ko-KR", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-BR", + "pt-PT", + "ru-RU", + "sv-SE", + "tr-TR", + "zh-CN", + "zh-HK", + "zh-TW" + ], + "dailymotion": { + "aa": { + "english_name": "Afar" }, - "duckduckgo images": [ - "ar-XA", - "bg-BG", - "ca-CT", - "ca-ES", - "cs-CZ", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-ID", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-UK", - "en-US", - "en-ZA", - "es-AR", - "es-CL", - "es-CO", - "es-ES", - "es-MX", - "es-PE", - "es-US", - "et-EE", - "fi-FI", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "he-IL", - "hr-HR", - "hu-HU", - "id-ID", - "it-CH", - "it-IT", - "jp-JP", - "kr-KR", - "lt-LT", - "lv-LV", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sk-SK", - "sl-SL", - "sv-SE", - "th-TH", - "tl-PH", - "tr-TR", - "tzh-HK", - "tzh-TW", - "vi-VN", - "wt-WT", - "zh-CN" - ], - "bing images": [ - "ar-AE", - "ar-EG", - "ar-SA", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "en-AU", - "en-CA", - "en-GB", - "en-ID", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "en-ZA", - "es-AR", - "es-CL", - "es-ES", - "es-MX", - "es-US", - "fi-FI", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "it-IT", - "ja-JP", - "ko-KR", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-BR", - "pt-PT", - "ru-RU", - "sv-SE", - "tr-TR", - "zh-CN", - "zh-HK", - "zh-TW" - ], - "bing news": [ - "ar", - "bg", - "ca", - "cs", - "da", - "de", - "el", - "en", - "es", - "et", - "fa", - "fi", - "fr", - "he", - "hr", - "hu", - "id", - "is", - "it", - "ja", - "ko", - "lt", - "lv", - "ms", - "nl", - "no", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sk", - "sl", - "sq", - "sr", - "sv", - "th", - "tr", - "uk", - "vi", - "zh-CHS", - "zh-CHT" - ], - "dailymotion": { - "fag": { - "english_name": "Finongan" - }, - "mpd": { - "english_name": "Machinere" - }, - "bzx": { - "english_name": "Bozo, Kɛlɛngaxo" - }, - "kpc": { - "english_name": "Curripaco" - }, - "sll": { - "english_name": "Salt-Yui" - }, - "bop": { - "english_name": "Bonkiman" - }, - "mlz": { - "english_name": "Malaynon" - }, - "gnw": { - "english_name": "Guaraní, Western Bolivian" - }, - "sbc": { - "english_name": "Kele (Papua New Guinea)" - }, - "pbc": { - "english_name": "Patamona" - }, - "xkw": { - "english_name": "Kembra" - }, - "bec": { - "english_name": "Iceve-Maci" - }, - "tlg": { - "english_name": "Tofanma" - }, - "ges": { - "english_name": "Geser-Gorom" - }, - "mxh": { - "english_name": "Mvuba" - }, - "wos": { - "english_name": "Hanga Hundi" - }, - "mrf": { - "english_name": "Elseng" - }, - "tdr": { - "english_name": "Todrah" - }, - "dos": { - "english_name": "Dogosé" - }, - "lah": { - "english_name": "Lahnda" - }, - "qxa": { - "english_name": "Quechua, Chiquián Ancash" - }, - "kkv": { - "english_name": "Kangean" - }, - "ajt": { - "english_name": "Arabic, Judeo-Tunisian" - }, - "dof": { - "english_name": "Domu" - }, - "cll": { - "english_name": "Chala" - }, - "dta": { - "english_name": "Daur" - }, - "gji": { - "english_name": "Geji" - }, - "nmx": { - "english_name": "Nama (Papua New Guinea)" - }, - "tcl": { - "english_name": "Taman (Myanmar)" - }, - "kcc": { - "english_name": "Lubila" - }, - "tsl": { - "english_name": "Ts'ün-Lao" - }, - "abl": { - "english_name": "Lampung Nyo" - }, - "ply": { - "english_name": "Bolyu" - }, - "xor": { - "english_name": "Korubo" - }, - "tpc": { - "english_name": "Me'phaa, Azoyú" - }, - "ard": { - "english_name": "Arabana" - }, - "jen": { - "english_name": "Dza" - }, - "ofs": { - "english_name": "Frisian, Old" - }, - "bzz": { - "english_name": "Evant" - }, - "ts": { - "english_name": "Tsonga" - }, - "vin": { - "english_name": "Vinza" - }, - "blm": { - "english_name": "Beli (Sudan)" - }, - "mkc": { - "english_name": "Siliput" - }, - "utu": { - "english_name": "Utu" - }, - "xnt": { - "english_name": "Narragansett" - }, - "rue": { - "english_name": "Rusyn" - }, - "kaw": { - "english_name": "Kawi" - }, - "peo": { - "english_name": "Persian, Old (ca. 600-400 B.C.)" - }, - "gjn": { - "english_name": "Gonja" - }, - "ecy": { - "english_name": "Eteocypriot" - }, - "jdt": { - "english_name": "Judeo-Tat" - }, - "esl": { - "english_name": "Egypt Sign Language" - }, - "bti": { - "english_name": "Burate" - }, - "nev": { - "english_name": "Nyaheun" - }, - "omb": { - "english_name": "Ambae, East" - }, - "ks": { - "english_name": "Kashmiri" - }, - "gbg": { - "english_name": "Gbanziri" - }, - "bhp": { - "english_name": "Bima" - }, - "kpz": { - "english_name": "Kupsabiny" - }, - "zyg": { - "english_name": "Zhuang, Yang" - }, - "dsq": { - "english_name": "Tadaksahak" - }, - "pck": { - "english_name": "Chin, Paite" - }, - "wim": { - "english_name": "Wik-Mungkan" - }, - "tbc": { - "english_name": "Takia" - }, - "xcr": { - "english_name": "Carian" - }, - "ar": { - "english_name": "Arabic", - "name": "العربية" - }, - "vai": { - "english_name": "Vai" - }, - "gll": { - "english_name": "Garlali" - }, - "bmf": { - "english_name": "Bom" - }, - "abt": { - "english_name": "Ambulas" - }, - "mok": { - "english_name": "Morori" - }, - "buc": { - "english_name": "Bushi" - }, - "lbn": { - "english_name": "Lamet" - }, - "aoj": { - "english_name": "Mufian" - }, - "mpl": { - "english_name": "Watut, Middle" - }, - "unz": { - "english_name": "Kaili, Unde" - }, - "csl": { - "english_name": "Chinese Sign Language" - }, - "mby": { - "english_name": "Memoni" - }, - "maf": { - "english_name": "Mafa" - }, - "shn": { - "english_name": "Shan" - }, - "teo": { - "english_name": "Teso" - }, - "xts": { - "english_name": "Mixtec, Sindihui" - }, - "sms": { - "english_name": "Sami, Skolt" - }, - "kln": { - "english_name": "Kalenjin" - }, - "dij": { - "english_name": "Dai" - }, - "msu": { - "english_name": "Musom" - }, - "vi": { - "english_name": "Vietnamese", - "name": "Tiếng Việt" - }, - "kyk": { - "english_name": "Kamayo" - }, - "ngr": { - "english_name": "Engdewu" - }, - "klm": { - "english_name": "Migum" - }, - "igm": { - "english_name": "Kanggape" - }, - "bto": { - "english_name": "Bikol, Rinconada" - }, - "krm": { - "english_name": "Krim" - }, - "tii": { - "english_name": "Tiene" - }, - "dob": { - "english_name": "Dobu" - }, - "ttj": { - "english_name": "Tooro" - }, - "sjk": { - "english_name": "Sami, Kemi" - }, - "nrz": { - "english_name": "Lala" - }, - "zch": { - "english_name": "Zhuang, Central Hongshuihe" - }, - "aws": { - "english_name": "Awyu, South" - }, - "alo": { - "english_name": "Larike-Wakasihu" - }, - "plp": { - "english_name": "Palpa" - }, - "nwa": { - "english_name": "Nawathinehena" - }, - "aon": { - "english_name": "Arapesh, Bumbita" - }, - "tag": { - "english_name": "Tagoi" - }, - "dei": { - "english_name": "Demisa" - }, - "smk": { - "english_name": "Bolinao" - }, - "ndf": { - "english_name": "Nadruvian" - }, - "sly": { - "english_name": "Selayar" - }, - "twu": { - "english_name": "Termanu" - }, - "ags": { - "english_name": "Esimbi" - }, - "zyj": { - "english_name": "Zhuang, Youjiang" - }, - "xap": { - "english_name": "Apalachee" - }, - "imn": { - "english_name": "Imonda" - }, - "goj": { - "english_name": "Gowlan" - }, - "ikz": { - "english_name": "Ikizu" - }, - "miy": { - "english_name": "Mixtec, Ayutla" - }, - "iyo": { - "english_name": "Mesaka" - }, - "kdl": { - "english_name": "Tsikimba" - }, - "ptt": { - "english_name": "Enrekang" - }, - "ymq": { - "english_name": "Muji, Qila" - }, - "vaa": { - "english_name": "Vaagri Booli" - }, - "xcy": { - "english_name": "Cayuse" - }, - "pgg": { - "english_name": "Pangwali" - }, - "aly": { - "english_name": "Alyawarr" - }, - "bdt": { - "english_name": "Bokoto" - }, - "zkk": { - "english_name": "Karankawa" - }, - "mkj": { - "english_name": "Mokilese" - }, - "way": { - "english_name": "Wayana" - }, - "kxs": { - "english_name": "Kangjia" - }, - "sdk": { - "english_name": "Sos Kundi" - }, - "mne": { - "english_name": "Naba" - }, - "iry": { - "english_name": "Iraya" - }, - "ngp": { - "english_name": "Ngulu" - }, - "eke": { - "english_name": "Ekit" - }, - "mkr": { - "english_name": "Malas" - }, - "sxo": { - "english_name": "Sorothaptic" - }, - "auy": { - "english_name": "Awiyaana" - }, - "llc": { - "english_name": "Lele (Guinea)" - }, - "bcs": { - "english_name": "Kohumono" - }, - "aja": { - "english_name": "Aja (Sudan)" - }, - "kab": { - "english_name": "Kabyle" - }, - "mdv": { - "english_name": "Mixtec, Santa Lucía Monteverde" - }, - "vkj": { - "english_name": "Kujarge" - }, - "kad": { - "english_name": "Adara" - }, - "ymx": { - "english_name": "Muji, Northern" - }, - "aup": { - "english_name": "Makayam" - }, - "swo": { - "english_name": "Shanenawa" - }, - "plq": { - "english_name": "Palaic" - }, - "mph": { - "english_name": "Maung" - }, - "ksv": { - "english_name": "Kusu" - }, - "zkn": { - "english_name": "Kanan" - }, - "kcy": { - "english_name": "Korandje" - }, - "mzu": { - "english_name": "Inapang" - }, - "svm": { - "english_name": "Slavomolisano" - }, - "aos": { - "english_name": "Taikat" - }, - "cip": { - "english_name": "Chiapanec" - }, - "nsp": { - "english_name": "Nepalese Sign Language" - }, - "akd": { - "english_name": "Ukpet-Ehom" - }, - "wrd": { - "english_name": "Warduji" - }, - "zng": { - "english_name": "Mang" - }, - "obo": { - "english_name": "Manobo, Obo" - }, - "dwa": { - "english_name": "Diri" - }, - "vrt": { - "english_name": "Burmbar" - }, - "xem": { - "english_name": "Kembayan" - }, - "cpc": { - "english_name": "Ajyíninka Apurucayali" - }, - "sib": { - "english_name": "Sebop" - }, - "mff": { - "english_name": "Naki" - }, - "yes": { - "english_name": "Nyankpa" - }, - "txc": { - "english_name": "Tsetsaut" - }, - "cbl": { - "english_name": "Chin, Bualkhaw" - }, - "fi": { - "english_name": "Finnish", - "name": "suomi" - }, - "lgl": { - "english_name": "Wala" - }, - "etr": { - "english_name": "Edolo" - }, - "tyz": { - "english_name": "Tày" - }, - "aqd": { - "english_name": "Dogon, Ampari" - }, - "tja": { - "english_name": "Tajuasohn" - }, - "nnb": { - "english_name": "Nande" - }, - "ayo": { - "english_name": "Ayoreo" - }, - "ctp": { - "english_name": "Chatino, Western Highland" - }, - "knm": { - "english_name": "Kanamarí" - }, - "dgr": { - "english_name": "Dogrib" - }, - "bs": { - "english_name": "Bosnian", - "name": "Bosnian" - }, - "byv": { - "english_name": "Medumba" - }, - "kts": { - "english_name": "Muyu, South" - }, - "bpu": { - "english_name": "Bongu" - }, - "nen": { - "english_name": "Nengone" - }, - "sl": { - "english_name": "Slovenian", - "name": "slovenščina" - }, - "tmd": { - "english_name": "Haruai" - }, - "yrb": { - "english_name": "Yareba" - }, - "rie": { - "english_name": "Rien" - }, - "qu": { - "english_name": "Quechua" - }, - "dgh": { - "english_name": "Dghwede" - }, - "vmw": { - "english_name": "Makhuwa" - }, - "grx": { - "english_name": "Guriaso" - }, - "sar": { - "english_name": "Saraveca" - }, - "ztm": { - "english_name": "Zapotec, San Agustín Mixtepec" - }, - "boa": { - "english_name": "Bora" - }, - "xga": { - "english_name": "Galatian" - }, - "aas": { - "english_name": "Aasáx" - }, - "kif": { - "english_name": "Kham, Eastern Parbate" - }, - "bsw": { - "english_name": "Baiso" - }, - "drd": { - "english_name": "Darmiya" - }, - "twe": { - "english_name": "Tewa (Indonesia)" - }, - "abx": { - "english_name": "Inabaknon" - }, - "ntw": { - "english_name": "Nottoway" - }, - "lse": { - "english_name": "Lusengo" - }, - "xby": { - "english_name": "Batyala" - }, - "cjm": { - "english_name": "Cham, Eastern" - }, - "dgi": { - "english_name": "Dagara, Northern" - }, - "xps": { - "english_name": "Pisidian" - }, - "hlb": { - "english_name": "Halbi" - }, - "dnt": { - "english_name": "Dani, Mid Grand Valley" - }, - "bht": { - "english_name": "Bhattiyali" - }, - "mbz": { - "english_name": "Mixtec, Amoltepec" - }, - "gvp": { - "english_name": "Gavião, Pará" - }, - "cmr": { - "english_name": "Chin, Mro-Khimi" - }, - "qvl": { - "english_name": "Quechua, Cajatambo North Lima" - }, - "moy": { - "english_name": "Shekkacho" - }, - "smy": { - "english_name": "Semnani" - }, - "aqn": { - "english_name": "Alta, Northern" - }, - "syk": { - "english_name": "Sukur" - }, - "gdl": { - "english_name": "Dirasha" - }, - "doh": { - "english_name": "Dong" - }, - "jda": { - "english_name": "Jad" - }, - "mad": { - "english_name": "Madurese" - }, - "var": { - "english_name": "Huarijio" - }, - "trj": { - "english_name": "Toram" - }, - "tvy": { - "english_name": "Pidgin, Timor" - }, - "luy": { - "english_name": "Luyia" - }, - "ldi": { - "english_name": "Laari" - }, - "nlu": { - "english_name": "Nchumbulu" - }, - "klr": { - "english_name": "Khaling" - }, - "mfk": { - "english_name": "Mofu, North" - }, - "ksr": { - "english_name": "Borong" - }, - "akt": { - "english_name": "Akolet" - }, - "bkt": { - "english_name": "Boloki" - }, - "ruf": { - "english_name": "Luguru" - }, - "dka": { - "english_name": "Dakpakha" - }, - "bdw": { - "english_name": "Baham" - }, - "myl": { - "english_name": "Moma" - }, - "bda": { - "english_name": "Bayot" - }, - "bpr": { - "english_name": "Blaan, Koronadal" - }, - "ugn": { - "english_name": "Ugandan Sign Language" - }, - "mel": { - "english_name": "Melanau, Central" - }, - "kwo": { - "english_name": "Kwomtari" - }, - "bmd": { - "english_name": "Manduri, Baga" - }, - "rkw": { - "english_name": "Arakwal" - }, - "png": { - "english_name": "Pongu" - }, - "bzm": { - "english_name": "Bolondo" - }, - "sbw": { - "english_name": "Simba" - }, - "aqp": { - "english_name": "Atakapa" - }, - "sah": { - "english_name": "Yakut" - }, - "cps": { - "english_name": "Capiznon" - }, - "dze": { - "english_name": "Djiwarli" - }, - "srs": { - "english_name": "Sarsi" - }, - "anz": { - "english_name": "Anem" - }, - "skw": { - "english_name": "Creole Dutch, Skepi" - }, - "nut": { - "english_name": "Nung (Viet Nam)" - }, - "ngc": { - "english_name": "Ngombe (Democratic Republic of Congo)" - }, - "xrb": { - "english_name": "Karaboro, Eastern" - }, - "btm": { - "english_name": "Batak Mandailing" - }, - "poo": { - "english_name": "Pomo, Central" - }, - "tlb": { - "english_name": "Tobelo" - }, - "nil": { - "english_name": "Nila" - }, - "nns": { - "english_name": "Ningye" - }, - "skg": { - "english_name": "Malagasy, Sakalava" - }, - "sww": { - "english_name": "Sowa" - }, - "kyg": { - "english_name": "Keyagana" - }, - "hah": { - "english_name": "Hahon" - }, - "hii": { - "english_name": "Hinduri" - }, - "fui": { - "english_name": "Fulfulde, Bagirmi" - }, - "ahh": { - "english_name": "Aghu" - }, - "tec": { - "english_name": "Terik" - }, - "whu": { - "english_name": "Kayan, Wahau" - }, - "txt": { - "english_name": "Citak" - }, - "qug": { - "english_name": "Quichua, Chimborazo Highland" - }, - "bhg": { - "english_name": "Binandere" - }, - "xsn": { - "english_name": "Sanga (Nigeria)" - }, - "tbu": { - "english_name": "Tubar" - }, - "ysl": { - "english_name": "Yugoslavian Sign Language" - }, - "kfd": { - "english_name": "Koraga, Korra" - }, - "mt": { - "english_name": "Maltese", - "name": "Malti" - }, - "saq": { - "english_name": "Samburu" - }, - "stp": { - "english_name": "Tepehuan, Southeastern" - }, - "sbq": { - "english_name": "Sileibi" - }, - "tnb": { - "english_name": "Tunebo, Western" - }, - "aec": { - "english_name": "Arabic, Saidi" - }, - "tpg": { - "english_name": "Kula" - }, - "kjo": { - "english_name": "Kinnauri, Harijan" - }, - "leq": { - "english_name": "Lembena" - }, - "ktd": { - "english_name": "Kokata" - }, - "tad": { - "english_name": "Tause" - }, - "mtq": { - "english_name": "Muong" - }, - "tig": { - "english_name": "Tigre", - "name": "ትግረ" - }, - "ht": { - "english_name": "Haitian" - }, - "nkk": { - "english_name": "Nokuku" - }, - "blj": { - "english_name": "Bolongan" - }, - "tdo": { - "english_name": "Teme" - }, - "xmc": { - "english_name": "Makhuwa-Marrevone" - }, - "mbf": { - "english_name": "Malay, Baba" - }, - "aty": { - "english_name": "Aneityum" - }, - "grb": { - "english_name": "Grebo" - }, - "cwe": { - "english_name": "Kwere" - }, - "cfa": { - "english_name": "Dijim-Bwilim" - }, - "gig": { - "english_name": "Goaria" - }, - "mxn": { - "english_name": "Moi (Indonesia)" - }, - "zac": { - "english_name": "Zapotec, Ocotlán" - }, - "bny": { - "english_name": "Bintulu" - }, - "jeu": { - "english_name": "Jonkor Bourmataguil" - }, - "gnk": { - "english_name": "//Gana" - }, - "pfa": { - "english_name": "Pááfang" - }, - "bcq": { - "english_name": "Bench" - }, - "dbv": { - "english_name": "Dungu" - }, - "zhn": { - "english_name": "Zhuang, Nong" - }, - "hba": { - "english_name": "Hamba" - }, - "kte": { - "english_name": "Nubri" - }, - "fy": { - "english_name": "Frisian, Western" - }, - "nhi": { - "english_name": "Nahuatl, Zacatlán-Ahuacatlán-Tepetzintla" - }, - "okx": { - "english_name": "Okpe (Northwestern Edo)" - }, - "kwa": { - "english_name": "Dâw" - }, - "kjh": { - "english_name": "Khakas" - }, - "mr": { - "english_name": "Marathi", - "name": "मराठी" - }, - "ngz": { - "english_name": "Ngungwel" - }, - "gbi": { - "english_name": "Galela" - }, - "ubu": { - "english_name": "Umbu-Ungu" - }, - "bgn": { - "english_name": "Balochi, Western" - }, - "las": { - "english_name": "Lama (Togo)" - }, - "ojp": { - "english_name": "Japanese, Old" - }, - "asd": { - "english_name": "Asas" - }, - "nej": { - "english_name": "Neko" - }, - "ygr": { - "english_name": "Yagaria" - }, - "goz": { - "english_name": "Gozarkhani" - }, - "nat": { - "english_name": "Hungworo" - }, - "ymp": { - "english_name": "Yamap" - }, - "zaz": { - "english_name": "Zari" - }, - "yaz": { - "english_name": "Lokaa" - }, - "nd": { - "english_name": "Ndebele, North" - }, - "lkm": { - "english_name": "Kalaamaya" - }, - "brl": { - "english_name": "Birwa" - }, - "lbj": { - "english_name": "Ladakhi" - }, - "chk": { - "english_name": "Chuukese" - }, - "mva": { - "english_name": "Manam" - }, - "lvk": { - "english_name": "Lavukaleve" - }, - "hnj": { - "english_name": "Hmong Njua" - }, - "lko": { - "english_name": "Khayo" - }, - "mgi": { - "english_name": "Lijili" - }, - "cmo": { - "english_name": "Mnong, Central" - }, - "woa": { - "english_name": "Tyaraity" - }, - "eky": { - "english_name": "Kayah, Eastern" - }, - "yoy": { - "english_name": "Yoy" - }, - "bap": { - "english_name": "Bantawa" - }, - "auq": { - "english_name": "Anus" - }, - "sam": { - "english_name": "Aramaic, Samaritan" - }, - "nhm": { - "english_name": "Nahuatl, Morelos" - }, - "agb": { - "english_name": "Legbo" - }, - "dag": { - "english_name": "Dagbani" - }, - "sep": { - "english_name": "Sénoufo, Sìcìté" - }, - "kbm": { - "english_name": "Iwal" - }, - "tqw": { - "english_name": "Tonkawa" - }, - "cwb": { - "english_name": "Maindo" - }, - "ba": { - "english_name": "Bashkir" - }, - "nht": { - "english_name": "Nahuatl, Ometepec" - }, - "kfo": { - "english_name": "Koro (Côte d'Ivoire)" - }, - "hol": { - "english_name": "Holu" - }, - "bqi": { - "english_name": "Bakhtiari" - }, - "ggn": { - "english_name": "Gurung, Eastern" - }, - "mvm": { - "english_name": "Muya" - }, - "shq": { - "english_name": "Sala" - }, - "tom": { - "english_name": "Tombulu" - }, - "bsp": { - "english_name": "Baga Sitemu" - }, - "dau": { - "english_name": "Daju, Dar Sila" - }, - "trw": { - "english_name": "Torwali" - }, - "car": { - "english_name": "Carib, Galibi" - }, - "xpr": { - "english_name": "Parthian" - }, - "tmp": { - "english_name": "Tai Mène" - }, - "bkw": { - "english_name": "Bekwel" - }, - "wll": { - "english_name": "Wali (Sudan)" - }, - "kgb": { - "english_name": "Kawe" - }, - "peq": { - "english_name": "Pomo, Southern" - }, - "mcb": { - "english_name": "Machiguenga" - }, - "pka": { - "english_name": "Prākrit, Ardhamāgadhī" - }, - "lih": { - "english_name": "Lihir" - }, - "ska": { - "english_name": "Skagit" - }, - "mze": { - "english_name": "Morawa" - }, - "tlm": { - "english_name": "Tolomako" - }, - "ulw": { - "english_name": "Ulwa" - }, - "rug": { - "english_name": "Roviana" - }, - "kpr": { - "english_name": "Korafe-Yegha" - }, - "ary": { - "english_name": "Arabic, Moroccan" - }, - "eso": { - "english_name": "Estonian Sign Language" - }, - "xgl": { - "english_name": "Galindan" - }, - "kvq": { - "english_name": "Karen, Geba" - }, - "xkd": { - "english_name": "Kayan, Mendalam" - }, - "bwb": { - "english_name": "Namosi-Naitasiri-Serua" - }, - "ttv": { - "english_name": "Titan" - }, - "nyj": { - "english_name": "Nyanga" - }, - "bok": { - "english_name": "Bonjo" - }, - "nhc": { - "english_name": "Nahuatl, Tabasco" - }, - "wsa": { - "english_name": "Warembori" - }, - "bnk": { - "english_name": "Bierebo" - }, - "boq": { - "english_name": "Bogaya" - }, - "nyh": { - "english_name": "Nyigina" - }, - "rog": { - "english_name": "Roglai, Northern" - }, - "swf": { - "english_name": "Sere" - }, - "cpo": { - "english_name": "Kpeego" - }, - "krd": { - "english_name": "Kairui-Midiki" - }, - "tyj": { - "english_name": "Tai Do" - }, - "zrg": { - "english_name": "Mirgan" - }, - "mki": { - "english_name": "Dhatki" - }, - "jpa": { - "english_name": "Aramaic, Jewish Palestinian" - }, - "uun": { - "english_name": "Kulon-Pazeh" - }, - "tdt": { - "english_name": "Tetun Dili" - }, - "bhc": { - "english_name": "Biga" - }, - "bnc": { - "english_name": "Bontok" - }, - "ekm": { - "english_name": "Elip" - }, - "lcl": { - "english_name": "Lisela" - }, - "pmy": { - "english_name": "Malay, Papuan" - }, - "xeu": { - "english_name": "Keoru-Ahia" - }, - "nif": { - "english_name": "Nek" - }, - "ilk": { - "english_name": "Ilongot" - }, - "cof": { - "english_name": "Colorado" - }, - "nhy": { - "english_name": "Nahuatl, Northern Oaxaca" - }, - "bth": { - "english_name": "Bidayuh, Biatah" - }, - "tla": { - "english_name": "Tepehuan, Southwestern" - }, - "xcm": { - "english_name": "Comecrudo" - }, - "crt": { - "english_name": "Chorote, Iyojwa'ja" - }, - "raf": { - "english_name": "Meohang, Western" - }, - "ifu": { - "english_name": "Ifugao, Mayoyao" - }, - "rau": { - "english_name": "Raute" - }, - "xbc": { - "english_name": "Bactrian" - }, - "arn": { - "english_name": "Mapudungun" - }, - "yia": { - "english_name": "Yinggarda" - }, - "eip": { - "english_name": "Eipomek" - }, - "wro": { - "english_name": "Worrorra" - }, - "sif": { - "english_name": "Siamou" - }, - "bjf": { - "english_name": "Neo-Aramaic, Barzani Jewish" - }, - "sau": { - "english_name": "Saleman" - }, - "zmu": { - "english_name": "Muruwari" - }, - "bar": { - "english_name": "Bavarian" - }, - "dbt": { - "english_name": "Dogon, Ben Tey" - }, - "ets": { - "english_name": "Yekhee" - }, - "czt": { - "english_name": "Chin, Zotung" - }, - "dgc": { - "english_name": "Agta, Casiguran Dumagat" - }, - "kgr": { - "english_name": "Abun" - }, - "bek": { - "english_name": "Bebeli" - }, - "taz": { - "english_name": "Tocho" - }, - "lep": { - "english_name": "Lepcha" - }, - "kmv": { - "english_name": "Creole French, Karipúna" - }, - "nim": { - "english_name": "Nilamba" - }, - "tum": { - "english_name": "Tumbuka" - }, - "bsu": { - "english_name": "Bahonsuai" - }, - "tco": { - "english_name": "Taungyo" - }, - "spm": { - "english_name": "Akukem" - }, - "jv": { - "english_name": "Javanese" - }, - "isa": { - "english_name": "Isabi" - }, - "fay": { - "english_name": "Fars, Southwestern" - }, - "pln": { - "english_name": "Palenquero" - }, - "qvj": { - "english_name": "Quichua, Loja Highland" - }, - "xav": { - "english_name": "Xavánte" - }, - "vsv": { - "english_name": "Valencian Sign Language" - }, - "tyl": { - "english_name": "Thu Lao" - }, - "spq": { - "english_name": "Spanish, Loreto-Ucayali" - }, - "ak": { - "english_name": "Akan" - }, - "mug": { - "english_name": "Musgu" - }, - "jum": { - "english_name": "Jumjum" - }, - "era": { - "english_name": "Eravallan" - }, - "kjb": { - "english_name": "Q'anjob'al" - }, - "irh": { - "english_name": "Irarutu" - }, - "elx": { - "english_name": "Elamite" - }, - "cay": { - "english_name": "Cayuga" - }, - "yun": { - "english_name": "Bena (Nigeria)" - }, - "god": { - "english_name": "Godié" - }, - "nnp": { - "english_name": "Naga, Wancho" - }, - "kem": { - "english_name": "Kemak" - }, - "knu": { - "english_name": "Kono (Guinea)" - }, - "grc": { - "english_name": "Greek, Ancient (to 1453)" - }, - "muz": { - "english_name": "Mursi" - }, - "gye": { - "english_name": "Gyem" - }, - "noe": { - "english_name": "Nimadi" - }, - "sgy": { - "english_name": "Sanglechi" - }, - "bvu": { - "english_name": "Malay, Bukit" - }, - "fln": { - "english_name": "Flinders Island" - }, - "qul": { - "english_name": "Quechua, North Bolivian" - }, - "uta": { - "english_name": "Otank" - }, - "ebu": { - "english_name": "Embu" - }, - "hmi": { - "english_name": "Hmong, Northern Huishui" - }, - "tku": { - "english_name": "Totonac, Upper Necaxa" - }, - "ppe": { - "english_name": "Papi" - }, - "ril": { - "english_name": "Riang (Myanmar)" - }, - "iya": { - "english_name": "Iyayu" - }, - "gwx": { - "english_name": "Gua" - }, - "sjw": { - "english_name": "Shawnee" - }, - "kpo": { - "english_name": "Ikposo" - }, - "ars": { - "english_name": "Arabic, Najdi" - }, - "xru": { - "english_name": "Marriammu" - }, - "nmg": { - "english_name": "Kwasio" - }, - "slu": { - "english_name": "Selaru" - }, - "lmv": { - "english_name": "Lomaiviti" - }, - "ide": { - "english_name": "Idere" - }, - "bev": { - "english_name": "Bété, Daloa" - }, - "xat": { - "english_name": "Katawixi" - }, - "wbl": { - "english_name": "Wakhi" - }, - "gno": { - "english_name": "Gondi, Northern" - }, - "ngy": { - "english_name": "Tibea" - }, - "fie": { - "english_name": "Fyer" - }, - "vau": { - "english_name": "Vanuma" - }, - "bml": { - "english_name": "Bomboli" - }, - "gip": { - "english_name": "Gimi (West New Britain)" - }, - "dia": { - "english_name": "Dia" - }, - "ury": { - "english_name": "Orya" - }, - "kmj": { - "english_name": "Kumarbhag Paharia" - }, - "ort": { - "english_name": "Oriya, Adivasi" - }, - "ast": { - "english_name": "Asturian", - "name": "Asturianu" - }, - "ptw": { - "english_name": "Pentlatch" - }, - "vma": { - "english_name": "Martuyhunira" - }, - "emu": { - "english_name": "Muria, Eastern" - }, - "emg": { - "english_name": "Meohang, Eastern" - }, - "puj": { - "english_name": "Punan Tubu" - }, - "bcg": { - "english_name": "Baga Binari" - }, - "kkq": { - "english_name": "Kaiku" - }, - "gea": { - "english_name": "Geruma" - }, - "kdr": { - "english_name": "Karaim" - }, - "ima": { - "english_name": "Malasar, Mala" - }, - "afk": { - "english_name": "Nanubae" - }, - "auh": { - "english_name": "Aushi" - }, - "ksx": { - "english_name": "Kedang" - }, - "dnr": { - "english_name": "Danaru" - }, - "kku": { - "english_name": "Tumi" - }, - "ckl": { - "english_name": "Cibak" - }, - "gaj": { - "english_name": "Gadsup" - }, - "obm": { - "english_name": "Moabite" - }, - "sc": { - "english_name": "Sardinian" - }, - "lbx": { - "english_name": "Lawangan" - }, - "pno": { - "english_name": "Panobo" - }, - "bds": { - "english_name": "Burunge" - }, - "crc": { - "english_name": "Lonwolwol" - }, - "gwn": { - "english_name": "Gwandara" - }, - "tnd": { - "english_name": "Tunebo, Angosturas" - }, - "daj": { - "english_name": "Daju, Dar Fur" - }, - "iwk": { - "english_name": "I-Wak" - }, - "hsb": { - "english_name": "Sorbian, Upper" - }, - "kvz": { - "english_name": "Tsakwambo" - }, - "zen": { - "english_name": "Zenaga" - }, - "tgv": { - "english_name": "Tingui-Boto" - }, - "yel": { - "english_name": "Yela" - }, - "av": { - "english_name": "Avaric" - }, - "pin": { - "english_name": "Piame" - }, - "aed": { - "english_name": "Argentine Sign Language" - }, - "esk": { - "english_name": "Inupiatun, Northwest Alaska" - }, - "jul": { - "english_name": "Jirel" - }, - "mkf": { - "english_name": "Miya" - }, - "mgo": { - "english_name": "Meta'" - }, - "tao": { - "english_name": "Yami" - }, - "paw": { - "english_name": "Pawnee" - }, - "los": { - "english_name": "Loniu" - }, - "iby": { - "english_name": "Ibani" - }, - "kxm": { - "english_name": "Khmer, Northern" - }, - "bxk": { - "english_name": "Bukusu" - }, - "wbk": { - "english_name": "Waigali" - }, - "tdq": { - "english_name": "Tita" - }, - "bwy": { - "english_name": "Bwamu, Cwi" - }, - "atk": { - "english_name": "Ati" - }, - "tss": { - "english_name": "Taiwan Sign Language" - }, - "jiu": { - "english_name": "Jinuo, Youle" - }, - "ywa": { - "english_name": "Kalou" - }, - "nxe": { - "english_name": "Nage" - }, - "gom": { - "english_name": "Konkani, Goan" - }, - "ssc": { - "english_name": "Suba-Simbiti" - }, - "pww": { - "english_name": "Karen, Pwo Northern" - }, - "aok": { - "english_name": "Arhö" - }, - "qya": { - "english_name": "Quenya" - }, - "ada": { - "english_name": "Adangme" - }, - "rir": { - "english_name": "Ribun" - }, - "kkh": { - "english_name": "Khün" - }, - "prc": { - "english_name": "Parachi" - }, - "quf": { - "english_name": "Quechua, Lambayeque" - }, - "yav": { - "english_name": "Yangben" - }, - "wbw": { - "english_name": "Woi" - }, - "gei": { - "english_name": "Gebe" - }, - "huy": { - "english_name": "Hulaulá" - }, - "nlk": { - "english_name": "Yali, Ninia" - }, - "njt": { - "english_name": "Ndyuka-Trio Pidgin" - }, - "tmu": { - "english_name": "Iau" - }, - "pbl": { - "english_name": "Mak (Nigeria)" - }, - "bpj": { - "english_name": "Binji" - }, - "ppu": { - "english_name": "Papora" - }, - "tnx": { - "english_name": "Tanema" - }, - "cal": { - "english_name": "Carolinian" - }, - "tdv": { - "english_name": "Toro" - }, - "kvw": { - "english_name": "Wersing" - }, - "lyn": { - "english_name": "Luyana" - }, - "tlk": { - "english_name": "Taloki" - }, - "dny": { - "english_name": "Dení" - }, - "bbk": { - "english_name": "Babanki" - }, - "afp": { - "english_name": "Tapei" - }, - "snj": { - "english_name": "Sango, Riverain" - }, - "lip": { - "english_name": "Sekpele" - }, - "bja": { - "english_name": "Budza" - }, - "umo": { - "english_name": "Umotína" - }, - "jan": { - "english_name": "Jandai" - }, - "cur": { - "english_name": "Chhulung" - }, - "urn": { - "english_name": "Uruangnirin" - }, - "xbb": { - "english_name": "Burdekin, Lower" - }, - "bhd": { - "english_name": "Bhadrawahi" - }, - "ixc": { - "english_name": "Ixcatec" - }, - "sku": { - "english_name": "Sakao" - }, - "enq": { - "english_name": "Enga" - }, - "ncl": { - "english_name": "Nahuatl, Michoacán" - }, - "nka": { - "english_name": "Nkoya" - }, - "xaw": { - "english_name": "Kawaiisu" - }, - "bcp": { - "english_name": "Bali (Democratic Republic of Congo)" - }, - "fit": { - "english_name": "Finnish, Tornedalen" - }, - "lab": { - "english_name": "Linear A" - }, - "jor": { - "english_name": "Jorá" - }, - "agd": { - "english_name": "Agarabi" - }, - "zsm": { - "english_name": "Malay, Standard" - }, - "vep": { - "english_name": "Veps" - }, - "tsd": { - "english_name": "Tsakonian" - }, - "yre": { - "english_name": "Yaouré" - }, - "atl": { - "english_name": "Agta, Mt. Iraya" - }, - "bhm": { - "english_name": "Bathari" - }, - "bwa": { - "english_name": "Bwatoo" - }, - "obl": { - "english_name": "Oblo" - }, - "xls": { - "english_name": "Lusitanian" - }, - "kdm": { - "english_name": "Kagoma" - }, - "crf": { - "english_name": "Caramanta" - }, - "kkw": { - "english_name": "Teke-Kukuya" - }, - "tsu": { - "english_name": "Tsou" - }, - "lma": { - "english_name": "Limba, East" - }, - "hut": { - "english_name": "Humla" - }, - "bqx": { - "english_name": "Baangi" - }, - "mgs": { - "english_name": "Manda (Tanzania)" - }, - "sve": { - "english_name": "Serili" - }, - "fpe": { - "english_name": "Creole English, Fernando Po" - }, - "gsl": { - "english_name": "Gusilay" - }, - "xbw": { - "english_name": "Kambiwá" - }, - "csq": { - "english_name": "Croatia Sign Language" - }, - "iko": { - "english_name": "Olulumo-Ikom" - }, - "krj": { - "english_name": "Kinaray-A" - }, - "mme": { - "english_name": "Mae" - }, - "mmt": { - "english_name": "Malalamai" - }, - "tpi": { - "english_name": "Tok Pisin" - }, - "col": { - "english_name": "Columbia-Wenatchi" - }, - "kvo": { - "english_name": "Dobel" - }, - "mfu": { - "english_name": "Mbwela" - }, - "bdv": { - "english_name": "Bodo Parja" - }, - "mvk": { - "english_name": "Mekmek" - }, - "cds": { - "english_name": "Chadian Sign Language" - }, - "yej": { - "english_name": "Yevanic" - }, - "bba": { - "english_name": "Baatonum" - }, - "ycl": { - "english_name": "Lolopo" - }, - "due": { - "english_name": "Agta, Umiray Dumaget" - }, - "byz": { - "english_name": "Banaro" - }, - "nzz": { - "english_name": "Dogon, Nanga Dama" - }, - "lmf": { - "english_name": "Lembata, South" - }, - "kwl": { - "english_name": "Kofyar" - }, - "ne": { - "english_name": "Nepali (macrolanguage)" - }, - "lzh": { - "english_name": "Chinese, Literary" - }, - "sse": { - "english_name": "Balangingi" - }, - "hif": { - "english_name": "Hindi, Fiji" - }, - "btr": { - "english_name": "Baetora" - }, - "pru": { - "english_name": "Puragi" - }, - "stg": { - "english_name": "Trieng" - }, - "tcg": { - "english_name": "Tamagario" - }, - "iin": { - "english_name": "Thiin" - }, - "pux": { - "english_name": "Puare" - }, - "xso": { - "english_name": "Solano" - }, - "ais": { - "english_name": "Amis, Nataoran" - }, - "cok": { - "english_name": "Cora, Santa Teresa" - }, - "lul": { - "english_name": "Olu'bo" - }, - "sns": { - "english_name": "South West Bay" - }, - "phv": { - "english_name": "Pahlavani" - }, - "ack": { - "english_name": "Aka-Kora" - }, - "zau": { - "english_name": "Zangskari" - }, - "yir": { - "english_name": "Awyu, North" - }, - "lya": { - "english_name": "Layakha" - }, - "llj": { - "english_name": "Ladji Ladji" - }, - "bmw": { - "english_name": "Bomwali" - }, - "ull": { - "english_name": "Ullatan" - }, - "tbt": { - "english_name": "Tembo (Kitembo)" - }, - "mxf": { - "english_name": "Malgbe" - }, - "kko": { - "english_name": "Karko" - }, - "mni": { - "english_name": "Manipuri" - }, - "zpj": { - "english_name": "Zapotec, Quiavicuzas" - }, - "jvn": { - "english_name": "Javanese, Caribbean" - }, - "sdp": { - "english_name": "Sherdukpen" - }, - "mtx": { - "english_name": "Mixtec, Tidaá" - }, - "osx": { - "english_name": "Saxon, Old" - }, - "gbp": { - "english_name": "Gbaya-Bossangoa" - }, - "xbe": { - "english_name": "Bigambal" - }, - "mjy": { - "english_name": "Mahican" - }, - "aij": { - "english_name": "Lishanid Noshan" - }, - "cbn": { - "english_name": "Nyahkur" - }, - "sbo": { - "english_name": "Sabüm" - }, - "zhd": { - "english_name": "Zhuang, Dai" - }, - "kgk": { - "english_name": "Kaiwá" - }, - "nfa": { - "english_name": "Dhao" - }, - "bmg": { - "english_name": "Bamwe" - }, - "aug": { - "english_name": "Aguna" - }, - "xkr": { - "english_name": "Xakriabá" - }, - "klj": { - "english_name": "Khalaj, Turkic" - }, - "hmh": { - "english_name": "Hmong, Southwestern Huishui" - }, - "yuf": { - "english_name": "Havasupai-Walapai-Yavapai" - }, - "tzh": { - "english_name": "Tzeltal" - }, - "oki": { - "english_name": "Okiek" - }, - "djk": { - "english_name": "Eastern Maroon Creole" - }, - "anv": { - "english_name": "Denya" - }, - "nss": { - "english_name": "Nali" - }, - "hil": { - "english_name": "Hiligaynon" - }, - "dym": { - "english_name": "Dogon, Yanda Dom" - }, - "pmh": { - "english_name": "Prākrit, Māhārāṣṭri" - }, - "zpi": { - "english_name": "Zapotec, Santa María Quiegolani" - }, - "slh": { - "english_name": "Salish, Southern Puget Sound" - }, - "abj": { - "english_name": "Aka-Bea" - }, - "bpl": { - "english_name": "Broome Pearling Lugger Pidgin" - }, - "zpp": { - "english_name": "Zapotec, El Alto" - }, - "es": { - "english_name": "Spanish", - "name": "Español" - }, - "xpk": { - "english_name": "Pano, Kulina" - }, - "mxw": { - "english_name": "Namo" - }, - "cnh": { - "english_name": "Chin, Haka" - }, - "jbr": { - "english_name": "Jofotek-Bromnya" - }, - "ssg": { - "english_name": "Seimat" - }, - "lhp": { - "english_name": "Lhokpu" - }, - "mip": { - "english_name": "Mixtec, Apasco-Apoala" - }, - "kjy": { - "english_name": "Erave" - }, - "otb": { - "english_name": "Tibetan, Old" - }, - "otm": { - "english_name": "Otomi, Eastern Highland" - }, - "yix": { - "english_name": "Yi, Axi" - }, - "iwo": { - "english_name": "Iwur" - }, - "zmj": { - "english_name": "Maridjabin" - }, - "bvq": { - "english_name": "Birri" - }, - "tan": { - "english_name": "Tangale" - }, - "kjk": { - "english_name": "Konjo, Highland" - }, - "cji": { - "english_name": "Chamalal" - }, - "zmb": { - "english_name": "Zimba" - }, - "suv": { - "english_name": "Puroik" - }, - "byq": { - "english_name": "Basay" - }, - "phu": { - "english_name": "Phuan" - }, - "kac": { - "english_name": "Kachin" - }, - "tlu": { - "english_name": "Tulehu" - }, - "mht": { - "english_name": "Mandahuaca" - }, - "mqr": { - "english_name": "Mander" - }, - "axx": { - "english_name": "Xârâgurè" - }, - "mjw": { - "english_name": "Karbi" - }, - "dsi": { - "english_name": "Disa" - }, - "etz": { - "english_name": "Semimi" - }, - "arb": { - "english_name": "Arabic, Standard" - }, - "gwr": { - "english_name": "Gwere" - }, - "sae": { - "english_name": "Sabanê" - }, - "ann": { - "english_name": "Obolo" - }, - "jic": { - "english_name": "Tol" - }, - "nkz": { - "english_name": "Nkari" - }, - "srl": { - "english_name": "Isirawa" - }, - "nkf": { - "english_name": "Naga, Inpui" - }, - "hds": { - "english_name": "Honduras Sign Language" - }, - "khh": { - "english_name": "Kehu" - }, - "dti": { - "english_name": "Dogon, Ana Tinga" - }, - "bwq": { - "english_name": "Bobo Madaré, Southern" - }, - "gek": { - "english_name": "Yiwom" - }, - "dbn": { - "english_name": "Duriankere" - }, - "kax": { - "english_name": "Kao" - }, - "kwp": { - "english_name": "Kodia" - }, - "wkb": { - "english_name": "Kumbaran" - }, - "qua": { - "english_name": "Quapaw" - }, - "pee": { - "english_name": "Taje" - }, - "gne": { - "english_name": "Ganang" - }, - "mft": { - "english_name": "Mokerang" - }, - "hoc": { - "english_name": "Ho" - }, - "wym": { - "english_name": "Wymysorys" - }, - "mdm": { - "english_name": "Mayogo" - }, - "drr": { - "english_name": "Dororo" - }, - "mkt": { - "english_name": "Vamale" - }, - "psu": { - "english_name": "Prākrit, Sauraseni" - }, - "oue": { - "english_name": "Oune" - }, - "ynk": { - "english_name": "Yupik, Naukan" - }, - "sre": { - "english_name": "Sara" - }, - "kfs": { - "english_name": "Bilaspuri" - }, - "dnd": { - "english_name": "Daonda" - }, - "yyz": { - "english_name": "Ayizi" - }, - "yob": { - "english_name": "Yoba" - }, - "glj": { - "english_name": "Gula Iro" - }, - "bgg": { - "english_name": "Bugun" - }, - "hle": { - "english_name": "Hlersu" - }, - "soa": { - "english_name": "Thai Song" - }, - "nsx": { - "english_name": "Nsongo" - }, - "lap": { - "english_name": "Laka (Chad)" - }, - "knf": { - "english_name": "Mankanya" - }, - "ite": { - "english_name": "Itene" - }, - "dtb": { - "english_name": "Kadazan, Labuk-Kinabatangan" - }, - "ivb": { - "english_name": "Ibatan" - }, - "waq": { - "english_name": "Wageman" - }, - "toh": { - "english_name": "Gitonga" - }, - "zmo": { - "english_name": "Molo" - }, - "urc": { - "english_name": "Urningangg" - }, - "wja": { - "english_name": "Waja" - }, - "pem": { - "english_name": "Phende" - }, - "wlw": { - "english_name": "Walak" - }, - "drc": { - "english_name": "Minderico" - }, - "apk": { - "english_name": "Apache, Kiowa" - }, - "bva": { - "english_name": "Barein" - }, - "bjn": { - "english_name": "Banjar" - }, - "imo": { - "english_name": "Imbongu" - }, - "bfd": { - "english_name": "Bafut" - }, - "tvn": { - "english_name": "Tavoyan" - }, - "zax": { - "english_name": "Zapotec, Xadani" - }, - "tme": { - "english_name": "Tremembé" - }, - "ncf": { - "english_name": "Notsi" - }, - "lsi": { - "english_name": "Lashi" - }, - "xmk": { - "english_name": "Macedonian, Ancient" - }, - "bou": { - "english_name": "Bondei" - }, - "kls": { - "english_name": "Kalasha" - }, - "cjh": { - "english_name": "Chehalis, Upper" - }, - "sbz": { - "english_name": "Sara Kaba" - }, - "mvb": { - "english_name": "Mattole" - }, - "pel": { - "english_name": "Pekal" - }, - "gqu": { - "english_name": "Qau" - }, - "pni": { - "english_name": "Aoheng" - }, - "grh": { - "english_name": "Gbiri-Niragu" - }, - "ug": { - "english_name": "Uighur" - }, - "mmb": { - "english_name": "Momina" - }, - "zrn": { - "english_name": "Zerenkel" - }, - "sbn": { - "english_name": "Bhil, Sindhi" - }, - "tyi": { - "english_name": "Teke-Tsaayi" - }, - "asl": { - "english_name": "Asilulu" - }, - "quk": { - "english_name": "Quechua, Chachapoyas" - }, - "wog": { - "english_name": "Wogamusin" - }, - "sus": { - "english_name": "Susu" - }, - "beq": { - "english_name": "Beembe" - }, - "pby": { - "english_name": "Pyu" - }, - "yku": { - "english_name": "Kuamasi" - }, - "msc": { - "english_name": "Maninka, Sankaran" - }, - "buw": { - "english_name": "Bubi" - }, - "kwg": { - "english_name": "Sara Kaba Deme" - }, - "xri": { - "english_name": "Krikati-Timbira" - }, - "mgv": { - "english_name": "Matengo" - }, - "nds": { - "english_name": "German, Low" - }, - "ays": { - "english_name": "Ayta, Sorsogon" - }, - "age": { - "english_name": "Angal" - }, - "mib": { - "english_name": "Mixtec, Atatláhuca" - }, - "xmt": { - "english_name": "Matbat" - }, - "tcn": { - "english_name": "Tichurong" - }, - "ndb": { - "english_name": "Kenswei Nsei" - }, - "fiw": { - "english_name": "Fiwaga" - }, - "gvo": { - "english_name": "Gavião Do Jiparaná" - }, - "brg": { - "english_name": "Baure" - }, - "bnw": { - "english_name": "Bisis" - }, - "idd": { - "english_name": "Ede Idaca" - }, - "seb": { - "english_name": "Senoufo, Shempire" - }, - "ssn": { - "english_name": "Waata" - }, - "bjc": { - "english_name": "Bariji" - }, - "otz": { - "english_name": "Otomi, Ixtenco" - }, - "bxq": { - "english_name": "Beele" - }, - "ncr": { - "english_name": "Ncane" - }, - "seu": { - "english_name": "Serui-Laut" - }, - "obu": { - "english_name": "Obulom" - }, - "sra": { - "english_name": "Saruga" - }, - "dox": { - "english_name": "Bussa" - }, - "shc": { - "english_name": "Sonde" - }, - "kyc": { - "english_name": "Kyaka" - }, - "ibr": { - "english_name": "Ibuoro" - }, - "stt": { - "english_name": "Stieng, Budeh" - }, - "aor": { - "english_name": "Aore" - }, - "lhu": { - "english_name": "Lahu" - }, - "keh": { - "english_name": "Keak" - }, - "saa": { - "english_name": "Saba" - }, - "klb": { - "english_name": "Kiliwa" - }, - "kcw": { - "english_name": "Kabwari" - }, - "ome": { - "english_name": "Omejes" - }, - "kxh": { - "english_name": "Karo (Ethiopia)" - }, - "rad": { - "english_name": "Rade" - }, - "tms": { - "english_name": "Tima" - }, - "iap": { - "english_name": "Iapama" - }, - "na": { - "english_name": "Nauru" - }, - "bfx": { - "english_name": "Bantayanon" - }, - "lmx": { - "english_name": "Laimbue" - }, - "ktc": { - "english_name": "Kholok" - }, - "tsw": { - "english_name": "Tsishingini" - }, - "cbt": { - "english_name": "Chayahuita" - }, - "okn": { - "english_name": "Oki-No-Erabu" - }, - "xmz": { - "english_name": "Mori Bawah" - }, - "fj": { - "english_name": "Fijian" - }, - "kpn": { - "english_name": "Kepkiriwát" - }, - "wky": { - "english_name": "Wangkayutyuru" - }, - "oub": { - "english_name": "Glio-Oubi" - }, - "gvm": { - "english_name": "Gurmana" - }, - "ptr": { - "english_name": "Piamatsina" - }, - "lhn": { - "english_name": "Lahanan" - }, - "bcf": { - "english_name": "Bamu" - }, - "hia": { - "english_name": "Lamang" - }, - "dep": { - "english_name": "Delaware, Pidgin" - }, - "bsl": { - "english_name": "Basa-Gumna" - }, - "ltg": { - "english_name": "Latgalian" - }, - "mcw": { - "english_name": "Mawa (Chad)" - }, - "twq": { - "english_name": "Tasawaq" - }, - "co": { - "english_name": "Corsican" - }, - "lpn": { - "english_name": "Naga, Long Phuri" - }, - "zir": { - "english_name": "Ziriya" - }, - "bo": { - "english_name": "Tibetan" - }, - "xcn": { - "english_name": "Cotoname" - }, - "xkf": { - "english_name": "Khengkha" - }, - "sky": { - "english_name": "Sikaiana" - }, - "kyp": { - "english_name": "Kang" - }, - "xum": { - "english_name": "Umbrian" - }, - "asj": { - "english_name": "Sari" - }, - "btc": { - "english_name": "Bati (Cameroon)" - }, - "ggo": { - "english_name": "Gondi, Southern" - }, - "igg": { - "english_name": "Igana" - }, - "mue": { - "english_name": "Media Lengua" - }, - "gof": { - "english_name": "Gofa" - }, - "trr": { - "english_name": "Taushiro" - }, - "anq": { - "english_name": "Jarawa (India)" - }, - "tgj": { - "english_name": "Tagin" - }, - "bye": { - "english_name": "Pouye" - }, - "nwi": { - "english_name": "Tanna, Southwest" - }, - "zpn": { - "english_name": "Zapotec, Santa Inés Yatzechi" - }, - "asy": { - "english_name": "Asmat, Yaosakor" - }, - "wof": { - "english_name": "Wolof, Gambian" - }, - "kco": { - "english_name": "Kinalakna" - }, - "mct": { - "english_name": "Mengisa" - }, - "bhu": { - "english_name": "Bhunjia" - }, - "nnu": { - "english_name": "Dwang" - }, - "dhv": { - "english_name": "Dehu" - }, - "uan": { - "english_name": "Kuan" - }, - "xcg": { - "english_name": "Gaulish, Cisalpine" - }, - "xkp": { - "english_name": "Kabatei" - }, - "vkl": { - "english_name": "Kulisusu" - }, - "guo": { - "english_name": "Guayabero" - }, - "pmz": { - "english_name": "Pame, Southern" - }, - "byr": { - "english_name": "Baruya" - }, - "dih": { - "english_name": "Kumiai" - }, - "jud": { - "english_name": "Worodougou" - }, - "cpi": { - "english_name": "Pidgin English, Chinese" - }, - "dok": { - "english_name": "Dondo" - }, - "sas": { - "english_name": "Sasak" - }, - "osu": { - "english_name": "One, Southern" - }, - "ndv": { - "english_name": "Ndut" - }, - "msd": { - "english_name": "Yucatec Maya Sign Language" - }, - "aba": { - "english_name": "Abé" - }, - "vil": { - "english_name": "Vilela" - }, - "yab": { - "english_name": "Yuhup" - }, - "dru": { - "english_name": "Rukai" - }, - "yxg": { - "english_name": "Yagara" - }, - "wlr": { - "english_name": "Wailapa" - }, - "mwy": { - "english_name": "Mosiro" - }, - "qva": { - "english_name": "Quechua, Ambo-Pasco" - }, - "nbt": { - "english_name": "Na" - }, - "onn": { - "english_name": "Onobasulu" - }, - "ayi": { - "english_name": "Leyigha" - }, - "kqm": { - "english_name": "Khisa" - }, - "yms": { - "english_name": "Mysian" - }, - "nhk": { - "english_name": "Nahuatl, Isthmus-Cosoleacaque" - }, - "wng": { - "english_name": "Wanggom" - }, - "ccm": { - "english_name": "Creole Malay, Malaccan" - }, - "api": { - "english_name": "Apiaká" - }, - "mxq": { - "english_name": "Mixe, Juquila" - }, - "udj": { - "english_name": "Ujir" - }, - "nij": { - "english_name": "Ngaju" - }, - "vls": { - "english_name": "Vlaams" - }, - "mys": { - "english_name": "Mesmes" - }, - "npn": { - "english_name": "Mondropolon" - }, - "xta": { - "english_name": "Mixtec, Alcozauca" - }, - "kec": { - "english_name": "Keiga" - }, - "bex": { - "english_name": "Jur Modo" - }, - "kne": { - "english_name": "Kankanaey" - }, - "xwo": { - "english_name": "Oirat, Written" - }, - "pa": { - "english_name": "Panjabi", - "name": "ਪੰਜਾਬੀ" - }, - "xsc": { - "english_name": "Scythian" - }, - "wlv": { - "english_name": "Wichí Lhamtés Vejoz" - }, - "tri": { - "english_name": "Trió" - }, - "iai": { - "english_name": "Iaai" - }, - "cah": { - "english_name": "Cahuarano" - }, - "naw": { - "english_name": "Nawuri" - }, - "ziw": { - "english_name": "Zigula" - }, - "iow": { - "english_name": "Iowa-Oto" - }, - "mbo": { - "english_name": "Mbo (Cameroon)" - }, - "nti": { - "english_name": "Natioro" - }, - "ntm": { - "english_name": "Nateni" - }, - "bkc": { - "english_name": "Baka (Cameroon)" - }, - "tsg": { - "english_name": "Tausug" - }, - "xwe": { - "english_name": "Gbe, Xwela" - }, - "aks": { - "english_name": "Akaselem" - }, - "woo": { - "english_name": "Manombai" - }, - "kml": { - "english_name": "Kalinga, Tanudan" - }, - "des": { - "english_name": "Desano" - }, - "txm": { - "english_name": "Tomini" - }, - "khf": { - "english_name": "Khuen" - }, - "grr": { - "english_name": "Taznatit" - }, - "esh": { - "english_name": "Eshtehardi" - }, - "mxa": { - "english_name": "Mixtec, Northwest Oaxaca" - }, - "ngi": { - "english_name": "Ngizim" - }, - "bqs": { - "english_name": "Bosngun" - }, - "dup": { - "english_name": "Duano" - }, - "dez": { - "english_name": "Dengese" - }, - "ota": { - "english_name": "Turkish, Ottoman (1500-1928)" - }, - "nmv": { - "english_name": "Ngamini" - }, - "siq": { - "english_name": "Sonia" - }, - "tzn": { - "english_name": "Tugun" - }, - "mtp": { - "english_name": "Wichí Lhamtés Nocten" - }, - "avo": { - "english_name": "Agavotaguerra" - }, - "cdg": { - "english_name": "Chamari" - }, - "zsr": { - "english_name": "Zapotec, Southern Rincon" - }, - "lro": { - "english_name": "Laro" - }, - "tbl": { - "english_name": "Tboli" - }, - "yde": { - "english_name": "Yangum Dey" - }, - "wmi": { - "english_name": "Wamin" - }, - "hrw": { - "english_name": "Warwar Feni" - }, - "amq": { - "english_name": "Amahai" - }, - "moj": { - "english_name": "Monzombo" - }, - "tmy": { - "english_name": "Tami" - }, - "pes": { - "english_name": "Persian, Iranian" - }, - "bgb": { - "english_name": "Bobongko" - }, - "buf": { - "english_name": "Bushoong" - }, - "moo": { - "english_name": "Monom" - }, - "dev": { - "english_name": "Domung" - }, - "tt": { - "english_name": "Tatar", - "name": "Татарча" - }, - "xxk": { - "english_name": "Ke'o" - }, - "yot": { - "english_name": "Yotti" - }, - "maq": { - "english_name": "Mazatec, Chiquihuitlán" - }, - "csg": { - "english_name": "Chilean Sign Language" - }, - "mat": { - "english_name": "Matlatzinca, San Francisco" - }, - "yva": { - "english_name": "Yawa" - }, - "nnj": { - "english_name": "Nyangatom" - }, - "wea": { - "english_name": "Wewaw" - }, - "loy": { - "english_name": "Loke" - }, - "tna": { - "english_name": "Tacana" - }, - "ktf": { - "english_name": "Kwami" - }, - "hoe": { - "english_name": "Horom" - }, - "smu": { - "english_name": "Somray" - }, - "zph": { - "english_name": "Zapotec, Totomachapan" - }, - "mbl": { - "english_name": "Maxakalí" - }, - "rap": { - "english_name": "Rapanui" - }, - "hti": { - "english_name": "Hoti" - }, - "bkz": { - "english_name": "Bungku" - }, - "thk": { - "english_name": "Tharaka" - }, - "pjt": { - "english_name": "Pitjantjatjara" - }, - "mei": { - "english_name": "Midob" - }, - "zia": { - "english_name": "Zia" - }, - "llo": { - "english_name": "Khlor" - }, - "bxn": { - "english_name": "Burduna" - }, - "hmd": { - "english_name": "Miao, Large Flowery" - }, - "nsu": { - "english_name": "Nahuatl, Sierra Negra" - }, - "sdj": { - "english_name": "Suundi" - }, - "amb": { - "english_name": "Ambo" - }, - "ybi": { - "english_name": "Yamphu" - }, - "lak": { - "english_name": "Laka (Nigeria)" - }, - "amc": { - "english_name": "Amahuaca" - }, - "lbv": { - "english_name": "Lavatbura-Lamusong" - }, - "pug": { - "english_name": "Phuie" - }, - "tzj": { - "english_name": "Tz'utujil" - }, - "tlh": { - "english_name": "Klingon" - }, - "wal": { - "english_name": "Wolaytta" - }, - "raa": { - "english_name": "Dungmali" - }, - "xdc": { - "english_name": "Dacian" - }, - "aez": { - "english_name": "Aeka" - }, - "kol": { - "english_name": "Kol (Papua New Guinea)" - }, - "gdo": { - "english_name": "Ghodoberi" - }, - "mcf": { - "english_name": "Matsés" - }, - "tqu": { - "english_name": "Touo" - }, - "agn": { - "english_name": "Agutaynen" - }, - "xmh": { - "english_name": "Kuku-Muminh" - }, - "snx": { - "english_name": "Sam" - }, - "lyg": { - "english_name": "Lyngngam" - }, - "axe": { - "english_name": "Ayerrerenge" - }, - "sym": { - "english_name": "Samo, Maya" - }, - "cna": { - "english_name": "Changthang" - }, - "laa": { - "english_name": "Subanen, Southern" - }, - "mzi": { - "english_name": "Mazatec, Ixcatlán" - }, - "gby": { - "english_name": "Gbari" - }, - "glc": { - "english_name": "Bon Gula" - }, - "sef": { - "english_name": "Senoufo, Cebaara" - }, - "vmg": { - "english_name": "Lungalunga" - }, - "byf": { - "english_name": "Bete" - }, - "bdh": { - "english_name": "Baka (Sudan)" - }, - "cmn": { - "english_name": "Chinese, Mandarin" - }, - "nud": { - "english_name": "Ngala" - }, - "mvh": { - "english_name": "Mulgi" - }, - "tgz": { - "english_name": "Tagalaka" - }, - "aml": { - "english_name": "War-Jaintia" - }, - "kaa": { - "english_name": "Kara-Kalpak" - }, - "bef": { - "english_name": "Benabena" - }, - "kei": { - "english_name": "Kei" - }, - "byc": { - "english_name": "Ubaghara" - }, - "etu": { - "english_name": "Ejagham" - }, - "zmm": { - "english_name": "Marimanindji" - }, - "ziz": { - "english_name": "Zizilivakan" - }, - "ifa": { - "english_name": "Ifugao, Amganad" - }, - "dax": { - "english_name": "Dayi" - }, - "xna": { - "english_name": "North Arabian, Ancient" - }, - "nma": { - "english_name": "Naga, Maram" - }, - "ono": { - "english_name": "Onondaga" - }, - "dub": { - "english_name": "Dubli" - }, - "ayr": { - "english_name": "Aymara, Central" - }, - "xwk": { - "english_name": "Wangkumara" - }, - "kvt": { - "english_name": "Karen, Lahta" - }, - "meo": { - "english_name": "Malay, Kedah" - }, - "nhg": { - "english_name": "Nahuatl, Tetelcingo" - }, - "sgi": { - "english_name": "Suga" - }, - "www": { - "english_name": "Wawa" - }, - "bct": { - "english_name": "Bendi" - }, - "yng": { - "english_name": "Yango" - }, - "meh": { - "english_name": "Mixtec, Southwestern Tlaxiaco" - }, - "gma": { - "english_name": "Gambera" - }, - "niv": { - "english_name": "Gilyak" - }, - "lex": { - "english_name": "Luang" - }, - "yul": { - "english_name": "Yulu" - }, - "csa": { - "english_name": "Chinantec, Chiltepec" - }, - "nza": { - "english_name": "Mbembe, Tigon" - }, - "dni": { - "english_name": "Dani, Lower Grand Valley" - }, - "aso": { - "english_name": "Dano" - }, - "sn": { - "english_name": "Shona" - }, - "kjp": { - "english_name": "Karen, Pwo Eastern" - }, - "auk": { - "english_name": "Heyo" - }, - "atn": { - "english_name": "Ashtiani" - }, - "bae": { - "english_name": "Baré" - }, - "aid": { - "english_name": "Alngith" - }, - "kjg": { - "english_name": "Khmu" - }, - "sax": { - "english_name": "Sa" - }, - "bxh": { - "english_name": "Buhutu" - }, - "air": { - "english_name": "Airoran" - }, - "fo": { - "english_name": "Faroese" - }, - "mev": { - "english_name": "Mano" - }, - "zhi": { - "english_name": "Zhire" - }, - "acd": { - "english_name": "Gikyode" - }, - "leo": { - "english_name": "Leti (Cameroon)" - }, - "hei": { - "english_name": "Heiltsuk" - }, - "bvn": { - "english_name": "Buna" - }, - "mlp": { - "english_name": "Bargam" - }, - "ccj": { - "english_name": "Kasanga" - }, - "cnu": { - "english_name": "Chenoua" - }, - "zsl": { - "english_name": "Zambian Sign Language" - }, - "tcq": { - "english_name": "Kaiy" - }, - "hmz": { - "english_name": "Hmong Shua" - }, - "mnr": { - "english_name": "Mono (USA)" - }, - "ske": { - "english_name": "Seke (Vanuatu)" - }, - "khu": { - "english_name": "Nkhumbi" - }, - "nrr": { - "english_name": "Norra" - }, - "zmc": { - "english_name": "Margany" - }, - "gab": { - "english_name": "Gabri" - }, - "qvo": { - "english_name": "Quechua, Napo Lowland" - }, - "zza": { - "english_name": "Zaza" - }, - "gbs": { - "english_name": "Gbe, Gbesi" - }, - "yka": { - "english_name": "Yakan" - }, - "hoj": { - "english_name": "Hadothi" - }, - "sjb": { - "english_name": "Sajau Basap" - }, - "mhl": { - "english_name": "Mauwake" - }, - "ami": { - "english_name": "Amis" - }, - "mky": { - "english_name": "Makian, East" - }, - "byd": { - "english_name": "Benyadu'" - }, - "wrp": { - "english_name": "Waropen" - }, - "axk": { - "english_name": "Yaka (Central African Republic)" - }, - "bgv": { - "english_name": "Warkay-Bipim" - }, - "aom": { - "english_name": "Ömie" - }, - "pit": { - "english_name": "Pitta Pitta" - }, - "nyv": { - "english_name": "Nyulnyul" - }, - "shs": { - "english_name": "Shuswap" - }, - "spc": { - "english_name": "Sapé" - }, - "chr": { - "english_name": "Cherokee" - }, - "xcv": { - "english_name": "Chuvantsy" - }, - "psr": { - "english_name": "Portuguese Sign Language" - }, - "jie": { - "english_name": "Jilbe" - }, - "dhr": { - "english_name": "Dhargari" - }, - "az": { - "english_name": "Azerbaijani", - "name": "Azerbaijani" - }, - "bax": { - "english_name": "Bamun" - }, - "ppq": { - "english_name": "Pei" - }, - "lbt": { - "english_name": "Lachi" - }, - "mti": { - "english_name": "Maiwa (Papua New Guinea)" - }, - "mpw": { - "english_name": "Mapidian" - }, - "hhi": { - "english_name": "Hoia Hoia" - }, - "nkj": { - "english_name": "Nakai" - }, - "bbl": { - "english_name": "Bats" - }, - "pcd": { - "english_name": "Picard" - }, - "tiy": { - "english_name": "Tiruray" - }, - "zpm": { - "english_name": "Zapotec, Mixtepec" - }, - "lsg": { - "english_name": "Lyons Sign Language" - }, - "hmg": { - "english_name": "Hmong, Southwestern Guiyang" - }, - "kmx": { - "english_name": "Waboda" - }, - "vae": { - "english_name": "Vale" - }, - "deq": { - "english_name": "Dendi (Central African Republic)" - }, - "mcl": { - "english_name": "Macaguaje" - }, - "bin": { - "english_name": "Bini" - }, - "spi": { - "english_name": "Saponi" - }, - "yog": { - "english_name": "Yogad" - }, - "eri": { - "english_name": "Ogea" - }, - "plv": { - "english_name": "Palawano, Southwest" - }, - "ysg": { - "english_name": "Sonaga" - }, - "dzl": { - "english_name": "Dzalakha" - }, - "bfy": { - "english_name": "Bagheli" - }, - "gu": { - "english_name": "Gujarati", - "name": "ગુજરાતી" - }, - "tos": { - "english_name": "Totonac, Highland" - }, - "iu": { - "english_name": "Inuktitut" - }, - "gmz": { - "english_name": "Mgbolizhia" - }, - "bnd": { - "english_name": "Banda (Indonesia)" - }, - "muq": { - "english_name": "Miao, Eastern Xiangxi" - }, - "ncj": { - "english_name": "Nahuatl, Northern Puebla" - }, - "aat": { - "english_name": "Albanian, Arvanitika" - }, - "hus": { - "english_name": "Huastec" - }, - "zib": { - "english_name": "Zimbabwe Sign Language" - }, - "kyz": { - "english_name": "Kayabí" - }, - "tcc": { - "english_name": "Datooga" - }, - "zar": { - "english_name": "Zapotec, Rincón" - }, - "xae": { - "english_name": "Aequian" - }, - "zpb": { - "english_name": "Zapotec, Yautepec" - }, - "hos": { - "english_name": "Ho Chi Minh City Sign Language" - }, - "rax": { - "english_name": "Rang" - }, - "zh": { - "english_name": "Chinese", - "name": "中文" - }, - "max": { - "english_name": "Malay, North Moluccan" - }, - "agv": { - "english_name": "Dumagat, Remontado" - }, - "nrt": { - "english_name": "Kalapuya, Northern" - }, - "ckt": { - "english_name": "Chukot" - }, - "jas": { - "english_name": "Javanese, New Caledonian" - }, - "ssh": { - "english_name": "Arabic, Shihhi" - }, - "phd": { - "english_name": "Phudagi" - }, - "xle": { - "english_name": "Lemnian" - }, - "adf": { - "english_name": "Arabic, Dhofari" - }, - "tuj": { - "english_name": "Tugutil" - }, - "nvh": { - "english_name": "Nasarian" - }, - "djr": { - "english_name": "Djambarrpuyngu" - }, - "gsp": { - "english_name": "Wasembo" - }, - "kiw": { - "english_name": "Kiwai, Northeast" - }, - "ism": { - "english_name": "Masimasi" - }, - "mox": { - "english_name": "Molima" - }, - "nxi": { - "english_name": "Nindi" - }, - "rjs": { - "english_name": "Rajbanshi" - }, - "cuj": { - "english_name": "Mashco Piro" - }, - "kvk": { - "english_name": "Korean Sign Language" - }, - "bxo": { - "english_name": "Barikanchi" - }, - "ged": { - "english_name": "Gade" - }, - "nih": { - "english_name": "Nyiha (Tanzania)" - }, - "hru": { - "english_name": "Hruso" - }, - "mlx": { - "english_name": "Malfaxal" - }, - "mpj": { - "english_name": "Martu Wangka" - }, - "mdp": { - "english_name": "Mbala" - }, - "yhl": { - "english_name": "Phowa, Hlepho" - }, - "bgi": { - "english_name": "Giangan" - }, - "ldl": { - "english_name": "Kaan" - }, - "nrx": { - "english_name": "Ngurmbur" - }, - "noq": { - "english_name": "Ngongo" - }, - "mrc": { - "english_name": "Maricopa" - }, - "aig": { - "english_name": "Creole English, Antigua and Barbuda" - }, - "fos": { - "english_name": "Siraya" - }, - "pok": { - "english_name": "Pokangá" - }, - "pif": { - "english_name": "Pingelapese" - }, - "buz": { - "english_name": "Bukwen" - }, - "kos": { - "english_name": "Kosraean" - }, - "isd": { - "english_name": "Isnag" - }, - "juk": { - "english_name": "Wapan" - }, - "bwm": { - "english_name": "Biwat" - }, - "muk": { - "english_name": "Mugom" - }, - "btj": { - "english_name": "Malay, Bacanese" - }, - "ldq": { - "english_name": "Lufu" - }, - "kfz": { - "english_name": "Koromfé" - }, - "xwa": { - "english_name": "Kwaza" - }, - "nxl": { - "english_name": "Nuaulu, South" - }, - "acw": { - "english_name": "Arabic, Hijazi" - }, - "xkk": { - "english_name": "Kaco'" - }, - "vap": { - "english_name": "Vaiphei" - }, - "tbn": { - "english_name": "Tunebo, Barro Negro" - }, - "gmv": { - "english_name": "Gamo" - }, - "otr": { - "english_name": "Otoro" - }, - "yap": { - "english_name": "Yapese" - }, - "giy": { - "english_name": "Giyug" - }, - "roe": { - "english_name": "Ronji" - }, - "ams": { - "english_name": "Amami-Oshima, Southern" - }, - "fss": { - "english_name": "Finland-Swedish Sign Language" - }, - "etc": { - "english_name": "Etchemin" - }, - "gyf": { - "english_name": "Gungabula" - }, - "gut": { - "english_name": "Maléku Jaíka" - }, - "kdh": { - "english_name": "Tem" - }, - "wyr": { - "english_name": "Wayoró" - }, - "enw": { - "english_name": "Enwan (Akwa Ibom State)" - }, - "bfk": { - "english_name": "Ban Khor Sign Language" - }, - "mfc": { - "english_name": "Mba" - }, - "sbh": { - "english_name": "Sori-Harengan" - }, - "mk": { - "english_name": "Macedonian", - "name": "Македонски" - }, - "mdi": { - "english_name": "Mamvu" - }, - "qxq": { - "english_name": "Qashqa'i" - }, - "ayn": { - "english_name": "Arabic, Sanaani" - }, - "ple": { - "english_name": "Palu'e" - }, - "bom": { - "english_name": "Berom" - }, - "lsr": { - "english_name": "Aruop" - }, - "now": { - "english_name": "Nyambo" - }, - "kbt": { - "english_name": "Abadi" - }, - "zmr": { - "english_name": "Maranunggu" - }, - "nbi": { - "english_name": "Naga, Mao" - }, - "ssu": { - "english_name": "Susuami" - }, - "byn": { - "english_name": "Bilin", - "name": "Bilin" - }, - "paz": { - "english_name": "Pankararú" - }, - "ymm": { - "english_name": "Maay" - }, - "ktv": { - "english_name": "Katu, Eastern" - }, - "nuz": { - "english_name": "Nahuatl, Tlamacazapa" - }, - "afb": { - "english_name": "Arabic, Gulf" - }, - "knj": { - "english_name": "Kanjobal, Western" - }, - "kk": { - "english_name": "Kazakh" - }, - "kyq": { - "english_name": "Kenga" - }, - "yak": { - "english_name": "Yakama" - }, - "cmm": { - "english_name": "Michigamea" - }, - "bzt": { - "english_name": "Brithenig" - }, - "suq": { - "english_name": "Suri" - }, - "pda": { - "english_name": "Anam" - }, - "mtn": { - "english_name": "Matagalpa" - }, - "kmo": { - "english_name": "Kwoma" - }, - "nwo": { - "english_name": "Nauo" - }, - "nzm": { - "english_name": "Naga, Zeme" - }, - "yyr": { - "english_name": "Yir Yoront" - }, - "nib": { - "english_name": "Nakame" - }, - "nkm": { - "english_name": "Namat" - }, - "wji": { - "english_name": "Warji" - }, - "tch": { - "english_name": "Creole English, Turks And Caicos" - }, - "cce": { - "english_name": "Chopi" - }, - "yki": { - "english_name": "Yoke" - }, - "ugb": { - "english_name": "Kuku-Ugbanh" - }, - "avn": { - "english_name": "Avatime" - }, - "kmy": { - "english_name": "Koma" - }, - "ayc": { - "english_name": "Aymara, Southern" - }, - "mqf": { - "english_name": "Momuna" - }, - "sbb": { - "english_name": "Simbo" - }, - "bzb": { - "english_name": "Andio" - }, - "nqm": { - "english_name": "Ndom" - }, - "bzc": { - "english_name": "Malagasy, Southern Betsimisaraka" - }, - "pcg": { - "english_name": "Paniya" - }, - "am": { - "english_name": "Amharic", - "name": "አማርኛ" - }, - "bea": { - "english_name": "Beaver" - }, - "tdk": { - "english_name": "Tambas" - }, - "gga": { - "english_name": "Gao" - }, - "kfe": { - "english_name": "Kota (India)" - }, - "nqo": { - "english_name": "N'Ko" - }, - "kfx": { - "english_name": "Pahari, Kullu" - }, - "tbk": { - "english_name": "Tagbanwa, Calamian" - }, - "kjn": { - "english_name": "Kunjen" - }, - "axb": { - "english_name": "Abipon" - }, - "ywn": { - "english_name": "Yawanawa" - }, - "sqh": { - "english_name": "Shau" - }, - "xbj": { - "english_name": "Birrpayi" - }, - "azn": { - "english_name": "Nahuatl, Western Durango" - }, - "bte": { - "english_name": "Gamo-Ningi" - }, - "abf": { - "english_name": "Abai Sungai" - }, - "nkt": { - "english_name": "Nyika (Tanzania)" - }, - "xty": { - "english_name": "Mixtec, Yoloxochitl" - }, - "hmr": { - "english_name": "Hmar" - }, - "ipo": { - "english_name": "Ipiko" - }, - "ydg": { - "english_name": "Yidgha" - }, - "ihi": { - "english_name": "Ihievbe" - }, - "arx": { - "english_name": "Aruá (Rodonia State)" - }, - "dmm": { - "english_name": "Dama" - }, - "ka": { - "english_name": "Georgian" - }, - "sbg": { - "english_name": "Seget" - }, - "agc": { - "english_name": "Agatu" - }, - "goa": { - "english_name": "Guro" - }, - "dz": { - "english_name": "Dzongkha" - }, - "aul": { - "english_name": "Aulua" - }, - "trh": { - "english_name": "Turaka" - }, - "bor": { - "english_name": "Borôro" - }, - "asc": { - "english_name": "Asmat, Casuarina Coast" - }, - "kej": { - "english_name": "Kadar" - }, - "had": { - "english_name": "Hatam" - }, - "nmp": { - "english_name": "Nimanbur" - }, - "srf": { - "english_name": "Nafi" - }, - "tly": { - "english_name": "Talysh" - }, - "mvt": { - "english_name": "Mpotovoro" - }, - "pt": { - "english_name": "Portuguese", - "name": "Português" - }, - "mxu": { - "english_name": "Mada (Cameroon)" - }, - "sq": { - "english_name": "Albanian" - }, - "nn": { - "english_name": "Norwegian Nynorsk", - "name": "Norwegian Nynorsk" - }, - "gcl": { - "english_name": "Creole English, Grenadian" - }, - "bfe": { - "english_name": "Betaf" - }, - "val": { - "english_name": "Vehes" - }, - "aru": { - "english_name": "Aruá (Amazonas State)" - }, - "ght": { - "english_name": "Kuke" - }, - "mpo": { - "english_name": "Miu" - }, - "hnn": { - "english_name": "Hanunoo" - }, - "xni": { - "english_name": "Ngarigu" - }, - "vid": { - "english_name": "Vidunda" - }, - "kgy": { - "english_name": "Kyerung" - }, - "tas": { - "english_name": "Tay Boi" - }, - "xay": { - "english_name": "Kayan Mahakam" - }, - "pak": { - "english_name": "Parakanã" - }, - "no": { - "english_name": "Norwegian" - }, - "jye": { - "english_name": "Arabic, Judeo-Yemeni" - }, - "bhf": { - "english_name": "Odiai" - }, - "biu": { - "english_name": "Biete" - }, - "hna": { - "english_name": "Mina (Cameroon)" - }, - "seo": { - "english_name": "Suarmin" - }, - "moa": { - "english_name": "Mwan" - }, - "ufi": { - "english_name": "Ufim" - }, - "bsk": { - "english_name": "Burushaski" - }, - "azm": { - "english_name": "Amuzgo, Ipalapa" - }, - "qxt": { - "english_name": "Quechua, Santa Ana de Tusi Pasco" - }, - "tqo": { - "english_name": "Toaripi" - }, - "qxu": { - "english_name": "Quechua, Arequipa-La Unión" - }, - "ark": { - "english_name": "Arikapú" - }, - "xno": { - "english_name": "Anglo-Norman" - }, - "nmw": { - "english_name": "Nimoa" - }, - "luz": { - "english_name": "Luri, Southern" - }, - "os": { - "english_name": "Ossetian" - }, - "bem": { - "english_name": "Bemba (Zambia)" - }, - "tcy": { - "english_name": "Tulu" - }, - "crq": { - "english_name": "Chorote, Iyo'wujwa" - }, - "dor": { - "english_name": "Dori'o" - }, - "stj": { - "english_name": "Samo, Matya" - }, - "cho": { - "english_name": "Choctaw" - }, - "kr": { - "english_name": "Kanuri" - }, - "hrm": { - "english_name": "Miao, Horned" - }, - "klp": { - "english_name": "Kamasa" - }, - "duw": { - "english_name": "Dusun Witu" - }, - "yao": { - "english_name": "Yao" - }, - "trf": { - "english_name": "Creole English, Trinidadian" - }, - "tbe": { - "english_name": "Tanimbili" - }, - "tnm": { - "english_name": "Tabla" - }, - "zty": { - "english_name": "Zapotec, Yatee" - }, - "ccl": { - "english_name": "Cutchi-Swahili" - }, - "ost": { - "english_name": "Osatu" - }, - "gbo": { - "english_name": "Grebo, Northern" - }, - "bnr": { - "english_name": "Butmas-Tur" - }, - "bmv": { - "english_name": "Bum" - }, - "njb": { - "english_name": "Naga, Nocte" - }, - "kii": { - "english_name": "Kitsai" - }, - "msp": { - "english_name": "Maritsauá" - }, - "sdc": { - "english_name": "Sardinian, Sassarese" - }, - "wib": { - "english_name": "Toussian, Southern" - }, - "xxr": { - "english_name": "Koropó" - }, - "kbw": { - "english_name": "Kaiep" - }, - "ikp": { - "english_name": "Ikpeshi" - }, - "gpa": { - "english_name": "Gupa-Abawa" - }, - "dme": { - "english_name": "Dugwor" - }, - "xcw": { - "english_name": "Coahuilteco" - }, - "qwh": { - "english_name": "Quechua, Huaylas Ancash" - }, - "kfk": { - "english_name": "Kinnauri" - }, - "sdl": { - "english_name": "Saudi Arabian Sign Language" - }, - "drs": { - "english_name": "Gedeo" - }, - "aif": { - "english_name": "Agi" - }, - "sjo": { - "english_name": "Xibe" - }, - "aia": { - "english_name": "Arosi" - }, - "mpr": { - "english_name": "Vangunu" - }, - "rbp": { - "english_name": "Barababaraba" - }, - "zag": { - "english_name": "Zaghawa" - }, - "mta": { - "english_name": "Manobo, Cotabato" - }, - "boj": { - "english_name": "Anjam" - }, - "cdm": { - "english_name": "Chepang" - }, - "kqd": { - "english_name": "Koy Sanjaq Surat" - }, - "inb": { - "english_name": "Inga" - }, - "xpn": { - "english_name": "Kapinawá" - }, - "kuz": { - "english_name": "Kunza" - }, - "xmb": { - "english_name": "Mbonga" - }, - "caz": { - "english_name": "Canichana" - }, - "ibg": { - "english_name": "Ibanag" - }, - "pea": { - "english_name": "Indonesian, Peranakan" - }, - "wdd": { - "english_name": "Wandji" - }, - "bmj": { - "english_name": "Bote-Majhi" - }, - "nca": { - "english_name": "Iyo" - }, - "sxe": { - "english_name": "Sighu" - }, - "zns": { - "english_name": "Mangas" - }, - "tkx": { - "english_name": "Tangko" - }, - "anj": { - "english_name": "Anor" - }, - "gvc": { - "english_name": "Guanano" - }, - "zmk": { - "english_name": "Mandandanyi" - }, - "cwd": { - "english_name": "Cree, Woods" - }, - "fgr": { - "english_name": "Fongoro" - }, - "raw": { - "english_name": "Rawang" - }, - "lgu": { - "english_name": "Longgu" - }, - "cax": { - "english_name": "Chiquitano" - }, - "mub": { - "english_name": "Mubi" - }, - "phg": { - "english_name": "Phuong" - }, - "rer": { - "english_name": "Rer Bare" - }, - "wuy": { - "english_name": "Wauyai" - }, - "wdy": { - "english_name": "Wadjabangayi" - }, - "isn": { - "english_name": "Isanzu" - }, - "sxs": { - "english_name": "Sasaru" - }, - "pbg": { - "english_name": "Paraujano" - }, - "xac": { - "english_name": "Kachari" - }, - "nnk": { - "english_name": "Nankina" - }, - "tka": { - "english_name": "Truká" - }, - "alx": { - "english_name": "Amol" - }, - "abp": { - "english_name": "Ayta, Abellen" - }, - "uge": { - "english_name": "Ughele" - }, - "ijc": { - "english_name": "Izon" - }, - "szw": { - "english_name": "Sawai" - }, - "pms": { - "english_name": "Piemontese" - }, - "wun": { - "english_name": "Bungu" - }, - "bbo": { - "english_name": "Bobo Madaré, Northern" - }, - "syn": { - "english_name": "Senaya" - }, - "wic": { - "english_name": "Wichita" - }, - "kkl": { - "english_name": "Yale, Kosarek" - }, - "wur": { - "english_name": "Wurrugu" - }, - "ter": { - "english_name": "Tereno" - }, - "xwd": { - "english_name": "Wadi Wadi" - }, - "zln": { - "english_name": "Zhuang, Lianshan" - }, - "kbb": { - "english_name": "Kaxuiâna" - }, - "orz": { - "english_name": "Ormu" - }, - "tsp": { - "english_name": "Toussian, Northern" - }, - "kfy": { - "english_name": "Kumaoni" - }, - "ss": { - "english_name": "Swati" - }, - "dik": { - "english_name": "Dinka, Southwestern" - }, - "zte": { - "english_name": "Zapotec, Elotepec" - }, - "bri": { - "english_name": "Mokpwe" - }, - "tlj": { - "english_name": "Talinga-Bwisi" - }, - "wbr": { - "english_name": "Wagdi" - }, - "ldo": { - "english_name": "Loo" - }, - "kgc": { - "english_name": "Kasseng" - }, - "kes": { - "english_name": "Kugbo" - }, - "fng": { - "english_name": "Fanagalo" - }, - "btl": { - "english_name": "Bhatola" - }, - "cuh": { - "english_name": "Chuka" - }, - "pam": { - "english_name": "Pampanga" - }, - "bix": { - "english_name": "Bijori" - }, - "vmm": { - "english_name": "Mixtec, Mitlatongo" - }, - "kap": { - "english_name": "Bezhta" - }, - "or": { - "english_name": "Oriya (macrolanguage)", - "name": "Oriya (macrolanguage)" - }, - "gwu": { - "english_name": "Guwamu" - }, - "bkq": { - "english_name": "Bakairí" - }, - "mtv": { - "english_name": "Asaro'o" - }, - "mgm": { - "english_name": "Mambae" - }, - "kvh": { - "english_name": "Komodo" - }, - "ymh": { - "english_name": "Mili" - }, - "nzi": { - "english_name": "Nzima" - }, - "ldp": { - "english_name": "Tso" - }, - "yne": { - "english_name": "Lang'e" - }, - "hto": { - "english_name": "Huitoto, Minica" - }, - "lsd": { - "english_name": "Lishana Deni" - }, - "kqu": { - "english_name": "Seroa" - }, - "bog": { - "english_name": "Bamako Sign Language" - }, - "arh": { - "english_name": "Arhuaco" - }, - "ksn": { - "english_name": "Kasiguranin" - }, - "mzv": { - "english_name": "Manza" - }, - "jku": { - "english_name": "Labir" - }, - "jek": { - "english_name": "Jeri Kuo" - }, - "nmz": { - "english_name": "Nawdm" - }, - "kpk": { - "english_name": "Kpan" - }, - "bzi": { - "english_name": "Bisu" - }, - "tif": { - "english_name": "Tifal" - }, - "zmv": { - "english_name": "Mbariman-Gudhinma" - }, - "ggb": { - "english_name": "Gbii" - }, - "bjm": { - "english_name": "Bajelani" - }, - "jio": { - "english_name": "Jiamao" - }, - "otd": { - "english_name": "Ot Danum" - }, - "nna": { - "english_name": "Nyangumarta" - }, - "fal": { - "english_name": "Fali, South" - }, - "mth": { - "english_name": "Munggui" - }, - "mhw": { - "english_name": "Mbukushu" - }, - "mvu": { - "english_name": "Marfa" - }, - "quh": { - "english_name": "Quechua, South Bolivian" - }, - "nkx": { - "english_name": "Nkoroo" - }, - "huz": { - "english_name": "Hunzib" - }, - "src": { - "english_name": "Sardinian, Logudorese" - }, - "amy": { - "english_name": "Ami" - }, - "caa": { - "english_name": "Chortí" - }, - "wbe": { - "english_name": "Waritai" - }, - "gbv": { - "english_name": "Gbanu" - }, - "fod": { - "english_name": "Foodo" - }, - "och": { - "english_name": "Chinese, Old" - }, - "kgq": { - "english_name": "Kamoro" - }, - "lgk": { - "english_name": "Lingarak" - }, - "kyd": { - "english_name": "Karey" - }, - "laz": { - "english_name": "Aribwatsa" - }, - "xtu": { - "english_name": "Mixtec, Cuyamecalco" - }, - "bjg": { - "english_name": "Bidyogo" - }, - "rea": { - "english_name": "Rerau" - }, - "ltu": { - "english_name": "Latu" - }, - "noc": { - "english_name": "Nuk" - }, - "npa": { - "english_name": "Nar Phu" - }, - "lhs": { - "english_name": "Mlahsö" - }, - "ydd": { - "english_name": "Yiddish, Eastern" - }, - "bfm": { - "english_name": "Mmen" - }, - "bpn": { - "english_name": "Dzao Min" - }, - "beu": { - "english_name": "Blagar" - }, - "adr": { - "english_name": "Adonara" - }, - "ajn": { - "english_name": "Andajin" - }, - "cov": { - "english_name": "Cao Miao" - }, - "spb": { - "english_name": "Sepa (Indonesia)" - }, - "smr": { - "english_name": "Simeulue" - }, - "aad": { - "english_name": "Amal" - }, - "kkp": { - "english_name": "Gugubera" - }, - "xsq": { - "english_name": "Makhuwa-Saka" - }, - "prh": { - "english_name": "Porohanon" - }, - "ky": { - "english_name": "Kirghiz" - }, - "pio": { - "english_name": "Piapoco" - }, - "rnn": { - "english_name": "Roon" - }, - "skk": { - "english_name": "Sok" - }, - "wwo": { - "english_name": "Wetamut" - }, - "brm": { - "english_name": "Barambu" - }, - "kfl": { - "english_name": "Kung" - }, - "nys": { - "english_name": "Nyunga" - }, - "bdo": { - "english_name": "Morom" - }, - "bui": { - "english_name": "Bongili" - }, - "nrc": { - "english_name": "Noric" - }, - "mlo": { - "english_name": "Mlomp" - }, - "mpp": { - "english_name": "Migabac" - }, - "pcj": { - "english_name": "Parenga" - }, - "abe": { - "english_name": "Abnaki, Western" - }, - "cml": { - "english_name": "Campalagian" - }, - "mww": { - "english_name": "Hmong Daw" - }, - "aai": { - "english_name": "Arifama-Miniafia" - }, - "nol": { - "english_name": "Nomlaki" - }, - "nzb": { - "english_name": "Njebi" - }, - "kmi": { - "english_name": "Kami (Nigeria)" - }, - "nsw": { - "english_name": "Navut" - }, - "xlg": { - "english_name": "Ligurian (Ancient)" - }, - "cnx": { - "english_name": "Cornish, Middle" - }, - "fuv": { - "english_name": "Fulfulde, Nigerian" - }, - "deg": { - "english_name": "Degema" - }, - "knr": { - "english_name": "Kaningra" - }, - "elu": { - "english_name": "Elu" - }, - "mod": { - "english_name": "Mobilian" - }, - "ich": { - "english_name": "Etkywan" - }, - "pld": { - "english_name": "Polari" - }, - "ncs": { - "english_name": "Nicaraguan Sign Language" - }, - "zbt": { - "english_name": "Batui" - }, - "mdc": { - "english_name": "Male (Papua New Guinea)" - }, - "tck": { - "english_name": "Tchitchege" - }, - "mrb": { - "english_name": "Marino" - }, - "kya": { - "english_name": "Kwaya" - }, - "ytw": { - "english_name": "Yout Wam" - }, - "hig": { - "english_name": "Kamwe" - }, - "bxu": { - "english_name": "Buriat, China" - }, - "shy": { - "english_name": "Tachawit" - }, - "see": { - "english_name": "Seneca" - }, - "und": { - "english_name": "Undetermined" - }, - "kix": { - "english_name": "Naga, Khiamniungan" - }, - "bbt": { - "english_name": "Mburku" - }, - "knx": { - "english_name": "Kendayan" - }, - "ctl": { - "english_name": "Chinantec, Tlacoatzintepec" - }, - "wwb": { - "english_name": "Wakabunga" - }, - "fat": { - "english_name": "Fanti" - }, - "ml": { - "english_name": "Malayalam" - }, - "jml": { - "english_name": "Jumli" - }, - "trt": { - "english_name": "Tunggare" - }, - "nhq": { - "english_name": "Nahuatl, Huaxcaleca" - }, - "sru": { - "english_name": "Suruí" - }, - "tdu": { - "english_name": "Dusun, Tempasuk" - }, - "nxg": { - "english_name": "Ngad'a" - }, - "plk": { - "english_name": "Shina, Kohistani" - }, - "mhi": { - "english_name": "Ma'di" - }, - "sqk": { - "english_name": "Albanian Sign Language" - }, - "sfw": { - "english_name": "Sehwi" - }, - "avv": { - "english_name": "Avá-Canoeiro" - }, - "hrx": { - "english_name": "Hunsrik" - }, - "mec": { - "english_name": "Mara" - }, - "pgk": { - "english_name": "Rerep" - }, - "kiv": { - "english_name": "Kimbu" - }, - "omx": { - "english_name": "Mon, Old" - }, - "apf": { - "english_name": "Agta, Pahanan" - }, - "cug": { - "english_name": "Cung" - }, - "gay": { - "english_name": "Gayo" - }, - "naa": { - "english_name": "Namla" - }, - "mma": { - "english_name": "Mama" - }, - "tsm": { - "english_name": "Turkish Sign Language" - }, - "moc": { - "english_name": "Mocoví" - }, - "ian": { - "english_name": "Iatmul" - }, - "mjn": { - "english_name": "Ma (Papua New Guinea)" - }, - "has": { - "english_name": "Haisla" - }, - "bxg": { - "english_name": "Bangala" - }, - "tjw": { - "english_name": "Djabwurrung" - }, - "xld": { - "english_name": "Lydian" - }, - "kgt": { - "english_name": "Somyev" - }, - "twt": { - "english_name": "Turiwára" - }, - "drn": { - "english_name": "Damar, West" - }, - "akl": { - "english_name": "Aklanon" - }, - "brf": { - "english_name": "Bera" - }, - "ads": { - "english_name": "Adamorobe Sign Language" - }, - "xqt": { - "english_name": "Qatabanian" - }, - "kyr": { - "english_name": "Kuruáya" - }, - "nhx": { - "english_name": "Nahuatl, Isthmus-Mecayapan" - }, - "hnu": { - "english_name": "Hung" - }, - "zga": { - "english_name": "Kinga" - }, - "vro": { - "english_name": "Võro" - }, - "ing": { - "english_name": "Degexit'an" - }, - "oym": { - "english_name": "Wayampi" - }, - "kzz": { - "english_name": "Kalabra" - }, - "mwc": { - "english_name": "Are" - }, - "lee": { - "english_name": "Lyélé" - }, - "ygi": { - "english_name": "Yiningayi" - }, - "puw": { - "english_name": "Puluwatese" - }, - "juh": { - "english_name": "Hõne" - }, - "koi": { - "english_name": "Komi-Permyak" - }, - "noa": { - "english_name": "Woun Meu" - }, - "hoz": { - "english_name": "Hozo" - }, - "xmw": { - "english_name": "Malagasy, Tsimihety" - }, - "ckz": { - "english_name": "Cakchiquel-Quiché Mixed Language" - }, - "gai": { - "english_name": "Borei" - }, - "tlr": { - "english_name": "Talise" - }, - "pho": { - "english_name": "Phunoi" - }, - "rri": { - "english_name": "Ririo" - }, - "dza": { - "english_name": "Tunzu" - }, - "grw": { - "english_name": "Gweda" - }, - "bjx": { - "english_name": "Itneg, Banao" - }, - "sig": { - "english_name": "Paasaal" - }, - "lso": { - "english_name": "Laos Sign Language" - }, - "mcu": { - "english_name": "Mambila, Cameroon" - }, - "bnj": { - "english_name": "Tawbuid, Eastern" - }, - "mpa": { - "english_name": "Mpoto" - }, - "ywt": { - "english_name": "Lalo, Xishanba" - }, - "zps": { - "english_name": "Zapotec, Coatlán" - }, - "prq": { - "english_name": "Ashéninka Perené" - }, - "kgu": { - "english_name": "Kobol" - }, - "gaw": { - "english_name": "Nobonob" - }, - "kxw": { - "english_name": "Konai" - }, - "cum": { - "english_name": "Cumeral" - }, - "mra": { - "english_name": "Mlabri" - }, - "tjg": { - "english_name": "Tunjung" - }, - "dig": { - "english_name": "Digo" - }, - "nhu": { - "english_name": "Noone" - }, - "yln": { - "english_name": "Buyang, Langnian" - }, - "uvh": { - "english_name": "Uri" - }, - "dar": { - "english_name": "Dargwa" - }, - "psa": { - "english_name": "Awyu, Asue" - }, - "btz": { - "english_name": "Batak Alas-Kluet" - }, - "yax": { - "english_name": "Yauma" - }, - "ret": { - "english_name": "Retta" - }, - "goi": { - "english_name": "Gobasi" - }, - "zsa": { - "english_name": "Sarasira" - }, - "pkh": { - "english_name": "Pankhu" - }, - "mng": { - "english_name": "Mnong, Eastern" - }, - "hoa": { - "english_name": "Hoava" - }, - "csk": { - "english_name": "Jola-Kasa" - }, - "ped": { - "english_name": "Mala (Papua New Guinea)" - }, - "yal": { - "english_name": "Yalunka" - }, - "bif": { - "english_name": "Biafada" - }, - "mpv": { - "english_name": "Mungkip" - }, - "rms": { - "english_name": "Romanian Sign Language" - }, - "wnu": { - "english_name": "Usan" - }, - "xab": { - "english_name": "Sambe" - }, - "pmi": { - "english_name": "Pumi, Northern" - }, - "cut": { - "english_name": "Cuicatec, Teutila" - }, - "nmr": { - "english_name": "Nimbari" - }, - "srx": { - "english_name": "Sirmauri" - }, - "alz": { - "english_name": "Alur" - }, - "xtg": { - "english_name": "Gaulish, Transalpine" - }, - "kcx": { - "english_name": "Kachama-Ganjule" - }, - "skd": { - "english_name": "Miwok, Southern Sierra" - }, - "wux": { - "english_name": "Wulna" - }, - "dnn": { - "english_name": "Dzùùngoo" - }, - "jbo": { - "english_name": "Lojban" - }, - "irr": { - "english_name": "Ir" - }, - "tix": { - "english_name": "Tiwa, Southern" - }, - "tun": { - "english_name": "Tunica" - }, - "doe": { - "english_name": "Doe" - }, - "crv": { - "english_name": "Chaura" - }, - "apb": { - "english_name": "Sa'a" - }, - "bmk": { - "english_name": "Ghayavi" - }, - "mdx": { - "english_name": "Dizin" - }, - "bcl": { - "english_name": "Bikol, Central" - }, - "kbk": { - "english_name": "Koiari, Grass" - }, - "aap": { - "english_name": "Arára, Pará" - }, - "bob": { - "english_name": "Aweer" - }, - "kqh": { - "english_name": "Kisankasa" - }, - "wa": { - "english_name": "Walloon", - "name": "Walon" - }, - "mwu": { - "english_name": "Mittu" - }, - "vgt": { - "english_name": "Vlaamse Gebarentaal" - }, - "lcs": { - "english_name": "Lisabata-Nuniali" - }, - "ngk": { - "english_name": "Dalabon" - }, - "kel": { - "english_name": "Kela (Democratic Republic of Congo)" - }, - "cpa": { - "english_name": "Chinantec, Palantla" - }, - "sfm": { - "english_name": "Miao, Small Flowery" - }, - "zmw": { - "english_name": "Mbo (Democratic Republic of Congo)" - }, - "sxn": { - "english_name": "Sangir" - }, - "pup": { - "english_name": "Pulabu" - }, - "ify": { - "english_name": "Kallahan, Keley-I" - }, - "bdy": { - "english_name": "Bandjalang" - }, - "ynn": { - "english_name": "Yana" - }, - "ubi": { - "english_name": "Ubi" - }, - "hem": { - "english_name": "Hemba" - }, - "pdi": { - "english_name": "Pa Di" - }, - "nvm": { - "english_name": "Namiae" - }, - "kxb": { - "english_name": "Krobu" - }, - "meq": { - "english_name": "Merey" - }, - "mim": { - "english_name": "Mixtec, Alacatlatzala" - }, - "ae": { - "english_name": "Avestan" - }, - "zpq": { - "english_name": "Zapotec, Zoogocho" - }, - "mge": { - "english_name": "Mango" - }, - "xaa": { - "english_name": "Arabic, Andalusian" - }, - "zku": { - "english_name": "Kaurna" - }, - "ore": { - "english_name": "Orejón" - }, - "ytp": { - "english_name": "Thopho" - }, - "kbl": { - "english_name": "Kanembu" - }, - "cet": { - "english_name": "Centúúm" - }, - "et": { - "english_name": "Estonian", - "name": "Eesti" - }, - "tkg": { - "english_name": "Malagasy, Tesaka" - }, - "kry": { - "english_name": "Kryts" - }, - "ddw": { - "english_name": "Dawera-Daweloor" - }, - "jae": { - "english_name": "Yabem" - }, - "hmy": { - "english_name": "Hmong, Southern Guiyang" - }, - "bsg": { - "english_name": "Bashkardi" - }, - "geh": { - "english_name": "German, Hutterite" - }, - "tij": { - "english_name": "Tilung" - }, - "tic": { - "english_name": "Tira" - }, - "iwm": { - "english_name": "Iwam" - }, - "swq": { - "english_name": "Sharwa" - }, - "auj": { - "english_name": "Awjilah" - }, - "la": { - "english_name": "Latin" - }, - "njy": { - "english_name": "Njyem" - }, - "abh": { - "english_name": "Arabic, Tajiki" - }, - "lan": { - "english_name": "Laru" - }, - "aya": { - "english_name": "Awar" - }, - "paq": { - "english_name": "Parya" - }, - "yae": { - "english_name": "Pumé" - }, - "pur": { - "english_name": "Puruborá" - }, - "yml": { - "english_name": "Iamalele" - }, - "alm": { - "english_name": "Amblong" - }, - "gyi": { - "english_name": "Gyele" - }, - "zbc": { - "english_name": "Berawan, Central" - }, - "itx": { - "english_name": "Itik" - }, - "wxw": { - "english_name": "Wardandi" - }, - "cs": { - "english_name": "Czech", - "name": "čeština" - }, - "nkq": { - "english_name": "Nkami" - }, - "unn": { - "english_name": "Kurnai" - }, - "tql": { - "english_name": "Lehali" - }, - "baa": { - "english_name": "Babatana" - }, - "bwo": { - "english_name": "Boro (Ethiopia)" - }, - "mks": { - "english_name": "Mixtec, Silacayoapan" - }, - "cwg": { - "english_name": "Chewong" - }, - "ukq": { - "english_name": "Ukwa" - }, - "shh": { - "english_name": "Shoshoni" - }, - "tca": { - "english_name": "Ticuna" - }, - "mbq": { - "english_name": "Maisin" - }, - "xth": { - "english_name": "Yitha Yitha" - }, - "dln": { - "english_name": "Darlong" - }, - "srh": { - "english_name": "Sarikoli" - }, - "bol": { - "english_name": "Bole" - }, - "dzn": { - "english_name": "Dzando" - }, - "nr": { - "english_name": "Ndebele, South" - }, - "hmm": { - "english_name": "Hmong, Central Mashan" - }, - "enn": { - "english_name": "Engenni" - }, - "hsn": { - "english_name": "Chinese, Xiang" - }, - "aps": { - "english_name": "Arop-Sissano" - }, - "kcn": { - "english_name": "Nubi" - }, - "tww": { - "english_name": "Tuwari" - }, - "prf": { - "english_name": "Paranan" - }, - "anm": { - "english_name": "Anal" - }, - "yey": { - "english_name": "Yeyi" - }, - "suk": { - "english_name": "Sukuma" - }, - "adl": { - "english_name": "Galo" - }, - "dsn": { - "english_name": "Dusner" - }, - "oc": { - "english_name": "Occitan (post 1500)", - "name": "Occitan (aprèp 1500)" - }, - "cpg": { - "english_name": "Greek, Cappadocian" - }, - "gez": { - "english_name": "Geez", - "name": "ግዕዝኛ" - }, - "aal": { - "english_name": "Afade" - }, - "mll": { - "english_name": "Malua Bay" - }, - "tne": { - "english_name": "Kallahan, Tinoc" - }, - "ses": { - "english_name": "Songhai, Koyraboro Senni" - }, - "kvn": { - "english_name": "Kuna, Border" - }, - "bdf": { - "english_name": "Biage" - }, - "ckq": { - "english_name": "Kajakse" - }, - "bnv": { - "english_name": "Bonerif" - }, - "qur": { - "english_name": "Quechua, Yanahuanca Pasco" - }, - "mzp": { - "english_name": "Movima" - }, - "kiz": { - "english_name": "Kisi" - }, - "hkk": { - "english_name": "Hunjara-Kaina Ke" - }, - "urw": { - "english_name": "Sop" - }, - "kis": { - "english_name": "Kis" - }, - "lel": { - "english_name": "Lele (Democratic Republic of Congo)" - }, - "xxb": { - "english_name": "Boro (Ghana)" - }, - "nua": { - "english_name": "Yuanga" - }, - "tuy": { - "english_name": "Tugen" - }, - "boo": { - "english_name": "Bozo, Tiemacèwè" - }, - "shx": { - "english_name": "She" - }, - "dmo": { - "english_name": "Kemedzung" - }, - "vmh": { - "english_name": "Maraghei" - }, - "xal": { - "english_name": "Kalmyk" - }, - "sle": { - "english_name": "Sholaga" - }, - "xny": { - "english_name": "Nyiyaparli" - }, - "coj": { - "english_name": "Cochimi" - }, - "lva": { - "english_name": "Maku'a" - }, - "ant": { - "english_name": "Antakarinya" - }, - "kti": { - "english_name": "Muyu, North" - }, - "ude": { - "english_name": "Udihe" - }, - "dww": { - "english_name": "Dawawa" - }, - "aob": { - "english_name": "Abom" - }, - "gdu": { - "english_name": "Gudu" - }, - "ceg": { - "english_name": "Chamacoco" - }, - "mrk": { - "english_name": "Hmwaveke" - }, - "nle": { - "english_name": "Nyala, East" - }, - "kil": { - "english_name": "Kariya" - }, - "sdn": { - "english_name": "Sardinian, Gallurese" - }, - "cin": { - "english_name": "Cinta Larga" - }, - "cop": { - "english_name": "Coptic" - }, - "soc": { - "english_name": "So (Democratic Republic of Congo)" - }, - "ayk": { - "english_name": "Akuku" - }, - "mfb": { - "english_name": "Bangka" - }, - "nqy": { - "english_name": "Naga, Akyaung Ari" - }, - "cux": { - "english_name": "Cuicatec, Tepeuxila" - }, - "zkb": { - "english_name": "Koibal" - }, - "vo": { - "english_name": "Volapük" - }, - "das": { - "english_name": "Daho-Doo" - }, - "wlk": { - "english_name": "Wailaki" - }, - "reg": { - "english_name": "Kara (Tanzania)" - }, - "mlq": { - "english_name": "Maninkakan, Western" - }, - "loi": { - "english_name": "Loma (Côte d'Ivoire)" - }, - "bna": { - "english_name": "Bonerate" - }, - "tht": { - "english_name": "Tahltan" - }, - "szv": { - "english_name": "Isu (Fako Division)" - }, - "pyn": { - "english_name": "Poyanáwa" - }, - "phm": { - "english_name": "Phimbi" - }, - "lbm": { - "english_name": "Lodhi" - }, - "cks": { - "english_name": "Tayo" - }, - "zkv": { - "english_name": "Krevinian" - }, - "nlv": { - "english_name": "Nahuatl, Orizaba" - }, - "isr": { - "english_name": "Israeli Sign Language" - }, - "fbl": { - "english_name": "Bikol, West Albay" - }, - "mmc": { - "english_name": "Mazahua, Michoacán" - }, - "umi": { - "english_name": "Ukit" - }, - "nha": { - "english_name": "Nhanda" - }, - "ypa": { - "english_name": "Phala" - }, - "cbg": { - "english_name": "Chimila" - }, - "xda": { - "english_name": "Darkinyung" - }, - "pdo": { - "english_name": "Padoe" - }, - "ipi": { - "english_name": "Ipili" - }, - "rit": { - "english_name": "Ritarungo" - }, - "ekc": { - "english_name": "Karnic, Eastern" - }, - "kav": { - "english_name": "Katukína" - }, - "tep": { - "english_name": "Tepecano" - }, - "yox": { - "english_name": "Yoron" - }, - "yat": { - "english_name": "Yambeta" - }, - "sgp": { - "english_name": "Singpho" - }, - "tnw": { - "english_name": "Tonsawang" - }, - "nuo": { - "english_name": "Nguôn" - }, - "kig": { - "english_name": "Kimaama" - }, - "cpu": { - "english_name": "Ashéninka, Pichis" - }, - "klu": { - "english_name": "Klao" - }, - "mhu": { - "english_name": "Digaro-Mishmi" - }, - "mns": { - "english_name": "Mansi" - }, - "sxb": { - "english_name": "Suba" - }, - "krz": { - "english_name": "Kanum, Sota" - }, - "nlx": { - "english_name": "Nahali" - }, - "xsr": { - "english_name": "Sherpa" - }, - "mpz": { - "english_name": "Mpi" - }, - "tdy": { - "english_name": "Tadyawan" - }, - "sqo": { - "english_name": "Sorkhei" - }, - "gia": { - "english_name": "Kitja" - }, - "gnq": { - "english_name": "Gana" - }, - "nwm": { - "english_name": "Nyamusa-Molo" - }, - "cbo": { - "english_name": "Izora" - }, - "csh": { - "english_name": "Chin, Asho" - }, - "txy": { - "english_name": "Malagasy, Tanosy" - }, - "vut": { - "english_name": "Vute" - }, - "yih": { - "english_name": "Yiddish, Western" - }, - "ynu": { - "english_name": "Yahuna" - }, - "dum": { - "english_name": "Dutch, Middle (ca. 1050-1350)" - }, - "fmp": { - "english_name": "Fe'fe'" - }, - "nup": { - "english_name": "Nupe-Nupe-Tako" - }, - "kqw": { - "english_name": "Kandas" - }, - "xup": { - "english_name": "Umpqua, Upper" - }, - "nsc": { - "english_name": "Nshi" - }, - "wnb": { - "english_name": "Wanambre" - }, - "pez": { - "english_name": "Penan, Eastern" - }, - "bdn": { - "english_name": "Baldemu" - }, - "ssr": { - "english_name": "Swiss-French Sign Language" - }, - "wir": { - "english_name": "Wiraféd" - }, - "tzo": { - "english_name": "Tzotzil" - }, - "lrr": { - "english_name": "Yamphu, Southern" - }, - "umu": { - "english_name": "Munsee" - }, - "bvo": { - "english_name": "Bolgo" - }, - "kep": { - "english_name": "Kaikadi" - }, - "qxs": { - "english_name": "Qiang, Southern" - }, - "kbs": { - "english_name": "Kande" - }, - "amv": { - "english_name": "Ambelau" - }, - "zca": { - "english_name": "Zapotec, Coatecas Altas" - }, - "bun": { - "english_name": "Sherbro" - }, - "koy": { - "english_name": "Koyukon" - }, - "kaj": { - "english_name": "Jju" - }, - "aky": { - "english_name": "Aka-Kol" - }, - "une": { - "english_name": "Uneme" - }, - "bgx": { - "english_name": "Turkish, Balkan Gagauz" - }, - "apr": { - "english_name": "Arop-Lokep" - }, - "bir": { - "english_name": "Bisorio" - }, - "aes": { - "english_name": "Alsea" - }, - "pko": { - "english_name": "Pökoot" - }, - "lkn": { - "english_name": "Lakon" - }, - "mdu": { - "english_name": "Mboko" - }, - "sa": { - "english_name": "Sanskrit" - }, - "vmq": { - "english_name": "Mixtec, Soyaltepec" - }, - "nei": { - "english_name": "Hittite, Neo-" - }, - "moe": { - "english_name": "Montagnais" - }, - "huv": { - "english_name": "Huave, San Mateo Del Mar" - }, - "mgl": { - "english_name": "Maleu-Kilenge" - }, - "ssi": { - "english_name": "Sansi" - }, - "gvj": { - "english_name": "Guajá" - }, - "jil": { - "english_name": "Jilim" - }, - "dil": { - "english_name": "Dilling" - }, - "csw": { - "english_name": "Cree, Swampy" - }, - "aud": { - "english_name": "Anuta" - }, - "rkb": { - "english_name": "Rikbaktsa" - }, - "ggd": { - "english_name": "Gugadj" - }, - "awk": { - "english_name": "Awabakal" - }, - "bvz": { - "english_name": "Bauzi" - }, - "eko": { - "english_name": "Koti" - }, - "dyu": { - "english_name": "Dyula" - }, - "snb": { - "english_name": "Sebuyau" - }, - "ruu": { - "english_name": "Lobu, Lanas" - }, - "har": { - "english_name": "Harari" - }, - "twn": { - "english_name": "Twendi" - }, - "hne": { - "english_name": "Chhattisgarhi" - }, - "rav": { - "english_name": "Sampang" - }, - "dec": { - "english_name": "Dagik" - }, - "mqv": { - "english_name": "Mosimo" - }, - "hps": { - "english_name": "Hawai'i Pidgin Sign Language" - }, - "avk": { - "english_name": "Kotava" - }, - "tjl": { - "english_name": "Tai Laing" - }, - "pmc": { - "english_name": "Palumata" - }, - "xyy": { - "english_name": "Yorta Yorta" - }, - "snl": { - "english_name": "Sangil" - }, - "cae": { - "english_name": "Lehar" - }, - "pll": { - "english_name": "Palaung, Shwe" - }, - "bxp": { - "english_name": "Bebil" - }, - "mzn": { - "english_name": "Mazanderani" - }, - "kqv": { - "english_name": "Okolod" - }, - "nyg": { - "english_name": "Nyindu" - }, - "pmj": { - "english_name": "Pumi, Southern" - }, - "axl": { - "english_name": "Aranda, Lower Southern" - }, - "enh": { - "english_name": "Enets, Tundra" - }, - "swb": { - "english_name": "Comorian, Maore" - }, - "tju": { - "english_name": "Tjurruru" - }, - "fwa": { - "english_name": "Fwâi" - }, - "tgc": { - "english_name": "Tigak" - }, - "aan": { - "english_name": "Anambé" - }, - "krb": { - "english_name": "Karkin" - }, - "kww": { - "english_name": "Kwinti" - }, - "gwb": { - "english_name": "Gwa" - }, - "bql": { - "english_name": "Bilakura" - }, - "igw": { - "english_name": "Igwe" - }, - "ukl": { - "english_name": "Ukrainian Sign Language" - }, - "kha": { - "english_name": "Khasi" - }, - "lec": { - "english_name": "Leco" - }, - "cac": { - "english_name": "Chuj" - }, - "sce": { - "english_name": "Dongxiang" - }, - "dgw": { - "english_name": "Daungwurrung" - }, - "ana": { - "english_name": "Andaqui" - }, - "xyj": { - "english_name": "Mayi-Yapi" - }, - "cco": { - "english_name": "Chinantec, Comaltepec" - }, - "kcz": { - "english_name": "Konongo" - }, - "adx": { - "english_name": "Tibetan, Amdo" - }, - "keg": { - "english_name": "Tese" - }, - "sbr": { - "english_name": "Sembakung Murut" - }, - "hks": { - "english_name": "Hong Kong Sign Language" - }, - "xkc": { - "english_name": "Kho'ini" - }, - "mew": { - "english_name": "Maaka" - }, - "kxq": { - "english_name": "Kanum, Smärky" - }, - "cfm": { - "english_name": "Chin, Falam" - }, - "mud": { - "english_name": "Aleut, Mednyj" - }, - "mhk": { - "english_name": "Mungaka" - }, - "pci": { - "english_name": "Duruwa" - }, - "gao": { - "english_name": "Gants" - }, - "lib": { - "english_name": "Likum" - }, - "mym": { - "english_name": "Me'en" - }, - "vif": { - "english_name": "Vili" - }, - "bqv": { - "english_name": "Koro Wachi" - }, - "sog": { - "english_name": "Sogdian" - }, - "atg": { - "english_name": "Ivbie North-Okpela-Arhe" - }, - "gyb": { - "english_name": "Garus" - }, - "ghr": { - "english_name": "Ghera" - }, - "nlj": { - "english_name": "Nyali" - }, - "sno": { - "english_name": "Snohomish" - }, - "gwm": { - "english_name": "Awngthim" - }, - "nbr": { - "english_name": "Numana-Nunku-Gbantu-Numbu" - }, - "duj": { - "english_name": "Dhuwal" - }, - "btw": { - "english_name": "Butuanon" - }, - "nfl": { - "english_name": "Ayiwo" - }, - "pbi": { - "english_name": "Parkwa" - }, - "mvi": { - "english_name": "Miyako" - }, - "sbm": { - "english_name": "Sagala" - }, - "onk": { - "english_name": "One, Kabore" - }, - "cib": { - "english_name": "Gbe, Ci" - }, - "kxo": { - "english_name": "Kanoé" - }, - "uur": { - "english_name": "Ura (Vanuatu)" - }, - "ysr": { - "english_name": "Yupik, Sirenik" - }, - "sbs": { - "english_name": "Subiya" - }, - "skf": { - "english_name": "Sakirabiá" - }, - "how": { - "english_name": "Honi" - }, - "slt": { - "english_name": "Sila" - }, - "kjz": { - "english_name": "Bumthangkha" - }, - "gge": { - "english_name": "Guragone" - }, - "twg": { - "english_name": "Tereweng" - }, - "rmf": { - "english_name": "Romani, Kalo Finnish" - }, - "yer": { - "english_name": "Tarok" - }, - "jut": { - "english_name": "Jutish" - }, - "tfr": { - "english_name": "Teribe" - }, - "bfq": { - "english_name": "Badaga" - }, - "mca": { - "english_name": "Maca" - }, - "hae": { - "english_name": "Oromo, Eastern" - }, - "bce": { - "english_name": "Bamenyam" - }, - "itl": { - "english_name": "Itelmen" - }, - "ylm": { - "english_name": "Limi" - }, - "oso": { - "english_name": "Ososo" - }, - "mzl": { - "english_name": "Mixe, Mazatlán" - }, - "xiv": { - "english_name": "Indus Valley Language" - }, - "kwe": { - "english_name": "Kwerba" - }, - "utr": { - "english_name": "Etulo" - }, - "moi": { - "english_name": "Mboi" - }, - "kug": { - "english_name": "Kupa" - }, - "ano": { - "english_name": "Andoque" - }, - "kpl": { - "english_name": "Kpala" - }, - "ndh": { - "english_name": "Ndali" - }, - "tve": { - "english_name": "Te'un" - }, - "pow": { - "english_name": "Popoloca, San Felipe Otlaltepec" - }, - "vlp": { - "english_name": "Valpei" - }, - "bms": { - "english_name": "Kanuri, Bilma" - }, - "was": { - "english_name": "Washo" - }, - "lmg": { - "english_name": "Lamogai" - }, - "ssm": { - "english_name": "Semnam" - }, - "mbk": { - "english_name": "Malol" - }, - "lht": { - "english_name": "Lo-Toga" - }, - "jwi": { - "english_name": "Jwira-Pepesa" - }, - "idi": { - "english_name": "Idi" - }, - "nxa": { - "english_name": "Nauete" - }, - "bdc": { - "english_name": "Emberá-Baudó" - }, - "rji": { - "english_name": "Raji" - }, - "gua": { - "english_name": "Shiki" - }, - "bli": { - "english_name": "Bolia" - }, - "rw": { - "english_name": "Kinyarwanda", - "name": "Ikinyarwanda" - }, - "niz": { - "english_name": "Ningil" - }, - "glw": { - "english_name": "Glavda" - }, - "kjf": { - "english_name": "Khalaj" - }, - "taf": { - "english_name": "Tapirapé" - }, - "kvx": { - "english_name": "Koli, Parkari" - }, - "lgt": { - "english_name": "Pahi" - }, - "mtw": { - "english_name": "Binukidnon, Southern" - }, - "dah": { - "english_name": "Gwahatike" - }, - "eya": { - "english_name": "Eyak" - }, - "okl": { - "english_name": "Kentish Sign Language, Old" - }, - "olo": { - "english_name": "Livvi" - }, - "urt": { - "english_name": "Urat" - }, - "apw": { - "english_name": "Apache, Western" - }, - "cqd": { - "english_name": "Miao, Chuanqiandian Cluster" - }, - "arl": { - "english_name": "Arabela" - }, - "mku": { - "english_name": "Maninka, Konyanka" - }, - "omu": { - "english_name": "Omurano" - }, - "lle": { - "english_name": "Lele (Papua New Guinea)" - }, - "hum": { - "english_name": "Hungana" - }, - "coe": { - "english_name": "Koreguaje" - }, - "lpx": { - "english_name": "Lopit" - }, - "ayz": { - "english_name": "Mai Brat" - }, - "xep": { - "english_name": "Epi-Olmec" - }, - "fuy": { - "english_name": "Fuyug" - }, - "klg": { - "english_name": "Tagakaulo" - }, - "qud": { - "english_name": "Quichua, Calderón Highland" - }, - "nye": { - "english_name": "Nyengo" - }, - "mro": { - "english_name": "Mru" - }, - "nsg": { - "english_name": "Ngasa" - }, - "niy": { - "english_name": "Ngiti" - }, - "dri": { - "english_name": "C'lela" - }, - "bnf": { - "english_name": "Masiwang" - }, - "kou": { - "english_name": "Koke" - }, - "rwk": { - "english_name": "Rwa" - }, - "csm": { - "english_name": "Miwok, Central Sierra" - }, - "qvm": { - "english_name": "Quechua, Margos-Yarowilca-Lauricocha" - }, - "tvo": { - "english_name": "Tidore" - }, - "nof": { - "english_name": "Nomane" - }, - "kle": { - "english_name": "Kulung (Nepal)" - }, - "rro": { - "english_name": "Waima" - }, - "xkl": { - "english_name": "Mainstream Kenyah" - }, - "mlb": { - "english_name": "Mbule" - }, - "pnm": { - "english_name": "Punan Batu 1" - }, - "ims": { - "english_name": "Marsian" - }, - "avs": { - "english_name": "Aushiri" - }, - "muy": { - "english_name": "Muyang" - }, - "adu": { - "english_name": "Aduge" - }, - "mto": { - "english_name": "Mixe, Totontepec" - }, - "pav": { - "english_name": "Pakaásnovos" - }, - "luc": { - "english_name": "Aringa" - }, - "yaf": { - "english_name": "Yaka (Democratic Republic of Congo)" - }, - "wru": { - "english_name": "Waru" - }, - "kht": { - "english_name": "Khamti" - }, - "mdf": { - "english_name": "Moksha" - }, - "zaw": { - "english_name": "Zapotec, Mitla" - }, - "zoc": { - "english_name": "Zoque, Copainalá" - }, - "nji": { - "english_name": "Gudanji" - }, - "lal": { - "english_name": "Lalia" - }, - "dyo": { - "english_name": "Jola-Fonyi" - }, - "tkw": { - "english_name": "Teanu" - }, - "bdb": { - "english_name": "Basap" - }, - "gwf": { - "english_name": "Gowro" - }, - "sxw": { - "english_name": "Gbe, Saxwe" - }, - "dbp": { - "english_name": "Duwai" - }, - "muu": { - "english_name": "Yaaku" - }, - "bbq": { - "english_name": "Bamali" - }, - "gdc": { - "english_name": "Gugu Badhun" - }, - "kwx": { - "english_name": "Khirwar" - }, - "bdz": { - "english_name": "Badeshi" - }, - "duh": { - "english_name": "Dungra Bhil" - }, - "agz": { - "english_name": "Agta, Mt. Iriga" - }, - "klv": { - "english_name": "Maskelynes" - }, - "czh": { - "english_name": "Chinese, Huizhou" - }, - "pnx": { - "english_name": "Phong-Kniang" - }, - "hal": { - "english_name": "Halang" - }, - "gir": { - "english_name": "Gelao, Red" - }, - "buy": { - "english_name": "Bullom So" - }, - "adj": { - "english_name": "Adioukrou" - }, - "ils": { - "english_name": "International Sign" - }, - "man": { - "english_name": "Mandingo" - }, - "mkp": { - "english_name": "Moikodi" - }, - "ndi": { - "english_name": "Samba Leko" - }, - "mga": { - "english_name": "Irish, Middle (900-1200)" - }, - "aaa": { - "english_name": "Ghotuo" - }, - "bdq": { - "english_name": "Bahnar" - }, - "xar": { - "english_name": "Karami" - }, - "bvy": { - "english_name": "Baybayanon" - }, - "kgd": { - "english_name": "Kataang" - }, - "rng": { - "english_name": "Ronga" - }, - "mhj": { - "english_name": "Mogholi" - }, - "xrw": { - "english_name": "Karawa" - }, - "npu": { - "english_name": "Naga, Puimei" - }, - "kri": { - "english_name": "Krio" - }, - "beo": { - "english_name": "Beami" - }, - "xct": { - "english_name": "Tibetan, Classical" - }, - "twx": { - "english_name": "Tewe" - }, - "cnt": { - "english_name": "Chinantec, Tepetotutla" - }, - "nsa": { - "english_name": "Naga, Sangtam" - }, - "pub": { - "english_name": "Purum" - }, - "cbe": { - "english_name": "Chipiajes" - }, - "zgb": { - "english_name": "Zhuang, Guibei" - }, - "ogo": { - "english_name": "Khana" - }, - "bbd": { - "english_name": "Bau" - }, - "tmr": { - "english_name": "Aramaic, Jewish Babylonian (ca. 200-1200 CE)" - }, - "ghl": { - "english_name": "Ghulfan" - }, - "tit": { - "english_name": "Tinigua" - }, - "eme": { - "english_name": "Emerillon" - }, - "pha": { - "english_name": "Pa-Hng" - }, - "nxr": { - "english_name": "Ninggerum" - }, - "zas": { - "english_name": "Zapotec, Santo Domingo Albarradas" - }, - "kwy": { - "english_name": "Kongo, San Salvador" - }, - "mbd": { - "english_name": "Manobo, Dibabawon" - }, - "bil": { - "english_name": "Bile" - }, - "kcd": { - "english_name": "Kanum, Ngkâlmpw" - }, - "snr": { - "english_name": "Sihan" - }, - "tce": { - "english_name": "Tutchone, Southern" - }, - "bco": { - "english_name": "Kaluli" - }, - "kjx": { - "english_name": "Ramopa" - }, - "dmc": { - "english_name": "Gavak" - }, - "mez": { - "english_name": "Menominee" - }, - "kyf": { - "english_name": "Kouya" - }, - "zkz": { - "english_name": "Khazar" - }, - "koz": { - "english_name": "Korak" - }, - "gac": { - "english_name": "Great Andamanese, Mixed" - }, - "fak": { - "english_name": "Fang (Cameroon)" - }, - "pwn": { - "english_name": "Paiwan" - }, - "qxo": { - "english_name": "Quechua, Southern Conchucos Ancash" - }, - "nio": { - "english_name": "Nganasan" - }, - "igs": { - "english_name": "Interglossa" - }, - "bzl": { - "english_name": "Boano (Sulawesi)" - }, - "tis": { - "english_name": "Itneg, Masadiit" - }, - "itt": { - "english_name": "Itneg, Maeng" - }, - "lka": { - "english_name": "Lakalei" - }, - "snc": { - "english_name": "Sinaugoro" - }, - "jbu": { - "english_name": "Jukun Takum" - }, - "hoy": { - "english_name": "Holiya" - }, - "aox": { - "english_name": "Atorada" - }, - "tsx": { - "english_name": "Mubami" - }, - "fab": { - "english_name": "Fa d'Ambu" - }, - "csi": { - "english_name": "Miwok, Coast" - }, - "ccd": { - "english_name": "Creole, Cafundo" - }, - "mzs": { - "english_name": "Macanese" - }, - "gib": { - "english_name": "Gibanawa" - }, - "bbf": { - "english_name": "Baibai" - }, - "mju": { - "english_name": "Manna-Dora" - }, - "xh": { - "english_name": "Xhosa", - "name": "Xhosa" - }, - "bsm": { - "english_name": "Busami" - }, - "mrq": { - "english_name": "Marquesan, North" - }, - "btu": { - "english_name": "Batu" - }, - "kxj": { - "english_name": "Kulfa" - }, - "mrw": { - "english_name": "Maranao" - }, - "brt": { - "english_name": "Bitare" - }, - "blz": { - "english_name": "Balantak" - }, - "ttc": { - "english_name": "Tektiteko" - }, - "lls": { - "english_name": "Lithuanian Sign Language" - }, - "yrm": { - "english_name": "Yirrk-Mel" - }, - "tni": { - "english_name": "Tandia" - }, - "knn": { - "english_name": "Konkani (individual language)" - }, - "frr": { - "english_name": "Frisian, Northern" - }, - "tmq": { - "english_name": "Tumleo" - }, - "hdy": { - "english_name": "Hadiyya" - }, - "sox": { - "english_name": "Swo" - }, - "dva": { - "english_name": "Duau" - }, - "chf": { - "english_name": "Chontal, Tabasco" - }, - "bsr": { - "english_name": "Bassa-Kontagora" - }, - "ce": { - "english_name": "Chechen" - }, - "pnq": { - "english_name": "Pana (Burkina Faso)" - }, - "wrg": { - "english_name": "Warungu" - }, - "bkn": { - "english_name": "Bukitan" - }, - "chd": { - "english_name": "Chontal, Highland Oaxaca" - }, - "scb": { - "english_name": "Chut" - }, - "nyo": { - "english_name": "Nyoro" - }, - "ti": { - "english_name": "Tigrinya", - "name": "ትግርኛ" - }, - "tbf": { - "english_name": "Mandara" - }, - "nnt": { - "english_name": "Nanticoke" - }, - "spt": { - "english_name": "Bhoti, Spiti" - }, - "kbx": { - "english_name": "Ap Ma" - }, - "cao": { - "english_name": "Chácobo" - }, - "bbb": { - "english_name": "Barai" - }, - "pwa": { - "english_name": "Pawaia" - }, - "ngq": { - "english_name": "Ngurimi" - }, - "woy": { - "english_name": "Weyto" - }, - "txh": { - "english_name": "Thracian" - }, - "lem": { - "english_name": "Nomaande" - }, - "bbv": { - "english_name": "Karnai" - }, - "bqr": { - "english_name": "Burusu" - }, - "spg": { - "english_name": "Sian" - }, - "bwl": { - "english_name": "Bwela" - }, - "guu": { - "english_name": "Yanomamö" - }, - "skc": { - "english_name": "Ma Manda" - }, - "mmh": { - "english_name": "Mehináku" - }, - "mdj": { - "english_name": "Mangbetu" - }, - "pog": { - "english_name": "Potiguára" - }, - "dzg": { - "english_name": "Dazaga" - }, - "apt": { - "english_name": "Apatani" - }, - "skx": { - "english_name": "Seko Padang" - }, - "anh": { - "english_name": "Nend" - }, - "dot": { - "english_name": "Dass" - }, - "kuq": { - "english_name": "Karipuna" - }, - "vav": { - "english_name": "Varli" - }, - "cua": { - "english_name": "Cua" - }, - "xtm": { - "english_name": "Mixtec, Magdalena Peñasco" - }, - "ldg": { - "english_name": "Lenyima" - }, - "teh": { - "english_name": "Tehuelche" - }, - "tlp": { - "english_name": "Totonac, Filomena Mata-Coahuitlán" - }, - "tiz": { - "english_name": "Tai Hongjin" - }, - "abi": { - "english_name": "Abidji" - }, - "hmc": { - "english_name": "Hmong, Central Huishui" - }, - "pga": { - "english_name": "Creole Arabic, Sudanese" - }, - "ayt": { - "english_name": "Ayta, Magbukun" - }, - "peh": { - "english_name": "Bonan" - }, - "xuj": { - "english_name": "Kurumba, Jennu" - }, - "dua": { - "english_name": "Duala" - }, - "ch": { - "english_name": "Chamorro" - }, - "bwt": { - "english_name": "Bafaw-Balong" - }, - "cld": { - "english_name": "Neo-Aramaic, Chaldean" - }, - "ilu": { - "english_name": "Ili'uun" - }, - "min": { - "english_name": "Minangkabau" - }, - "oaa": { - "english_name": "Orok" - }, - "nyl": { - "english_name": "Nyeu" - }, - "wgy": { - "english_name": "Warrgamay" - }, - "wai": { - "english_name": "Wares" - }, - "bdk": { - "english_name": "Budukh" - }, - "jee": { - "english_name": "Jerung" - }, - "gdj": { - "english_name": "Gurdjar" - }, - "plh": { - "english_name": "Paulohi" - }, - "byh": { - "english_name": "Bhujel" - }, - "rka": { - "english_name": "Kraol" - }, - "bkd": { - "english_name": "Binukid" - }, - "mmz": { - "english_name": "Mabaale" - }, - "ljp": { - "english_name": "Lampung Api" - }, - "whg": { - "english_name": "Wahgi, North" - }, - "vaj": { - "english_name": "Vasekela Bushman" - }, - "hit": { - "english_name": "Hittite" - }, - "aht": { - "english_name": "Ahtena" - }, - "cli": { - "english_name": "Chakali" - }, - "nuk": { - "english_name": "Nuu-chah-nulth" - }, - "fuf": { - "english_name": "Pular" - }, - "drb": { - "english_name": "Dair" - }, - "bbj": { - "english_name": "Ghomálá'" - }, - "pov": { - "english_name": "Crioulo, Upper Guinea" - }, - "eli": { - "english_name": "Nding" - }, - "pqa": { - "english_name": "Pa'a" - }, - "njz": { - "english_name": "Nyishi" - }, - "lij": { - "english_name": "Ligurian" - }, - "sok": { - "english_name": "Sokoro" - }, - "bfn": { - "english_name": "Bunak" - }, - "zim": { - "english_name": "Mesme" - }, - "phw": { - "english_name": "Phangduwali" - }, - "amk": { - "english_name": "Ambai" - }, - "xya": { - "english_name": "Yaygir" - }, - "kjt": { - "english_name": "Karen, Phrae Pwo" - }, - "ubl": { - "english_name": "Bikol, Buhi'non" - }, - "yis": { - "english_name": "Yis" - }, - "aux": { - "english_name": "Aurá" - }, - "bbp": { - "english_name": "Banda, West Central" - }, - "kbq": { - "english_name": "Kamano" - }, - "krc": { - "english_name": "Karachay-Balkar" - }, - "mej": { - "english_name": "Meyah" - }, - "dii": { - "english_name": "Dimbong" - }, - "okm": { - "english_name": "Korean, Middle (10th-16th cent.)" - }, - "agw": { - "english_name": "Kahua" - }, - "lar": { - "english_name": "Larteh" - }, - "wkw": { - "english_name": "Wakawaka" - }, - "mii": { - "english_name": "Mixtec, Chigmecatitlán" - }, - "ztg": { - "english_name": "Zapotec, Xanaguía" - }, - "atx": { - "english_name": "Arutani" - }, - "nam": { - "english_name": "Ngan'gityemerri" - }, - "pna": { - "english_name": "Punan Bah-Biau" - }, - "kdx": { - "english_name": "Kam" - }, - "ggu": { - "english_name": "Gagu" - }, - "jbt": { - "english_name": "Jabutí" - }, - "rgn": { - "english_name": "Romagnol" - }, - "nue": { - "english_name": "Ngundu" - }, - "xvn": { - "english_name": "Vandalic" - }, - "ksb": { - "english_name": "Shambala" - }, - "pey": { - "english_name": "Petjo" - }, - "srk": { - "english_name": "Serudung Murut" - }, - "psd": { - "english_name": "Plains Indian Sign Language" - }, - "tgd": { - "english_name": "Ciwogai" - }, - "pse": { - "english_name": "Malay, Central" - }, - "bmo": { - "english_name": "Bambalang" - }, - "grj": { - "english_name": "Grebo, Southern" - }, - "vmv": { - "english_name": "Maidu, Valley" - }, - "xnr": { - "english_name": "Kangri" - }, - "lob": { - "english_name": "Lobi" - }, - "mws": { - "english_name": "Mwimbi-Muthambi" - }, - "nhz": { - "english_name": "Nahuatl, Santa María La Alta" - }, - "klw": { - "english_name": "Lindu" - }, - "nbw": { - "english_name": "Ngbandi, Southern" - }, - "waz": { - "english_name": "Wampur" - }, - "tmf": { - "english_name": "Toba-Maskoy" - }, - "its": { - "english_name": "Isekiri" - }, - "dim": { - "english_name": "Dime" - }, - "opt": { - "english_name": "Opata" - }, - "tvw": { - "english_name": "Sedoa" - }, - "npy": { - "english_name": "Napu" - }, - "evn": { - "english_name": "Evenki" - }, - "lkl": { - "english_name": "Laeko-Libuat" - }, - "nuh": { - "english_name": "Ndunda" - }, - "nsi": { - "english_name": "Nigerian Sign Language" - }, - "osa": { - "english_name": "Osage" - }, - "tty": { - "english_name": "Sikaritai" - }, - "pii": { - "english_name": "Pini" - }, - "kqg": { - "english_name": "Khe" - }, - "mul": { - "english_name": "Multiple languages" - }, - "mbx": { - "english_name": "Mari (East Sepik Province)" - }, - "kff": { - "english_name": "Koya" - }, - "nmk": { - "english_name": "Namakura" - }, - "spu": { - "english_name": "Sapuan" - }, - "pwr": { - "english_name": "Powari" - }, - "bhn": { - "english_name": "Neo-Aramaic, Bohtan" - }, - "bxi": { - "english_name": "Pirlatapa" - }, - "mhf": { - "english_name": "Mamaa" - }, - "grm": { - "english_name": "Kota Marudu Talantang" - }, - "mil": { - "english_name": "Mixtec, Peñoles" - }, - "mnj": { - "english_name": "Munji" - }, - "crd": { - "english_name": "Coeur d'Alene" - }, - "chz": { - "english_name": "Chinantec, Ozumacín" - }, - "sab": { - "english_name": "Buglere" - }, - "kgf": { - "english_name": "Kube" - }, - "mnv": { - "english_name": "Rennell-Bellona" - }, - "kqk": { - "english_name": "Gbe, Kotafon" - }, - "kdz": { - "english_name": "Kwaja" - }, - "mnx": { - "english_name": "Manikion" - }, - "lzz": { - "english_name": "Laz" - }, - "tti": { - "english_name": "Tobati" - }, - "nlq": { - "english_name": "Naga, Lao" - }, - "wrh": { - "english_name": "Wiradhuri" - }, - "xky": { - "english_name": "Uma' Lasan" - }, - "tdg": { - "english_name": "Tamang, Western" - }, - "nex": { - "english_name": "Neme" - }, - "gwe": { - "english_name": "Gweno" - }, - "rut": { - "english_name": "Rutul" - }, - "eki": { - "english_name": "Eki" - }, - "tik": { - "english_name": "Tikar" - }, - "dmb": { - "english_name": "Dogon, Mombo" - }, - "rab": { - "english_name": "Camling" - }, - "izh": { - "english_name": "Ingrian" - }, - "ckh": { - "english_name": "Chak" - }, - "bgc": { - "english_name": "Haryanvi" - }, - "set": { - "english_name": "Sentani" - }, - "gdn": { - "english_name": "Umanakaina" - }, - "ext": { - "english_name": "Extremaduran" - }, - "aew": { - "english_name": "Ambakich" - }, - "sgm": { - "english_name": "Singa" - }, - "dif": { - "english_name": "Dieri" - }, - "tct": { - "english_name": "T'en" - }, - "tgi": { - "english_name": "Lawunuia" - }, - "pei": { - "english_name": "Chichimeca-Jonaz" - }, - "sge": { - "english_name": "Segai" - }, - "mql": { - "english_name": "Mbelime" - }, - "sei": { - "english_name": "Seri" - }, - "kcs": { - "english_name": "Koenoem" - }, - "ade": { - "english_name": "Adele" - }, - "ijj": { - "english_name": "Ede Ije" - }, - "zyn": { - "english_name": "Zhuang, Yongnan" - }, - "te": { - "english_name": "Telugu" - }, - "xun": { - "english_name": "Unggaranggu" - }, - "sva": { - "english_name": "Svan" - }, - "itr": { - "english_name": "Iteri" - }, - "lup": { - "english_name": "Lumbu" - }, - "phr": { - "english_name": "Pahari-Potwari" - }, - "kex": { - "english_name": "Kukna" - }, - "pbr": { - "english_name": "Pangwa" - }, - "ras": { - "english_name": "Tegali" - }, - "mgp": { - "english_name": "Magar, Eastern" - }, - "mia": { - "english_name": "Miami" - }, - "brn": { - "english_name": "Boruca" - }, - "sim": { - "english_name": "Mende (Papua New Guinea)" - }, - "lsy": { - "english_name": "Mauritian Sign Language" - }, - "tmb": { - "english_name": "Katbol" - }, - "xco": { - "english_name": "Chorasmian" - }, - "ape": { - "english_name": "Bukiyip" - }, - "dee": { - "english_name": "Dewoin" - }, - "non": { - "english_name": "Norse, Old" - }, - "ids": { - "english_name": "Idesa" - }, - "khx": { - "english_name": "Kanu" - }, - "let": { - "english_name": "Lesing-Gelimi" - }, - "nig": { - "english_name": "Ngalakan" - }, - "aey": { - "english_name": "Amele" - }, - "ojc": { - "english_name": "Ojibwa, Central" - }, - "geg": { - "english_name": "Gengle" - }, - "rxd": { - "english_name": "Ngardi" - }, - "cie": { - "english_name": "Cineni" - }, - "zhw": { - "english_name": "Zhoa" - }, - "wuv": { - "english_name": "Wuvulu-Aua" - }, - "lku": { - "english_name": "Kungkari" - }, - "biv": { - "english_name": "Birifor, Southern" - }, - "uks": { - "english_name": "Urubú-Kaapor Sign Language" - }, - "xpo": { - "english_name": "Pochutec" - }, - "icl": { - "english_name": "Icelandic Sign Language" - }, - "nbm": { - "english_name": "Ngbaka Ma'bo" - }, - "gnc": { - "english_name": "Guanche" - }, - "gri": { - "english_name": "Ghari" - }, - "sju": { - "english_name": "Sami, Ume" - }, - "auw": { - "english_name": "Awyi" - }, - "pnt": { - "english_name": "Pontic" - }, - "bbx": { - "english_name": "Bubia" - }, - "szc": { - "english_name": "Semaq Beri" - }, - "lkc": { - "english_name": "Kucong" - }, - "yle": { - "english_name": "Yele" - }, - "ay": { - "english_name": "Aymara" - }, - "tta": { - "english_name": "Tutelo" - }, - "cul": { - "english_name": "Culina" - }, - "byo": { - "english_name": "Biyo" - }, - "pex": { - "english_name": "Petats" - }, - "fom": { - "english_name": "Foma" - }, - "xtb": { - "english_name": "Mixtec, Chazumba" - }, - "sga": { - "english_name": "Irish, Old (to 900)" - }, - "mmm": { - "english_name": "Maii" - }, - "twp": { - "english_name": "Ere" - }, - "kga": { - "english_name": "Koyaga" - }, - "men": { - "english_name": "Mende (Sierra Leone)" - }, - "dal": { - "english_name": "Dahalo" - }, - "psi": { - "english_name": "Pashayi, Southeast" - }, - "rmd": { - "english_name": "Danish, Traveller" - }, - "svs": { - "english_name": "Savosavo" - }, - "snk": { - "english_name": "Soninke" - }, - "amp": { - "english_name": "Alamblak" - }, - "xce": { - "english_name": "Celtiberian" - }, - "wmo": { - "english_name": "Wom (Papua New Guinea)" - }, - "zpo": { - "english_name": "Zapotec, Amatlán" - }, - "heh": { - "english_name": "Hehe" - }, - "dem": { - "english_name": "Dem" - }, - "vko": { - "english_name": "Kodeoha" - }, - "mvx": { - "english_name": "Meoswar" - }, - "bne": { - "english_name": "Bintauna" - }, - "ckv": { - "english_name": "Kavalan" - }, - "ikv": { - "english_name": "Iku-Gora-Ankwa" - }, - "mbm": { - "english_name": "Ombamba" - }, - "lum": { - "english_name": "Luimbi" - }, - "ins": { - "english_name": "Indian Sign Language" - }, - "err": { - "english_name": "Erre" - }, - "peb": { - "english_name": "Pomo, Eastern" - }, - "bhw": { - "english_name": "Biak" - }, - "bjt": { - "english_name": "Balanta-Ganja" - }, - "dmw": { - "english_name": "Mudburra" - }, - "kkd": { - "english_name": "Kinuku" - }, - "stu": { - "english_name": "Samtao" - }, - "leh": { - "english_name": "Lenje" - }, - "scf": { - "english_name": "Creole French, San Miguel" - }, - "xsl": { - "english_name": "Slavey, South" - }, - "khl": { - "english_name": "Lusi" - }, - "bff": { - "english_name": "Bofi" - }, - "zom": { - "english_name": "Zou" - }, - "agr": { - "english_name": "Aguaruna" - }, - "suy": { - "english_name": "Suyá" - }, - "ndc": { - "english_name": "Ndau" - }, - "hme": { - "english_name": "Hmong, Eastern Huishui" - }, - "mkm": { - "english_name": "Moklen" - }, - "kyy": { - "english_name": "Kambaira" - }, - "mck": { - "english_name": "Mbunda" - }, - "tvs": { - "english_name": "Taveta" - }, - "avi": { - "english_name": "Avikam" - }, - "pcf": { - "english_name": "Paliyan" - }, - "urz": { - "english_name": "Uru-Eu-Wau-Wau" - }, - "npb": { - "english_name": "Nupbikha" - }, - "etx": { - "english_name": "Eten" - }, - "djf": { - "english_name": "Djangun" - }, - "cns": { - "english_name": "Asmat, Central" - }, - "wkd": { - "english_name": "Wakde" - }, - "wyi": { - "english_name": "Woiwurrung" - }, - "yiu": { - "english_name": "Awu" - }, - "omp": { - "english_name": "Manipuri, Old" - }, - "prl": { - "english_name": "Peruvian Sign Language" - }, - "dgn": { - "english_name": "Dagoman" - }, - "xve": { - "english_name": "Venetic" - }, - "vku": { - "english_name": "Kurrama" - }, - "qum": { - "english_name": "Sipacapense" - }, - "lio": { - "english_name": "Liki" - }, - "soq": { - "english_name": "Kanasi" - }, - "abn": { - "english_name": "Abua" - }, - "mnq": { - "english_name": "Minriq" - }, - "kns": { - "english_name": "Kensiu" - }, - "ssk": { - "english_name": "Sunam" - }, - "ln": { - "english_name": "Lingala" - }, - "be": { - "english_name": "Belarusian" - }, - "cpb": { - "english_name": "Ashéninka, Ucayali-Yurúa" - }, - "kmm": { - "english_name": "Kom (India)" - }, - "soi": { - "english_name": "Sonha" - }, - "nmy": { - "english_name": "Namuyi" - }, - "nrk": { - "english_name": "Ngarla" - }, - "bik": { - "english_name": "Bikol" - }, - "zsk": { - "english_name": "Kaskean" - }, - "bqh": { - "english_name": "Baima" - }, - "ymb": { - "english_name": "Yambes" - }, - "nis": { - "english_name": "Nimi" - }, - "hom": { - "english_name": "Homa" - }, - "vmc": { - "english_name": "Mixtec, Juxtlahuaca" - }, - "arp": { - "english_name": "Arapaho" - }, - "kgj": { - "english_name": "Kham, Gamale" - }, - "rmz": { - "english_name": "Marma" - }, - "kcl": { - "english_name": "Kela (Papua New Guinea)" - }, - "sdm": { - "english_name": "Semandang" - }, - "mnm": { - "english_name": "Mapena" - }, - "pdt": { - "english_name": "Plautdietsch" - }, - "nwy": { - "english_name": "Nottoway-Meherrin" - }, - "ewo": { - "english_name": "Ewondo" - }, - "rah": { - "english_name": "Rabha" - }, - "lmd": { - "english_name": "Lumun" - }, - "kto": { - "english_name": "Kuot" - }, - "hmt": { - "english_name": "Hamtai" - }, - "kpb": { - "english_name": "Kurumba, Mullu" - }, - "mvr": { - "english_name": "Marau" - }, - "iar": { - "english_name": "Purari" - }, - "cdj": { - "english_name": "Churahi" - }, - "nsl": { - "english_name": "Norwegian Sign Language" - }, - "wrb": { - "english_name": "Warluwara" - }, - "wuu": { - "english_name": "Chinese, Wu" - }, - "piv": { - "english_name": "Pileni" - }, - "maz": { - "english_name": "Mazahua, Central" - }, - "rmy": { - "english_name": "Romani, Vlax" - }, - "mke": { - "english_name": "Mawchi" - }, - "wig": { - "english_name": "Wik-Ngathana" - }, - "tkz": { - "english_name": "Takua" - }, - "pgn": { - "english_name": "Paelignian" - }, - "zaa": { - "english_name": "Zapotec, Sierra de Juárez" - }, - "gra": { - "english_name": "Garasia, Rajput" - }, - "pys": { - "english_name": "Paraguayan Sign Language" - }, - "fip": { - "english_name": "Fipa" - }, - "aph": { - "english_name": "Athpariya" - }, - "lmi": { - "english_name": "Lombi" - }, - "two": { - "english_name": "Tswapong" - }, - "mov": { - "english_name": "Mohave" - }, - "dmk": { - "english_name": "Domaaki" - }, - "hya": { - "english_name": "Hya" - }, - "kgg": { - "english_name": "Kusunda" - }, - "pic": { - "english_name": "Pinji" - }, - "igo": { - "english_name": "Isebe" - }, - "nzk": { - "english_name": "Nzakara" - }, - "kdc": { - "english_name": "Kutu" - }, - "mba": { - "english_name": "Higaonon" - }, - "zmx": { - "english_name": "Bomitaba" - }, - "wif": { - "english_name": "Wik-Keyangan" - }, - "psm": { - "english_name": "Pauserna" - }, - "uli": { - "english_name": "Ulithian" - }, - "hux": { - "english_name": "Huitoto, Nüpode" - }, - "sli": { - "english_name": "Silesian, Lower" - }, - "ess": { - "english_name": "Yupik, Central Siberian" - }, - "ytl": { - "english_name": "Tanglang" - }, - "xki": { - "english_name": "Kenyan Sign Language" - }, - "nrp": { - "english_name": "Picene, North" - }, - "pas": { - "english_name": "Papasena" - }, - "hup": { - "english_name": "Hupa" - }, - "mny": { - "english_name": "Manyawa" - }, - "srz": { - "english_name": "Shahmirzadi" - }, - "bwr": { - "english_name": "Bura-Pabir" - }, - "xug": { - "english_name": "Kunigami" - }, - "ty": { - "english_name": "Tahitian" - }, - "knp": { - "english_name": "Kwanja" - }, - "xhe": { - "english_name": "Khetrani" - }, - "plb": { - "english_name": "Polonombauk" - }, - "pae": { - "english_name": "Pagibete" - }, - "pst": { - "english_name": "Pashto, Central" - }, - "dbu": { - "english_name": "Dogon, Bondum Dom" - }, - "pnu": { - "english_name": "Bunu, Jiongnai" - }, - "don": { - "english_name": "Toura (Papua New Guinea)" - }, - "ppp": { - "english_name": "Pelende" - }, - "obr": { - "english_name": "Burmese, Old" - }, - "msg": { - "english_name": "Moraid" - }, - "ley": { - "english_name": "Lemolang" - }, - "nsm": { - "english_name": "Naga, Sumi" - }, - "cih": { - "english_name": "Chinali" - }, - "vis": { - "english_name": "Vishavan" - }, - "grs": { - "english_name": "Gresi" - }, - "zin": { - "english_name": "Zinza" - }, - "bzu": { - "english_name": "Burmeso" - }, - "zmi": { - "english_name": "Negeri Sembilan Malay" - }, - "yiv": { - "english_name": "Nisu, Northern" - }, - "bqz": { - "english_name": "Bakaka" - }, - "llg": { - "english_name": "Lole" - }, - "mus": { - "english_name": "Creek" - }, - "ttw": { - "english_name": "Long Wat" - }, - "ura": { - "english_name": "Urarina" - }, - "pnp": { - "english_name": "Pancana" - }, - "efe": { - "english_name": "Efe" - }, - "scq": { - "english_name": "Sa'och" - }, - "mhx": { - "english_name": "Maru" - }, - "mfv": { - "english_name": "Mandjak" - }, - "she": { - "english_name": "Sheko" - }, - "opo": { - "english_name": "Opao" - }, - "ken": { - "english_name": "Kenyang" - }, - "ryn": { - "english_name": "Amami-Oshima, Northern" - }, - "krp": { - "english_name": "Korop" - }, - "tts": { - "english_name": "Thai, Northeastern" - }, - "bks": { - "english_name": "Sorsoganon, Northern" - }, - "ahi": { - "english_name": "Aizi, Tiagbamrin" - }, - "bip": { - "english_name": "Bila" - }, - "wmx": { - "english_name": "Womo" - }, - "pmb": { - "english_name": "Pambia" - }, - "ksl": { - "english_name": "Kumalu" - }, - "sby": { - "english_name": "Soli" - }, - "pri": { - "english_name": "Paicî" - }, - "tuq": { - "english_name": "Tedaga" - }, - "avt": { - "english_name": "Au" - }, - "hao": { - "english_name": "Hakö" - }, - "asx": { - "english_name": "Muratayak" - }, - "mbt": { - "english_name": "Manobo, Matigsalug" - }, - "pl": { - "english_name": "Polish", - "name": "polski" - }, - "kct": { - "english_name": "Kaian" - }, - "bws": { - "english_name": "Bomboma" - }, - "ntg": { - "english_name": "Ngantangarra" - }, - "bqu": { - "english_name": "Boguru" - }, - "xmo": { - "english_name": "Morerebi" - }, - "ybn": { - "english_name": "Yabaâna" - }, - "liw": { - "english_name": "Col" - }, - "pue": { - "english_name": "Puelche" - }, - "dya": { - "english_name": "Dyan" - }, - "gkp": { - "english_name": "Kpelle, Guinea" - }, - "ssb": { - "english_name": "Sama, Southern" - }, - "nuv": { - "english_name": "Nuni, Northern" - }, - "lnm": { - "english_name": "Langam" - }, - "aju": { - "english_name": "Arabic, Judeo-Moroccan" - }, - "lmu": { - "english_name": "Lamenu" - }, - "tyn": { - "english_name": "Kombai" - }, - "foi": { - "english_name": "Foi" - }, - "pah": { - "english_name": "Tenharim" - }, - "bby": { - "english_name": "Befang" - }, - "kev": { - "english_name": "Kanikkaran" - }, - "bus": { - "english_name": "Bokobaru" - }, - "gad": { - "english_name": "Gaddang" - }, - "jmi": { - "english_name": "Jimi (Nigeria)" - }, - "din": { - "english_name": "Dinka" - }, - "ego": { - "english_name": "Eggon" - }, - "tbw": { - "english_name": "Tagbanwa" - }, - "kvm": { - "english_name": "Kendem" - }, - "twh": { - "english_name": "Tai Dón" - }, - "mmy": { - "english_name": "Migaama" - }, - "opk": { - "english_name": "Kopkaka" - }, - "cro": { - "english_name": "Crow" - }, - "wpc": { - "english_name": "Maco" - }, - "xsd": { - "english_name": "Sidetic" - }, - "cbw": { - "english_name": "Kinabalian" - }, - "ta": { - "english_name": "Tamil", - "name": "தமிழ்" - }, - "mjx": { - "english_name": "Mahali" - }, - "xib": { - "english_name": "Iberian" - }, - "xxm": { - "english_name": "Minkin" - }, - "jos": { - "english_name": "Jordanian Sign Language" - }, - "mg": { - "english_name": "Malagasy" - }, - "gbz": { - "english_name": "Dari, Zoroastrian" - }, - "sds": { - "english_name": "Sened" - }, - "ldb": { - "english_name": "Dũya" - }, - "kfg": { - "english_name": "Kudiya" - }, - "slp": { - "english_name": "Lamaholot" - }, - "aiy": { - "english_name": "Ali" - }, - "mfs": { - "english_name": "Mexican Sign Language" - }, - "kcj": { - "english_name": "Kobiana" - }, - "ykk": { - "english_name": "Yakaikeke" - }, - "kof": { - "english_name": "Kubi" - }, - "rhp": { - "english_name": "Yahang" - }, - "klf": { - "english_name": "Kendeje" - }, - "lif": { - "english_name": "Limbu" - }, - "fla": { - "english_name": "Kalispel-Pend d'Oreille" - }, - "ues": { - "english_name": "Kioko" - }, - "dnj": { - "english_name": "Dan" - }, - "nxu": { - "english_name": "Narau" - }, - "tkd": { - "english_name": "Tukudede" - }, - "aao": { - "english_name": "Arabic, Algerian Saharan" - }, - "piw": { - "english_name": "Pimbwe" - }, - "knw": { - "english_name": "Kung-Ekoka" - }, - "myv": { - "english_name": "Erzya" - }, - "rxw": { - "english_name": "Karuwali" - }, - "ccc": { - "english_name": "Chamicuro" - }, - "xtq": { - "english_name": "Tumshuqese" - }, - "nku": { - "english_name": "Kulango, Bouna" - }, - "wme": { - "english_name": "Wambule" - }, - "gnz": { - "english_name": "Ganzi" - }, - "rao": { - "english_name": "Rao" - }, - "aix": { - "english_name": "Aighon" - }, - "rkt": { - "english_name": "Rangpuri" - }, - "ory": { - "english_name": "Oriya (individual language)" - }, - "rmm": { - "english_name": "Roma" - }, - "tnv": { - "english_name": "Tangchangya" - }, - "kmw": { - "english_name": "Komo (Democratic Republic of Congo)" - }, - "nzu": { - "english_name": "Teke-Nzikou" - }, - "xin": { - "english_name": "Xinca" - }, - "kss": { - "english_name": "Kisi, Southern" - }, - "cwa": { - "english_name": "Kabwa" - }, - "kjq": { - "english_name": "Keres, Western" - }, - "smb": { - "english_name": "Simbari" - }, - "cdf": { - "english_name": "Chiru" - }, - "lns": { - "english_name": "Lamnso'" - }, - "bjw": { - "english_name": "Bakwé" - }, - "tcm": { - "english_name": "Tanahmerah" - }, - "ssp": { - "english_name": "Spanish Sign Language" - }, - "lmh": { - "english_name": "Lambichhong" - }, - "idr": { - "english_name": "Indri" - }, - "qwt": { - "english_name": "Kwalhioqua-Tlatskanai" - }, - "bfz": { - "english_name": "Pahari, Mahasu" - }, - "uar": { - "english_name": "Tairuma" - }, - "kvj": { - "english_name": "Psikye" - }, - "tny": { - "english_name": "Tongwe" - }, - "aum": { - "english_name": "Asu (Nigeria)" - }, - "asi": { - "english_name": "Buruwai" - }, - "glu": { - "english_name": "Gula (Chad)" - }, - "zkt": { - "english_name": "Kitan" - }, - "giq": { - "english_name": "Gelao, Green" - }, - "naz": { - "english_name": "Nahuatl, Coatepec" - }, - "ybb": { - "english_name": "Yemba" - }, - "gim": { - "english_name": "Gimi (Eastern Highlands)" - }, - "unk": { - "english_name": "Enawené-Nawé" - }, - "giz": { - "english_name": "Giziga, South" - }, - "fuc": { - "english_name": "Pulaar" - }, - "mup": { - "english_name": "Malvi" - }, - "yuy": { - "english_name": "Yugur, East" - }, - "wii": { - "english_name": "Minidien" - }, - "buu": { - "english_name": "Budu" - }, - "omn": { - "english_name": "Minoan" - }, - "kcu": { - "english_name": "Kami (Tanzania)" - }, - "xpj": { - "english_name": "Mpalitjanh" - }, - "mrg": { - "english_name": "Mising" - }, - "gct": { - "english_name": "German, Colonia Tovar" - }, - "kzr": { - "english_name": "Karang" - }, - "ruo": { - "english_name": "Romanian, Istro" - }, - "swu": { - "english_name": "Suwawa" - }, - "kj": { - "english_name": "Kuanyama" - }, - "cdh": { - "english_name": "Chambeali" - }, - "mzk": { - "english_name": "Mambila, Nigeria" - }, - "mre": { - "english_name": "Martha's Vineyard Sign Language" - }, - "gdf": { - "english_name": "Guduf-Gava" - }, - "pil": { - "english_name": "Yom" - }, - "nhp": { - "english_name": "Nahuatl, Isthmus-Pajapan" - }, - "miq": { - "english_name": "Mískito" - }, - "kjl": { - "english_name": "Kham, Western Parbate" - }, - "kbr": { - "english_name": "Kafa" - }, - "bfp": { - "english_name": "Beba" - }, - "duy": { - "english_name": "Agta, Dicamay" - }, - "vaf": { - "english_name": "Vafsi" - }, - "jer": { - "english_name": "Jere" - }, - "tsv": { - "english_name": "Tsogo" - }, - "txg": { - "english_name": "Tangut" - }, - "osi": { - "english_name": "Osing" - }, - "tue": { - "english_name": "Tuyuca" - }, - "pmm": { - "english_name": "Pomo" - }, - "sid": { - "english_name": "Sidamo" - }, - "cap": { - "english_name": "Chipaya" - }, - "htu": { - "english_name": "Hitu" - }, - "mzg": { - "english_name": "Monastic Sign Language" - }, - "kqc": { - "english_name": "Doromu-Koki" - }, - "yif": { - "english_name": "Ache" - }, - "cbj": { - "english_name": "Ede Cabe" - }, - "nzy": { - "english_name": "Nzakambay" - }, - "trm": { - "english_name": "Tregami" - }, - "ncp": { - "english_name": "Ndaktup" - }, - "loo": { - "english_name": "Lombo" - }, - "khe": { - "english_name": "Korowai" - }, - "mqc": { - "english_name": "Mangole" - }, - "xko": { - "english_name": "Kiorr" - }, - "brh": { - "english_name": "Brahui" - }, - "bbi": { - "english_name": "Barombi" - }, - "wom": { - "english_name": "Wom (Nigeria)" - }, - "sxm": { - "english_name": "Samre" - }, - "gor": { - "english_name": "Gorontalo" - }, - "lmn": { - "english_name": "Lambadi" - }, - "nay": { - "english_name": "Narrinyeri" - }, - "wls": { - "english_name": "Wallisian" - }, - "stq": { - "english_name": "Saterfriesisch" - }, - "bxf": { - "english_name": "Bilur" - }, - "mbc": { - "english_name": "Macushi" - }, - "usa": { - "english_name": "Usarufa" - }, - "sg": { - "english_name": "Sango" - }, - "zpx": { - "english_name": "Zapotec, San Baltazar Loxicha" - }, - "nsy": { - "english_name": "Nasal" - }, - "kvs": { - "english_name": "Kunggara" - }, - "atv": { - "english_name": "Altai, Northern" - }, - "xzp": { - "english_name": "Zapotec, Ancient" - }, - "mmo": { - "english_name": "Buang, Mangga" - }, - "gdi": { - "english_name": "Gundi" - }, - "urm": { - "english_name": "Urapmin" - }, - "wrs": { - "english_name": "Waris" - }, - "adn": { - "english_name": "Adang" - }, - "net": { - "english_name": "Nete" - }, - "ito": { - "english_name": "Itonama" - }, - "bgl": { - "english_name": "Bo (Laos)" - }, - "nax": { - "english_name": "Nakwi" - }, - "nbe": { - "english_name": "Naga, Konyak" - }, - "liz": { - "english_name": "Libinza" - }, - "kwz": { - "english_name": "Kwadi" - }, - "tey": { - "english_name": "Tulishi" - }, - "sbu": { - "english_name": "Bhoti, Stod" - }, - "yll": { - "english_name": "Yil" - }, - "bxz": { - "english_name": "Binahari" - }, - "nyt": { - "english_name": "Nyawaygi" - }, - "rem": { - "english_name": "Remo" - }, - "lti": { - "english_name": "Leti (Indonesia)" - }, - "ntr": { - "english_name": "Delo" - }, - "wbt": { - "english_name": "Wanman" - }, - "aoh": { - "english_name": "Arma" - }, - "ndg": { - "english_name": "Ndengereko" - }, - "nem": { - "english_name": "Nemi" - }, - "lwo": { - "english_name": "Luwo" - }, - "zaq": { - "english_name": "Zapotec, Aloápam" - }, - "kdk": { - "english_name": "Numèè" - }, - "bpm": { - "english_name": "Biyom" - }, - "ble": { - "english_name": "Balanta-Kentohe" - }, - "nnl": { - "english_name": "Naga, Northern Rengma" - }, - "qvh": { - "english_name": "Quechua, Huamalíes-Dos de Mayo Huánuco" - }, - "vmp": { - "english_name": "Mazatec, Soyaltepec" - }, - "jeb": { - "english_name": "Jebero" - }, - "hay": { - "english_name": "Haya" - }, - "shg": { - "english_name": "Shua" - }, - "ybm": { - "english_name": "Yaben" - }, - "mih": { - "english_name": "Mixtec, Chayuco" - }, - "pkt": { - "english_name": "Maleng" - }, - "ndu": { - "english_name": "Dugun" - }, - "toe": { - "english_name": "Tomedes" - }, - "mbr": { - "english_name": "Nukak Makú" - }, - "hov": { - "english_name": "Hovongan" - }, - "spp": { - "english_name": "Senoufo, Supyire" - }, - "bfr": { - "english_name": "Bazigar" - }, - "kqe": { - "english_name": "Kalagan" - }, - "coc": { - "english_name": "Cocopa" - }, - "yta": { - "english_name": "Talu" - }, - "mgr": { - "english_name": "Mambwe-Lungu" - }, - "kmu": { - "english_name": "Kanite" - }, - "nmb": { - "english_name": "Nambas, Big" - }, - "hgw": { - "english_name": "Haigwai" - }, - "sgw": { - "english_name": "Sebat Bet Gurage" - }, - "gyl": { - "english_name": "Gayil" - }, - "lss": { - "english_name": "Lasi" - }, - "sdg": { - "english_name": "Savi" - }, - "thu": { - "english_name": "Thuri" - }, - "sls": { - "english_name": "Singapore Sign Language" - }, - "gpn": { - "english_name": "Taiap" - }, - "nyb": { - "english_name": "Nyangbo" - }, - "opy": { - "english_name": "Ofayé" - }, - "lau": { - "english_name": "Laba" - }, - "mrn": { - "english_name": "Cheke Holo" - }, - "tpq": { - "english_name": "Tukpa" - }, - "zml": { - "english_name": "Madngele" - }, - "mnk": { - "english_name": "Mandinka" - }, - "poe": { - "english_name": "Popoloca, San Juan Atzingo" - }, - "mnn": { - "english_name": "Mnong, Southern" - }, - "gdk": { - "english_name": "Gadang" - }, - "mtl": { - "english_name": "Montol" - }, - "mgb": { - "english_name": "Mararit" - }, - "iti": { - "english_name": "Itneg, Inlaod" - }, - "bxb": { - "english_name": "Bor, Belanda" - }, - "nl": { - "english_name": "Dutch", - "name": "Nederlands" - }, - "gow": { - "english_name": "Gorowa" - }, - "zab": { - "english_name": "Zapotec, San Juan Guelavía" - }, - "bkh": { - "english_name": "Bakoko" - }, - "puo": { - "english_name": "Puoc" - }, - "lo": { - "english_name": "Lao" - }, - "bmb": { - "english_name": "Bembe" - }, - "kox": { - "english_name": "Coxima" - }, - "shl": { - "english_name": "Shendu" - }, - "kvv": { - "english_name": "Kola" - }, - "dgs": { - "english_name": "Dogoso" - }, - "aae": { - "english_name": "Albanian, Arbëreshë" - }, - "haj": { - "english_name": "Hajong" - }, - "siz": { - "english_name": "Siwi" - }, - "lcp": { - "english_name": "Lawa, Western" - }, - "orx": { - "english_name": "Oro" - }, - "gur": { - "english_name": "Farefare" - }, - "mkq": { - "english_name": "Miwok, Bay" - }, - "urk": { - "english_name": "Urak Lawoi'" - }, - "mcz": { - "english_name": "Mawan" - }, - "kut": { - "english_name": "Kutenai" - }, - "knk": { - "english_name": "Kuranko" - }, - "aim": { - "english_name": "Aimol" - }, - "ykg": { - "english_name": "Yukaghir, Northern" - }, - "tuu": { - "english_name": "Tututni" - }, - "cst": { - "english_name": "Ohlone, Northern" - }, - "tip": { - "english_name": "Trimuris" - }, - "hak": { - "english_name": "Chinese, Hakka" - }, - "tab": { - "english_name": "Tabassaran" - }, - "kyt": { - "english_name": "Kayagar" - }, - "pne": { - "english_name": "Penan, Western" - }, - "xme": { - "english_name": "Median" - }, - "swr": { - "english_name": "Saweru" - }, - "hoo": { - "english_name": "Holoholo" - }, - "fr": { - "english_name": "French", - "name": "français" - }, - "skh": { - "english_name": "Sikule" - }, - "ca": { - "english_name": "Catalan", - "name": "Català" - }, - "zpu": { - "english_name": "Zapotec, Yalálag" - }, - "tyt": { - "english_name": "Tày Tac" - }, - "bes": { - "english_name": "Besme" - }, - "hla": { - "english_name": "Halia" - }, - "dhd": { - "english_name": "Dhundari" - }, - "kfp": { - "english_name": "Korwa" - }, - "bup": { - "english_name": "Busoa" - }, - "kpm": { - "english_name": "Koho" - }, - "lbu": { - "english_name": "Labu" - }, - "frt": { - "english_name": "Fortsenal" - }, - "iff": { - "english_name": "Ifo" - }, - "mjr": { - "english_name": "Malavedan" - }, - "kxc": { - "english_name": "Konso" - }, - "ygm": { - "english_name": "Yagomi" - }, - "kxr": { - "english_name": "Koro (Papua New Guinea)" - }, - "mxi": { - "english_name": "Mozarabic" - }, - "mkz": { - "english_name": "Makasae" - }, - "dhl": { - "english_name": "Dhalandji" - }, - "mqn": { - "english_name": "Moronene" - }, - "dcc": { - "english_name": "Deccan" - }, - "pnk": { - "english_name": "Paunaka" - }, - "nqn": { - "english_name": "Nen" - }, - "bzk": { - "english_name": "Creole English, Nicaragua" - }, - "sqr": { - "english_name": "Arabic, Siculo" - }, - "ran": { - "english_name": "Riantana" - }, - "okj": { - "english_name": "Oko-Juwoi" - }, - "mam": { - "english_name": "Mam" - }, - "tgw": { - "english_name": "Senoufo, Tagwana" - }, - "mmq": { - "english_name": "Musak" - }, - "bni": { - "english_name": "Bangi" - }, - "hed": { - "english_name": "Herdé" - }, - "nbj": { - "english_name": "Ngarinman" - }, - "bcm": { - "english_name": "Bannoni" - }, - "bdp": { - "english_name": "Bende" - }, - "skv": { - "english_name": "Skou" - }, - "gyr": { - "english_name": "Guarayu" - }, - "kgn": { - "english_name": "Karingani" - }, - "mwq": { - "english_name": "Chin, Mün" - }, - "mix": { - "english_name": "Mixtec, Mixtepec" - }, - "smm": { - "english_name": "Musasa" - }, - "tld": { - "english_name": "Talaud" - }, - "kzt": { - "english_name": "Dusun, Tambunan" - }, - "rtc": { - "english_name": "Chin, Rungtu" - }, - "awu": { - "english_name": "Awyu, Central" - }, - "asf": { - "english_name": "Australian Sign Language" - }, - "sko": { - "english_name": "Seko Tengah" - }, - "ker": { - "english_name": "Kera" - }, - "lgr": { - "english_name": "Lengo" - }, - "dmd": { - "english_name": "Madhi Madhi" - }, - "tqt": { - "english_name": "Totonac, Western" - }, - "tgt": { - "english_name": "Tagbanwa, Central" - }, - "bqc": { - "english_name": "Boko (Benin)" - }, - "dai": { - "english_name": "Day" - }, - "qvn": { - "english_name": "Quechua, North Junín" - }, - "pai": { - "english_name": "Pe" - }, - "bab": { - "english_name": "Bainouk-Gunyuño" - }, - "amj": { - "english_name": "Amdang" - }, - "wik": { - "english_name": "Wikalkan" - }, - "nir": { - "english_name": "Nimboran" - }, - "siw": { - "english_name": "Siwai" - }, - "osp": { - "english_name": "Spanish, Old" - }, - "bag": { - "english_name": "Tuki" - }, - "xms": { - "english_name": "Moroccan Sign Language" - }, - "bfs": { - "english_name": "Bai, Southern" - }, - "wbj": { - "english_name": "Alagwa" - }, - "bwe": { - "english_name": "Karen, Bwe" - }, - "shj": { - "english_name": "Shatt" - }, - "pkg": { - "english_name": "Pak-Tong" - }, - "ssz": { - "english_name": "Sengseng" - }, - "ilo": { - "english_name": "Iloko" - }, - "nog": { - "english_name": "Nogai" - }, - "okd": { - "english_name": "Okodia" - }, - "mwr": { - "english_name": "Marwari" - }, - "yga": { - "english_name": "Malyangapa" - }, - "daa": { - "english_name": "Dangaléat" - }, - "wti": { - "english_name": "Berta" - }, - "vkk": { - "english_name": "Kaur" - }, - "cbk": { - "english_name": "Chavacano" - }, - "mpu": { - "english_name": "Makuráp" - }, - "xkz": { - "english_name": "Kurtokha" - }, - "xgm": { - "english_name": "Guwinmal" - }, - "cow": { - "english_name": "Cowlitz" - }, - "swv": { - "english_name": "Shekhawati" - }, - "slg": { - "english_name": "Selungai Murut" - }, - "mek": { - "english_name": "Mekeo" - }, - "dga": { - "english_name": "Dagaare, Southern" - }, - "uga": { - "english_name": "Ugaritic" - }, - "zos": { - "english_name": "Zoque, Francisco León" - }, - "xam": { - "english_name": "/Xam" - }, - "ych": { - "english_name": "Chesu" - }, - "ccp": { - "english_name": "Chakma" - }, - "mur": { - "english_name": "Murle" - }, - "bwf": { - "english_name": "Boselewa" - }, - "sho": { - "english_name": "Shanga" - }, - "pbt": { - "english_name": "Pashto, Southern" - }, - "ajg": { - "english_name": "Aja (Benin)" - }, - "elm": { - "english_name": "Eleme" - }, - "jhi": { - "english_name": "Jehai" - }, - "kqf": { - "english_name": "Kakabai" - }, - "num": { - "english_name": "Niuafo'ou" - }, - "xmf": { - "english_name": "Mingrelian" - }, - "nko": { - "english_name": "Nkonya" - }, - "mfm": { - "english_name": "Marghi South" - }, - "esm": { - "english_name": "Esuma" - }, - "plo": { - "english_name": "Popoluca, Oluta" - }, - "zbe": { - "english_name": "Berawan, East" - }, - "tbs": { - "english_name": "Tanguat" - }, - "khs": { - "english_name": "Kasua" - }, - "jct": { - "english_name": "Krymchak" - }, - "rkh": { - "english_name": "Rakahanga-Manihiki" - }, - "yug": { - "english_name": "Yug" - }, - "haz": { - "english_name": "Hazaragi" - }, - "qub": { - "english_name": "Quechua, Huallaga Huánuco" - }, - "ram": { - "english_name": "Canela" - }, - "wfg": { - "english_name": "Yafi" - }, - "ola": { - "english_name": "Walungge" - }, - "pss": { - "english_name": "Kaulong" - }, - "gbx": { - "english_name": "Gbe, Eastern Xwla" - }, - "bvt": { - "english_name": "Bati (Indonesia)" - }, - "mwo": { - "english_name": "Maewo, Central" - }, - "hlu": { - "english_name": "Luwian, Hieroglyphic" - }, - "wac": { - "english_name": "Wasco-Wishram" - }, - "goh": { - "english_name": "German, Old High (ca. 750-1050)" - }, - "ner": { - "english_name": "Yahadian" - }, - "bwk": { - "english_name": "Bauwaki" - }, - "ofu": { - "english_name": "Efutop" - }, - "mvd": { - "english_name": "Mamboru" - }, - "arj": { - "english_name": "Arapaso" - }, - "zme": { - "english_name": "Mangerr" - }, - "tux": { - "english_name": "Tuxináwa" - }, - "wiu": { - "english_name": "Wiru" - }, - "mgt": { - "english_name": "Mongol" - }, - "tlq": { - "english_name": "Tai Loi" - }, - "irn": { - "english_name": "Irántxe" - }, - "lsh": { - "english_name": "Lish" - }, - "yrl": { - "english_name": "Nhengatu" - }, - "syr": { - "english_name": "Syriac" - }, - "nbp": { - "english_name": "Nnam" - }, - "gso": { - "english_name": "Gbaya, Southwest" - }, - "uky": { - "english_name": "Kuuk-Yak" - }, - "ppt": { - "english_name": "Pare" - }, - "toy": { - "english_name": "Topoiyo" - }, - "wlx": { - "english_name": "Wali (Ghana)" - }, - "mfd": { - "english_name": "Mendankwe-Nkwen" - }, - "ikk": { - "english_name": "Ika" - }, - "pce": { - "english_name": "Palaung, Ruching" - }, - "vnk": { - "english_name": "Vano" - }, - "wrx": { - "english_name": "Wae Rana" - }, - "nlo": { - "english_name": "Ngul" - }, - "rui": { - "english_name": "Rufiji" - }, - "soy": { - "english_name": "Miyobe" - }, - "inj": { - "english_name": "Inga, Jungle" - }, - "dgo": { - "english_name": "Dogri (individual language)" - }, - "afu": { - "english_name": "Awutu" - }, - "kvd": { - "english_name": "Kui (Indonesia)" - }, - "nyd": { - "english_name": "Nyore" - }, - "mqx": { - "english_name": "Mamuju" - }, - "ngm": { - "english_name": "Ngatik Men's Creole" - }, - "cmi": { - "english_name": "Emberá-Chamí" - }, - "bve": { - "english_name": "Malay, Berau" - }, - "nia": { - "english_name": "Nias" - }, - "ige": { - "english_name": "Igede" - }, - "rgk": { - "english_name": "Rangkas" - }, - "urh": { - "english_name": "Urhobo" - }, - "dmr": { - "english_name": "Damar, East" - }, - "drl": { - "english_name": "Paakantyi" - }, - "dow": { - "english_name": "Doyayo" - }, - "kwu": { - "english_name": "Kwakum" - }, - "jub": { - "english_name": "Wannu" - }, - "wrr": { - "english_name": "Wardaman" - }, - "lvu": { - "english_name": "Levuka" - }, - "lom": { - "english_name": "Loma (Liberia)" - }, - "kgm": { - "english_name": "Karipúna" - }, - "kkj": { - "english_name": "Kako" - }, - "gyn": { - "english_name": "Creole English, Guyanese" - }, - "tde": { - "english_name": "Dogon, Tiranige Diga" - }, - "bvr": { - "english_name": "Burarra" - }, - "kqi": { - "english_name": "Koitabu" - }, - "dhs": { - "english_name": "Dhaiso" - }, - "mbe": { - "english_name": "Molale" - }, - "myc": { - "english_name": "Mayeka" - }, - "pof": { - "english_name": "Poke" - }, - "gnm": { - "english_name": "Ginuman" - }, - "mpx": { - "english_name": "Misima-Panaeati" - }, - "tod": { - "english_name": "Toma" - }, - "gan": { - "english_name": "Chinese, Gan" - }, - "cgc": { - "english_name": "Kagayanen" - }, - "udl": { - "english_name": "Wuzlam" - }, - "twm": { - "english_name": "Monpa, Tawang" - }, - "tke": { - "english_name": "Takwane" - }, - "mvq": { - "english_name": "Moere" - }, - "byj": { - "english_name": "Bina (Nigeria)" - }, - "qxw": { - "english_name": "Quechua, Jauja Wanca" - }, - "ocu": { - "english_name": "Matlatzinca, Atzingo" - }, - "bqf": { - "english_name": "Baga Kaloum" - }, - "gmb": { - "english_name": "Gula'alaa" - }, - "usk": { - "english_name": "Usaghade" - }, - "nwc": { - "english_name": "Newari, Classical" - }, - "thp": { - "english_name": "Thompson" - }, - "mch": { - "english_name": "Maquiritari" - }, - "hiw": { - "english_name": "Hiw" - }, - "nan": { - "english_name": "Chinese, Min Nan" - }, - "yuk": { - "english_name": "Yuki" - }, - "yad": { - "english_name": "Yagua" - }, - "wri": { - "english_name": "Wariyangga" - }, - "awi": { - "english_name": "Aekyom" - }, - "siy": { - "english_name": "Sivandi" - }, - "nhr": { - "english_name": "Naro" - }, - "pbe": { - "english_name": "Popoloca, Mezontla" - }, - "tkm": { - "english_name": "Takelma" - }, - "xpq": { - "english_name": "Mohegan-Pequot" - }, - "ybx": { - "english_name": "Yawiyo" - }, - "bcw": { - "english_name": "Bana" - }, - "mcj": { - "english_name": "Mvanip" - }, - "aih": { - "english_name": "Ai-Cham" - }, - "bqk": { - "english_name": "Banda-Mbrès" - }, - "abq": { - "english_name": "Abaza" - }, - "tnk": { - "english_name": "Kwamera" - }, - "asw": { - "english_name": "Australian Aborigines Sign Language" - }, - "fai": { - "english_name": "Faiwol" - }, - "grv": { - "english_name": "Grebo, Central" - }, - "egy": { - "english_name": "Egyptian (Ancient)" - }, - "zil": { - "english_name": "Zialo" - }, - "sro": { - "english_name": "Sardinian, Campidanese" - }, - "ese": { - "english_name": "Ese Ejja" - }, - "duq": { - "english_name": "Dusun Malang" - }, - "ekg": { - "english_name": "Ekari" - }, - "prk": { - "english_name": "Parauk" - }, - "tex": { - "english_name": "Tennet" - }, - "nja": { - "english_name": "Nzanyi" - }, - "nmm": { - "english_name": "Manangba" - }, - "kod": { - "english_name": "Kodi" - }, - "pab": { - "english_name": "Parecís" - }, - "wul": { - "english_name": "Silimo" - }, - "usp": { - "english_name": "Uspanteco" - }, - "vka": { - "english_name": "Kariyarra" - }, - "trn": { - "english_name": "Trinitario" - }, - "xel": { - "english_name": "Kelo" - }, - "tau": { - "english_name": "Tanana, Upper" - }, - "ubr": { - "english_name": "Ubir" - }, - "qxh": { - "english_name": "Quechua, Panao Huánuco" - }, - "bah": { - "english_name": "Creole English, Bahamas" - }, - "lea": { - "english_name": "Lega-Shabunda" - }, - "aof": { - "english_name": "Bragat" - }, - "xnn": { - "english_name": "Kankanay, Northern" - }, - "mhc": { - "english_name": "Mocho" - }, - "aek": { - "english_name": "Haeke" - }, - "rel": { - "english_name": "Rendille" - }, - "gnn": { - "english_name": "Gumatj" - }, - "okk": { - "english_name": "One, Kwamtim" - }, - "thq": { - "english_name": "Tharu, Kochila" - }, - "aqm": { - "english_name": "Atohwaim" - }, - "mqo": { - "english_name": "Modole" - }, - "toc": { - "english_name": "Totonac, Coyutla" - }, - "kqr": { - "english_name": "Kimaragang" - }, - "ado": { - "english_name": "Abu" - }, - "nbn": { - "english_name": "Kuri" - }, - "ksk": { - "english_name": "Kansa" - }, - "ztq": { - "english_name": "Zapotec, Quioquitani-Quierí" - }, - "vam": { - "english_name": "Vanimo" - }, - "bdi": { - "english_name": "Burun" - }, - "guw": { - "english_name": "Gun" - }, - "pej": { - "english_name": "Pomo, Northern" - }, - "jbe": { - "english_name": "Judeo-Berber" - }, - "ogc": { - "english_name": "Ogbah" - }, - "bvv": { - "english_name": "Baniva" - }, - "gah": { - "english_name": "Alekano" - }, - "adt": { - "english_name": "Adnyamathanha" - }, - "dud": { - "english_name": "Hun-Saare" - }, - "ckb": { - "english_name": "Kurdish, Central" - }, - "luw": { - "english_name": "Luo (Cameroon)" - }, - "mtc": { - "english_name": "Munit" - }, - "kzn": { - "english_name": "Kokola" - }, - "pmx": { - "english_name": "Naga, Poumei" - }, - "huq": { - "english_name": "Tsat" - }, - "cyo": { - "english_name": "Cuyonon" - }, - "srr": { - "english_name": "Serer" - }, - "ldm": { - "english_name": "Landoma" - }, - "gld": { - "english_name": "Nanai" - }, - "acz": { - "english_name": "Acheron" - }, - "ymk": { - "english_name": "Makwe" - }, - "mzy": { - "english_name": "Mozambican Sign Language" - }, - "ysd": { - "english_name": "Samatao" - }, - "jdg": { - "english_name": "Jadgali" - }, - "bgy": { - "english_name": "Benggoi" - }, - "bwh": { - "english_name": "Bishuo" - }, - "tgq": { - "english_name": "Tring" - }, - "afz": { - "english_name": "Obokuitai" - }, - "bln": { - "english_name": "Bikol, Southern Catanduanes" - }, - "tng": { - "english_name": "Tobanga" - }, - "nhe": { - "english_name": "Nahuatl, Eastern Huasteca" - }, - "ulk": { - "english_name": "Meriam" - }, - "it": { - "english_name": "Italian", - "name": "Italiano" - }, - "lef": { - "english_name": "Lelemi" - }, - "uiv": { - "english_name": "Iyive" - }, - "nps": { - "english_name": "Nipsan" - }, - "mop": { - "english_name": "Mopán Maya" - }, - "njo": { - "english_name": "Naga, Ao" - }, - "lll": { - "english_name": "Lilau" - }, - "nec": { - "english_name": "Nedebang" - }, - "mmi": { - "english_name": "Musar" - }, - "vki": { - "english_name": "Ija-Zuba" - }, - "blp": { - "english_name": "Blablanga" - }, - "ga": { - "english_name": "Irish", - "name": "Gaeilge" - }, - "tol": { - "english_name": "Tolowa" - }, - "bmr": { - "english_name": "Muinane" - }, - "yzg": { - "english_name": "Buyang, E'ma" - }, - "gog": { - "english_name": "Gogo" - }, - "bmx": { - "english_name": "Baimak" - }, - "lis": { - "english_name": "Lisu" - }, - "mwg": { - "english_name": "Aiklep" - }, - "acl": { - "english_name": "Akar-Bale" - }, - "gak": { - "english_name": "Gamkonora" - }, - "ilg": { - "english_name": "Garig-Ilgar" - }, - "mbh": { - "english_name": "Mangseng" - }, - "ykr": { - "english_name": "Yekora" - }, - "tdl": { - "english_name": "Sur" - }, - "wep": { - "english_name": "Westphalien" - }, - "ogb": { - "english_name": "Ogbia" - }, - "omt": { - "english_name": "Omotik" - }, - "pso": { - "english_name": "Polish Sign Language" - }, - "kcp": { - "english_name": "Kanga" - }, - "pnb": { - "english_name": "Panjabi, Western" - }, - "uln": { - "english_name": "Unserdeutsch" - }, - "nbb": { - "english_name": "Ndoe" - }, - "swy": { - "english_name": "Sarua" - }, - "wet": { - "english_name": "Perai" - }, - "mje": { - "english_name": "Muskum" - }, - "miw": { - "english_name": "Akoye" - }, - "dty": { - "english_name": "Dotyali" - }, - "cak": { - "english_name": "Kaqchikel" - }, - "bmm": { - "english_name": "Malagasy, Northern Betsimisaraka" - }, - "khz": { - "english_name": "Keapara" - }, - "bbz": { - "english_name": "Creole Arabic, Babalia" - }, - "lje": { - "english_name": "Rampi" - }, - "plr": { - "english_name": "Senoufo, Palaka" - }, - "gud": { - "english_name": "Dida, Yocoboué" - }, - "ksf": { - "english_name": "Bafia" - }, - "mnh": { - "english_name": "Mono (Democratic Republic of Congo)" - }, - "pgs": { - "english_name": "Pangseng" - }, - "yin": { - "english_name": "Yinchia" - }, - "kke": { - "english_name": "Kakabe" - }, - "yoi": { - "english_name": "Yonaguni" - }, - "zpy": { - "english_name": "Zapotec, Mazaltepec" - }, - "anp": { - "english_name": "Angika" - }, - "sub": { - "english_name": "Suku" - }, - "brq": { - "english_name": "Breri" - }, - "utp": { - "english_name": "Amba (Solomon Islands)" - }, - "nv": { - "english_name": "Navajo" - }, - "gmn": { - "english_name": "Gimnime" - }, - "nmn": { - "english_name": "!Xóõ" - }, - "ndr": { - "english_name": "Ndoola" - }, - "nae": { - "english_name": "Naka'ela" - }, - "ang": { - "english_name": "English, Old (ca. 450-1100)" - }, - "bzy": { - "english_name": "Obanliku" - }, - "azt": { - "english_name": "Atta, Faire" - }, - "atc": { - "english_name": "Atsahuaca" - }, - "ndm": { - "english_name": "Ndam" - }, - "bjv": { - "english_name": "Bedjond" - }, - "lb": { - "english_name": "Luxembourgish" - }, - "kzw": { - "english_name": "Karirí-Xocó" - }, - "rou": { - "english_name": "Runga" - }, - "gnu": { - "english_name": "Gnau" - }, - "sgd": { - "english_name": "Surigaonon" - }, - "mjv": { - "english_name": "Mannan" - }, - "dic": { - "english_name": "Dida, Lakota" - }, - "wry": { - "english_name": "Merwari" - }, - "lkr": { - "english_name": "Päri" - }, - "gdt": { - "english_name": "Kungardutyi" - }, - "lky": { - "english_name": "Lokoya" - }, - "gni": { - "english_name": "Gooniyandi" - }, - "ood": { - "english_name": "Tohono O'odham" - }, - "bbw": { - "english_name": "Baba" - }, - "dui": { - "english_name": "Dumun" - }, - "kzl": { - "english_name": "Kayeli" - }, - "ksh": { - "english_name": "Kölsch" - }, - "xiy": { - "english_name": "Xipaya" - }, - "yww": { - "english_name": "Yawarawarga" - }, - "spk": { - "english_name": "Sengo" - }, - "bnb": { - "english_name": "Bookan" - }, - "lui": { - "english_name": "Luiseno" - }, - "xpm": { - "english_name": "Pumpokol" - }, - "ngg": { - "english_name": "Ngbaka Manza" - }, - "ghn": { - "english_name": "Ghanongga" - }, - "swj": { - "english_name": "Sira" - }, - "mtg": { - "english_name": "Una" - }, - "ngu": { - "english_name": "Nahuatl, Guerrero" - }, - "nju": { - "english_name": "Ngadjunmaya" - }, - "vgr": { - "english_name": "Vaghri" - }, - "wlm": { - "english_name": "Welsh, Middle" - }, - "rag": { - "english_name": "Logooli" - }, - "pth": { - "english_name": "Pataxó Hã-Ha-Hãe" - }, - "sdz": { - "english_name": "Sallands" - }, - "tul": { - "english_name": "Tula" - }, - "xre": { - "english_name": "Kreye" - }, - "mxx": { - "english_name": "Mahou" - }, - "mdl": { - "english_name": "Maltese Sign Language" - }, - "dsb": { - "english_name": "Sorbian, Lower" - }, - "ake": { - "english_name": "Akawaio" - }, - "bxs": { - "english_name": "Busam" - }, - "sjn": { - "english_name": "Sindarin" - }, - "bpw": { - "english_name": "Bo (Papua New Guinea)" - }, - "cbd": { - "english_name": "Carijona" - }, - "gce": { - "english_name": "Galice" - }, - "nez": { - "english_name": "Nez Perce" - }, - "djm": { - "english_name": "Dogon, Jamsay" - }, - "aku": { - "english_name": "Akum" - }, - "vel": { - "english_name": "Veluws" - }, - "ndj": { - "english_name": "Ndamba" - }, - "vmz": { - "english_name": "Mazatec, Mazatlán" - }, - "gru": { - "english_name": "Kistane" - }, - "bey": { - "english_name": "Beli (Papua New Guinea)" - }, - "dyy": { - "english_name": "Dyaabugay" - }, - "piz": { - "english_name": "Pije" - }, - "bbs": { - "english_name": "Bakpinka" - }, - "ykl": { - "english_name": "Khlula" - }, - "plc": { - "english_name": "Palawano, Central" - }, - "met": { - "english_name": "Mato" - }, - "tus": { - "english_name": "Tuscarora" - }, - "xjt": { - "english_name": "Jaitmatang" - }, - "ktt": { - "english_name": "Ketum" - }, - "aqg": { - "english_name": "Arigidi" - }, - "mhp": { - "english_name": "Malay, Balinese" - }, - "neq": { - "english_name": "Mixe, North Central" - }, - "umb": { - "english_name": "Umbundu" - }, - "dnw": { - "english_name": "Dani, Western" - }, - "fly": { - "english_name": "Tsotsitaal" - }, - "zbl": { - "english_name": "Blissymbols" - }, - "tub": { - "english_name": "Tübatulabal" - }, - "oma": { - "english_name": "Omaha-Ponca" - }, - "gbn": { - "english_name": "Mo'da" - }, - "hch": { - "english_name": "Huichol" - }, - "bib": { - "english_name": "Bissa" - }, - "agt": { - "english_name": "Agta, Central Cagayan" - }, - "kvg": { - "english_name": "Kuni-Boazi" - }, - "crg": { - "english_name": "Michif" - }, - "cjn": { - "english_name": "Chenapian" - }, - "yrk": { - "english_name": "Nenets" - }, - "xse": { - "english_name": "Sempan" - }, - "gux": { - "english_name": "Gourmanchéma" - }, - "xvi": { - "english_name": "Kamviri" - }, - "kbo": { - "english_name": "Keliko" - }, - "gat": { - "english_name": "Kenati" - }, - "liv": { - "english_name": "Liv" - }, - "kqn": { - "english_name": "Kaonde" - }, - "cvn": { - "english_name": "Chinantec, Valle Nacional" - }, - "sdh": { - "english_name": "Kurdish, Southern" - }, - "xma": { - "english_name": "Mushungulu" - }, - "tmt": { - "english_name": "Tasmate" - }, - "tpk": { - "english_name": "Tupinikin" - }, - "pcl": { - "english_name": "Pardhi" - }, - "ztn": { - "english_name": "Zapotec, Santa Catarina Albarradas" - }, - "ttk": { - "english_name": "Totoro" - }, - "ydk": { - "english_name": "Yoidik" - }, - "xua": { - "english_name": "Kurumba, Alu" - }, - "keo": { - "english_name": "Kakwa" - }, - "otk": { - "english_name": "Turkish, Old" - }, - "njd": { - "english_name": "Ndonde Hamba" - }, - "nxx": { - "english_name": "Nafri" - }, - "xly": { - "english_name": "Elymian" - }, - "lbz": { - "english_name": "Lardil" - }, - "sie": { - "english_name": "Simaa" - }, - "yam": { - "english_name": "Yamba" - }, - "wba": { - "english_name": "Warao" - }, - "scp": { - "english_name": "Helambu Sherpa" - }, - "is": { - "english_name": "Icelandic", - "name": "Íslenska" - }, - "daz": { - "english_name": "Dao" - }, - "bym": { - "english_name": "Bidyara" - }, - "tnc": { - "english_name": "Tanimuca-Retuarã" - }, - "oon": { - "english_name": "Önge" - }, - "biz": { - "english_name": "Baloi" - }, - "bia": { - "english_name": "Badimaya" - }, - "smf": { - "english_name": "Auwe" - }, - "wrz": { - "english_name": "Waray (Australia)" - }, - "emn": { - "english_name": "Eman" - }, - "tva": { - "english_name": "Vaghua" - }, - "tpm": { - "english_name": "Tampulma" - }, - "klo": { - "english_name": "Kapya" - }, - "kib": { - "english_name": "Koalib" - }, - "ibn": { - "english_name": "Ibino" - }, - "but": { - "english_name": "Bungain" - }, - "xtz": { - "english_name": "Tasmanian" - }, - "ttz": { - "english_name": "Tsum" - }, - "nrg": { - "english_name": "Narango" - }, - "ibu": { - "english_name": "Ibu" - }, - "sux": { - "english_name": "Sumerian" - }, - "snq": { - "english_name": "Sangu (Gabon)" - }, - "tkb": { - "english_name": "Buksa" - }, - "akr": { - "english_name": "Araki" - }, - "tdj": { - "english_name": "Tajio" - }, - "mle": { - "english_name": "Manambu" - }, - "bgk": { - "english_name": "Bit" - }, - "mwz": { - "english_name": "Moingi" - }, - "hmj": { - "english_name": "Ge" - }, - "kgs": { - "english_name": "Kumbainggar" - }, - "mjz": { - "english_name": "Majhi" - }, - "arz": { - "english_name": "Arabic, Egyptian" - }, - "tbv": { - "english_name": "Tobo" - }, - "wbf": { - "english_name": "Wara" - }, - "acx": { - "english_name": "Arabic, Omani" - }, - "bst": { - "english_name": "Basketo" - }, - "jad": { - "english_name": "Jahanka" - }, - "xgg": { - "english_name": "Goreng" - }, - "mgy": { - "english_name": "Mbunga" - }, - "tax": { - "english_name": "Tamki" - }, - "vag": { - "english_name": "Vagla" - }, - "trv": { - "english_name": "Taroko" - }, - "uba": { - "english_name": "Ubang" - }, - "jna": { - "english_name": "Jangshung" - }, - "quq": { - "english_name": "Quinqui" - }, - "jko": { - "english_name": "Kubo" - }, - "mfi": { - "english_name": "Wandala" - }, - "zpa": { - "english_name": "Zapotec, Lachiguiri" - }, - "mcv": { - "english_name": "Minanibai" - }, - "mwf": { - "english_name": "Murrinh-Patha" - }, - "kgi": { - "english_name": "Selangor Sign Language" - }, - "del": { - "english_name": "Delaware" - }, - "bhb": { - "english_name": "Bhili" - }, - "juy": { - "english_name": "Juray" - }, - "gng": { - "english_name": "Ngangam" - }, - "nlc": { - "english_name": "Nalca" - }, - "bsv": { - "english_name": "Baga Sobané" - }, - "lut": { - "english_name": "Lushootseed" - }, - "lng": { - "english_name": "Langobardic" - }, - "ahg": { - "english_name": "Qimant" - }, - "ngt": { - "english_name": "Ngeq" - }, - "nsz": { - "english_name": "Nisenan" - }, - "si": { - "english_name": "Sinhala" - }, - "seq": { - "english_name": "Sénoufo, Senara" - }, - "xmy": { - "english_name": "Mayaguduna" - }, - "tlt": { - "english_name": "Teluti" - }, - "arr": { - "english_name": "Karo (Brazil)" - }, - "bfi": { - "english_name": "British Sign Language" - }, - "fir": { - "english_name": "Firan" - }, - "jih": { - "english_name": "sTodsde" - }, - "pos": { - "english_name": "Popoluca, Sayula" - }, - "tnt": { - "english_name": "Tontemboan" - }, - "kqx": { - "english_name": "Mser" - }, - "myx": { - "english_name": "Masaaba" - }, - "gbw": { - "english_name": "Gabi-Gabi" - }, - "wsi": { - "english_name": "Wusi" - }, - "guz": { - "english_name": "Gusii" - }, - "rnr": { - "english_name": "Nari Nari" - }, - "azg": { - "english_name": "Amuzgo, San Pedro Amuzgos" - }, - "apq": { - "english_name": "A-Pucikwar" - }, - "lra": { - "english_name": "Rara Bakati'" - }, - "zzj": { - "english_name": "Zhuang, Zuojiang" - }, - "syo": { - "english_name": "Suoy" - }, - "lez": { - "english_name": "Lezghian" - }, - "ntz": { - "english_name": "Natanzi" - }, - "tto": { - "english_name": "Ta'oih, Lower" - }, - "nee": { - "english_name": "Nêlêmwa-Nixumwak" - }, - "fur": { - "english_name": "Friulian" - }, - "jiq": { - "english_name": "Guanyinqiao" - }, - "bgs": { - "english_name": "Tagabawa" - }, - "lnn": { - "english_name": "Lorediakarkar" - }, - "krw": { - "english_name": "Krahn, Western" - }, - "pnw": { - "english_name": "Panytyima" - }, - "zeh": { - "english_name": "Zhuang, Eastern Hongshuihe" - }, - "ptp": { - "english_name": "Patep" - }, - "wbi": { - "english_name": "Vwanji" - }, - "mee": { - "english_name": "Mengen" - }, - "viv": { - "english_name": "Iduna" - }, - "bua": { - "english_name": "Buriat" - }, - "sgx": { - "english_name": "Sierra Leone Sign Language" - }, - "fuq": { - "english_name": "Fulfulde, Central-Eastern Niger" - }, - "snp": { - "english_name": "Siane" - }, - "kjd": { - "english_name": "Kiwai, Southern" - }, - "rar": { - "english_name": "Rarotongan" - }, - "vao": { - "english_name": "Vao" - }, - "myd": { - "english_name": "Maramba" - }, - "mef": { - "english_name": "Megam" - }, - "yso": { - "english_name": "Nisi (China)" - }, - "kfa": { - "english_name": "Kodava" - }, - "qxr": { - "english_name": "Quichua, Cañar Highland" - }, - "nac": { - "english_name": "Narak" - }, - "jgo": { - "english_name": "Ngomba" - }, - "bha": { - "english_name": "Bharia" - }, - "obk": { - "english_name": "Bontok, Southern" - }, - "koh": { - "english_name": "Koyo" - }, - "cik": { - "english_name": "Kinnauri, Chitkuli" - }, - "prm": { - "english_name": "Kibiri" - }, - "ksp": { - "english_name": "Kaba" - }, - "wsv": { - "english_name": "Wotapuri-Katarqalai" - }, - "jkp": { - "english_name": "Karen, Paku" - }, - "dbo": { - "english_name": "Dulbu" - }, - "kg": { - "english_name": "Kongo" - }, - "mxy": { - "english_name": "Mixtec, Southeastern Nochixtlán" - }, - "hmb": { - "english_name": "Songhay, Humburi Senni" - }, - "yss": { - "english_name": "Yessan-Mayo" - }, - "bmh": { - "english_name": "Kein" - }, - "tak": { - "english_name": "Tala" - }, - "oos": { - "english_name": "Ossetic, Old" - }, - "geb": { - "english_name": "Kire" - }, - "xwg": { - "english_name": "Kwegu" - }, - "bvj": { - "english_name": "Baan" - }, - "sdu": { - "english_name": "Sarudu" - }, - "yns": { - "english_name": "Yansi" - }, - "pij": { - "english_name": "Pijao" - }, - "sxg": { - "english_name": "Shixing" - }, - "vmy": { - "english_name": "Mazatec, Ayautla" - }, - "lrv": { - "english_name": "Larevat" - }, - "llu": { - "english_name": "Lau" - }, - "wmw": { - "english_name": "Mwani" - }, - "wau": { - "english_name": "Waurá" - }, - "zrs": { - "english_name": "Mairasi" - }, - "stm": { - "english_name": "Setaman" - }, - "yee": { - "english_name": "Yimas" - }, - "bci": { - "english_name": "Baoulé" - }, - "lcc": { - "english_name": "Legenyem" - }, - "tth": { - "english_name": "Ta'oih, Upper" - }, - "lgh": { - "english_name": "Laghuu" - }, - "fum": { - "english_name": "Fum" - }, - "lhh": { - "english_name": "Laha (Indonesia)" - }, - "hmw": { - "english_name": "Hmong, Western Mashan" - }, - "mka": { - "english_name": "Mbre" - }, - "hnh": { - "english_name": "//Ani" - }, - "bpy": { - "english_name": "Bishnupriya" - }, - "cea": { - "english_name": "Chehalis, Lower" - }, - "yit": { - "english_name": "Lalu, Eastern" - }, - "rtm": { - "english_name": "Rotuman" - }, - "sjt": { - "english_name": "Sami, Ter" - }, - "atr": { - "english_name": "Waimiri-Atroari" - }, - "ote": { - "english_name": "Otomi, Mezquital" - }, - "yue": { - "english_name": "Chinese, Yue" - }, - "sbl": { - "english_name": "Sambal, Botolan" - }, - "muv": { - "english_name": "Muthuvan" - }, - "leu": { - "english_name": "Kara (Papua New Guinea)" - }, - "lgn": { - "english_name": "Opuuo" - }, - "uji": { - "english_name": "Tanjijili" - }, - "alk": { - "english_name": "Alak" - }, - "akf": { - "english_name": "Akpa" - }, - "lie": { - "english_name": "Likila" - }, - "vra": { - "english_name": "Vera'a" - }, - "mty": { - "english_name": "Nabi" - }, - "soo": { - "english_name": "Songo" - }, - "btx": { - "english_name": "Batak Karo" - }, - "yik": { - "english_name": "Lalo, Dongshanba" - }, - "alw": { - "english_name": "Alaba-K’abeena" - }, - "cry": { - "english_name": "Cori" - }, - "guv": { - "english_name": "Gey" - }, - "unx": { - "english_name": "Munda" - }, - "pcb": { - "english_name": "Pear" - }, - "bsh": { - "english_name": "Kati" - }, - "duv": { - "english_name": "Duvle" - }, - "okr": { - "english_name": "Kirike" - }, - "mdb": { - "english_name": "Morigi" - }, - "crw": { - "english_name": "Chrau" - }, - "owl": { - "english_name": "Welsh, Old" - }, - "tsk": { - "english_name": "Tseku" - }, - "ump": { - "english_name": "Umpila" - }, - "kcb": { - "english_name": "Kawacha" - }, - "rej": { - "english_name": "Rejang" - }, - "gos": { - "english_name": "Gronings" - }, - "kiu": { - "english_name": "Kirmanjki (individual language)" - }, - "mqz": { - "english_name": "Pano" - }, - "swi": { - "english_name": "Sui" - }, - "awe": { - "english_name": "Awetí" - }, - "shu": { - "english_name": "Arabic, Chadian" - }, - "hwo": { - "english_name": "Hwana" - }, - "xkg": { - "english_name": "Kagoro" - }, - "dbi": { - "english_name": "Doka" - }, - "bez": { - "english_name": "Bena (Tanzania)" - }, - "cuw": { - "english_name": "Chukwa" - }, - "ylb": { - "english_name": "Yaleba" - }, - "mmr": { - "english_name": "Miao, Western Xiangxi" - }, - "bro": { - "english_name": "Brokkat" - }, - "jle": { - "english_name": "Ngile" - }, - "lbl": { - "english_name": "Bikol, Libon" - }, - "kdd": { - "english_name": "Yankunytjatjara" - }, - "jaq": { - "english_name": "Yaqay" - }, - "ckr": { - "english_name": "Kairak" - }, - "acp": { - "english_name": "Acipa, Eastern" - }, - "bcz": { - "english_name": "Bainouk-Gunyaamolo" - }, - "sst": { - "english_name": "Sinasina" - }, - "tgx": { - "english_name": "Tagish" - }, - "jbi": { - "english_name": "Badjiri" - }, - "br": { - "english_name": "Breton", - "name": "Brezhoneg" - }, - "bit": { - "english_name": "Berinomo" - }, - "nst": { - "english_name": "Naga, Tase" - }, - "ypp": { - "english_name": "Phupa" - }, - "rat": { - "english_name": "Razajerdi" - }, - "myo": { - "english_name": "Anfillo" - }, - "bka": { - "english_name": "Kyak" - }, - "yux": { - "english_name": "Yukaghir, Southern" - }, - "lud": { - "english_name": "Ludian" - }, - "cga": { - "english_name": "Changriwa" - }, - "tru": { - "english_name": "Turoyo" - }, - "wmc": { - "english_name": "Wamas" - }, - "coz": { - "english_name": "Chochotec" - }, - "elh": { - "english_name": "El Hugeirat" - }, - "ktr": { - "english_name": "Kota Marudu Tinagas" - }, - "iso": { - "english_name": "Isoko" - }, - "bpt": { - "english_name": "Barrow Point" - }, - "diu": { - "english_name": "Diriku" - }, - "prs": { - "english_name": "Dari" - }, - "wag": { - "english_name": "Wa'ema" - }, - "kbv": { - "english_name": "Dera (Indonesia)" - }, - "gwj": { - "english_name": "/Gwi" - }, - "nru": { - "english_name": "Narua" - }, - "hih": { - "english_name": "Pamosu" - }, - "dnu": { - "english_name": "Danau" - }, - "old": { - "english_name": "Mochi" - }, - "uvl": { - "english_name": "Lote" - }, - "lia": { - "english_name": "Limba, West-Central" - }, - "mkx": { - "english_name": "Manobo, Kinamiging" - }, - "fap": { - "english_name": "Palor" - }, - "fah": { - "english_name": "Fali, Baissa" - }, - "gnt": { - "english_name": "Guntai" - }, - "kze": { - "english_name": "Kosena" - }, - "pta": { - "english_name": "Pai Tavytera" - }, - "lbi": { - "english_name": "La'bi" - }, - "glo": { - "english_name": "Galambu" - }, - "biy": { - "english_name": "Birhor" - }, - "reb": { - "english_name": "Rembong" - }, - "pwi": { - "english_name": "Patwin" - }, - "tid": { - "english_name": "Tidong" - }, - "ppn": { - "english_name": "Papapana" - }, - "coy": { - "english_name": "Coyaima" - }, - "gon": { - "english_name": "Gondi" - }, - "kzj": { - "english_name": "Kadazan, Coastal" - }, - "xgu": { - "english_name": "Unggumi" - }, - "bll": { - "english_name": "Biloxi" - }, - "gam": { - "english_name": "Kandawo" - }, - "sik": { - "english_name": "Sikiana" - }, - "tug": { - "english_name": "Tunia" - }, - "rkm": { - "english_name": "Marka" - }, - "res": { - "english_name": "Reshe" - }, - "tbm": { - "english_name": "Tagbu" - }, - "sod": { - "english_name": "Songoora" - }, - "ukp": { - "english_name": "Ukpe-Bayobiri" - }, - "rbb": { - "english_name": "Palaung, Rumai" - }, - "lbe": { - "english_name": "Lak" - }, - "msy": { - "english_name": "Aruamu" - }, - "bqg": { - "english_name": "Bago-Kusuntu" - }, - "lja": { - "english_name": "Golpa" - }, - "nnh": { - "english_name": "Ngiemboon" - }, - "gdd": { - "english_name": "Gedaged" - }, - "rmg": { - "english_name": "Norwegian, Traveller" - }, - "jiy": { - "english_name": "Jinuo, Buyuan" - }, - "aln": { - "english_name": "Albanian, Gheg" - }, - "kow": { - "english_name": "Kugama" - }, - "bpp": { - "english_name": "Kaure" - }, - "ojv": { - "english_name": "Ontong Java" - }, - "thf": { - "english_name": "Thangmi" - }, - "khr": { - "english_name": "Kharia" - }, - "iml": { - "english_name": "Miluk" - }, - "lna": { - "english_name": "Langbashe" - }, - "lmr": { - "english_name": "Lamalera" - }, - "cda": { - "english_name": "Choni" - }, - "wew": { - "english_name": "Wejewa" - }, - "akc": { - "english_name": "Mpur" - }, - "aa": { - "english_name": "Afar" - }, - "siu": { - "english_name": "Sinagen" - }, - "yxa": { - "english_name": "Mayawali" - }, - "mcn": { - "english_name": "Masana" - }, - "imi": { - "english_name": "Anamgura" - }, - "lml": { - "english_name": "Hano" - }, - "kfi": { - "english_name": "Kurumba, Kannada" - }, - "mjo": { - "english_name": "Malankuravan" - }, - "kzm": { - "english_name": "Kais" - }, - "ymg": { - "english_name": "Yamongeri" - }, - "mie": { - "english_name": "Mixtec, Ocotepec" - }, - "naf": { - "english_name": "Nabak" - }, - "mzh": { - "english_name": "Wichí Lhamtés Güisnay" - }, - "bnl": { - "english_name": "Boon" - }, - "snu": { - "english_name": "Senggi" - }, - "xss": { - "english_name": "Assan" - }, - "kmt": { - "english_name": "Kemtuik" - }, - "qvy": { - "english_name": "Queyu" - }, - "xml": { - "english_name": "Malaysian Sign Language" - }, - "rsl": { - "english_name": "Russian Sign Language" - }, - "sjg": { - "english_name": "Assangori" - }, - "mcc": { - "english_name": "Bitur" - }, - "amg": { - "english_name": "Amurdak" - }, - "lof": { - "english_name": "Logol" - }, - "tek": { - "english_name": "Teke, Ibali" - }, - "ctd": { - "english_name": "Chin, Tedim" - }, - "bkl": { - "english_name": "Berik" - }, - "mnp": { - "english_name": "Chinese, Min Bei" - }, - "den": { - "english_name": "Slave (Athapascan)" - }, - "bji": { - "english_name": "Burji" - }, - "kzq": { - "english_name": "Kaike" - }, - "bso": { - "english_name": "Buso" - }, - "nmf": { - "english_name": "Naga, Tangkhul (India)" - }, - "brb": { - "english_name": "Lave" - }, - "cup": { - "english_name": "Cupeño" - }, - "sip": { - "english_name": "Sikkimese" - }, - "mjl": { - "english_name": "Mandeali" - }, - "nkr": { - "english_name": "Nukuoro" - }, - "yui": { - "english_name": "Yurutí" - }, - "hob": { - "english_name": "Mari (Madang Province)" - }, - "llf": { - "english_name": "Hermit" - }, - "maj": { - "english_name": "Mazatec, Jalapa De Díaz" - }, - "onx": { - "english_name": "Onin Based Pidgin" - }, - "ngn": { - "english_name": "Ngwo" - }, - "zpl": { - "english_name": "Zapotec, Lachixío" - }, - "aio": { - "english_name": "Aiton" - }, - "mpi": { - "english_name": "Mpade" - }, - "pef": { - "english_name": "Pomo, Northeastern" - }, - "nly": { - "english_name": "Nyamal" - }, - "dws": { - "english_name": "Dutton World Speedwords" - }, - "far": { - "english_name": "Fataleka" - }, - "kbi": { - "english_name": "Kaptiau" - }, - "snn": { - "english_name": "Siona" - }, - "kop": { - "english_name": "Waube" - }, - "plu": { - "english_name": "Palikúr" - }, - "poh": { - "english_name": "Poqomchi'" - }, - "atw": { - "english_name": "Atsugewi" - }, - "fub": { - "english_name": "Fulfulde, Adamawa" - }, - "ngj": { - "english_name": "Ngie" - }, - "ny": { - "english_name": "Nyanja" - }, - "mij": { - "english_name": "Abar" - }, - "pfl": { - "english_name": "Pfaelzisch" - }, - "eee": { - "english_name": "E" - }, - "fkk": { - "english_name": "Kirya-Konzəl" - }, - "mcg": { - "english_name": "Mapoyo" - }, - "njm": { - "english_name": "Naga, Angami" - }, - "gwi": { - "english_name": "Gwichʼin" - }, - "dse": { - "english_name": "Dutch Sign Language" - }, - "dlg": { - "english_name": "Dolgan" - }, - "tcz": { - "english_name": "Chin, Thado" - }, - "koa": { - "english_name": "Konomala" - }, - "dms": { - "english_name": "Dampelas" - }, - "smp": { - "english_name": "Samaritan" - }, - "jkr": { - "english_name": "Koro (India)" - }, - "maa": { - "english_name": "Mazatec, San Jerónimo Tecóatl" - }, - "ku": { - "english_name": "Kurdish" - }, - "tfn": { - "english_name": "Tanaina" - }, - "akg": { - "english_name": "Anakalangu" - }, - "bfa": { - "english_name": "Bari" - }, - "wnk": { - "english_name": "Wanukaka" - }, - "tse": { - "english_name": "Tunisian Sign Language" - }, - "pzn": { - "english_name": "Naga, Para" - }, - "kdi": { - "english_name": "Kumam" - }, - "duu": { - "english_name": "Drung" - }, - "kzv": { - "english_name": "Komyandaret" - }, - "gya": { - "english_name": "Gbaya, Northwest" - }, - "xir": { - "english_name": "Xiriâna" - }, - "scl": { - "english_name": "Shina" - }, - "mdz": { - "english_name": "Suruí Do Pará" - }, - "erw": { - "english_name": "Erokwanas" - }, - "sxl": { - "english_name": "Selian" - }, - "lbs": { - "english_name": "Libyan Sign Language" - }, - "wrn": { - "english_name": "Warnang" - }, - "sen": { - "english_name": "Sénoufo, Nanerigé" - }, - "mzw": { - "english_name": "Deg" - }, - "oca": { - "english_name": "Ocaina" - }, - "kud": { - "english_name": "'Auhelawa" - }, - "soh": { - "english_name": "Aka" - }, - "dek": { - "english_name": "Dek" - }, - "kms": { - "english_name": "Kamasau" - }, - "tji": { - "english_name": "Tujia, Northern" - }, - "nra": { - "english_name": "Ngom" - }, - "kkb": { - "english_name": "Kwerisa" - }, - "ybh": { - "english_name": "Yakha" - }, - "bpk": { - "english_name": "Orowe" - }, - "ule": { - "english_name": "Lule" - }, - "kwi": { - "english_name": "Awa-Cuaiquer" - }, - "piy": { - "english_name": "Piya-Kwonci" - }, - "thc": { - "english_name": "Tai Hang Tong" - }, - "zea": { - "english_name": "Zeeuws" - }, - "nux": { - "english_name": "Mehek" - }, - "ajz": { - "english_name": "Karbi, Amri" - }, - "fni": { - "english_name": "Fania" - }, - "sta": { - "english_name": "Settla" - }, - "xag": { - "english_name": "Aghwan" - }, - "nos": { - "english_name": "Nisu, Eastern" - }, - "not": { - "english_name": "Nomatsiguenga" - }, - "tqr": { - "english_name": "Torona" - }, - "opm": { - "english_name": "Oksapmin" - }, - "jod": { - "english_name": "Wojenaka" - }, - "roc": { - "english_name": "Roglai, Cacgia" - }, - "zpd": { - "english_name": "Zapotec, Southeastern Ixtlán" - }, - "gho": { - "english_name": "Ghomara" - }, - "wad": { - "english_name": "Wandamen" - }, - "twl": { - "english_name": "Tawara" - }, - "tsb": { - "english_name": "Tsamai" - }, - "kek": { - "english_name": "Kekchí" - }, - "sde": { - "english_name": "Surubu" - }, - "mjh": { - "english_name": "Mwera (Nyasa)" - }, - "lae": { - "english_name": "Pattani" - }, - "kso": { - "english_name": "Kofa" - }, - "iqu": { - "english_name": "Iquito" - }, - "hsl": { - "english_name": "Hausa Sign Language" - }, - "nnr": { - "english_name": "Narungga" - }, - "caw": { - "english_name": "Callawalla" - }, - "ayh": { - "english_name": "Arabic, Hadrami" - }, - "zad": { - "english_name": "Zapotec, Cajonos" - }, - "wne": { - "english_name": "Waneci" - }, - "nks": { - "english_name": "Asmat, North" - }, - "poc": { - "english_name": "Poqomam" - }, - "ale": { - "english_name": "Aleut" - }, - "tbb": { - "english_name": "Tapeba" - }, - "akb": { - "english_name": "Batak Angkola" - }, - "hid": { - "english_name": "Hidatsa" - }, - "bmc": { - "english_name": "Biem" - }, - "mrp": { - "english_name": "Morouas" - }, - "nrm": { - "english_name": "Narom" - }, - "skt": { - "english_name": "Sakata" - }, - "bpb": { - "english_name": "Barbacoas" - }, - "sze": { - "english_name": "Seze" - }, - "vor": { - "english_name": "Voro" - }, - "smh": { - "english_name": "Samei" - }, - "kja": { - "english_name": "Mlap" - }, - "njj": { - "english_name": "Njen" - }, - "ggt": { - "english_name": "Gitua" - }, - "prp": { - "english_name": "Parsi" - }, - "ded": { - "english_name": "Dedua" - }, - "akh": { - "english_name": "Angal Heneng" - }, - "gvr": { - "english_name": "Gurung, Western" - }, - "war": { - "english_name": "Waray (Philippines)" - }, - "lrl": { - "english_name": "Lari" - }, - "jmn": { - "english_name": "Naga, Makuri" - }, - "ciy": { - "english_name": "Chaima" - }, - "zpv": { - "english_name": "Zapotec, Chichicapan" - }, - "ste": { - "english_name": "Liana-Seti" - }, - "hvv": { - "english_name": "Huave, Santa María Del Mar" - }, - "mbs": { - "english_name": "Manobo, Sarangani" - }, - "yrn": { - "english_name": "Yerong" - }, - "bje": { - "english_name": "Mien, Biao-Jiao" - }, - "sdx": { - "english_name": "Melanau, Sibu" - }, - "ray": { - "english_name": "Rapa" - }, - "en": { - "english_name": "English" - }, - "cbv": { - "english_name": "Cacua" - }, - "tlc": { - "english_name": "Totonac, Yecuatla" - }, - "xbp": { - "english_name": "Bibbulman" - }, - "kfc": { - "english_name": "Konda-Dora" - }, - "gda": { - "english_name": "Lohar, Gade" - }, - "krs": { - "english_name": "Gbaya (Sudan)" - }, - "sea": { - "english_name": "Semai" - }, - "aak": { - "english_name": "Ankave" - }, - "ahs": { - "english_name": "Ashe" - }, - "sti": { - "english_name": "Stieng, Bulo" - }, - "kij": { - "english_name": "Kilivila" - }, - "mmv": { - "english_name": "Miriti" - }, - "blo": { - "english_name": "Anii" - }, - "bcc": { - "english_name": "Balochi, Southern" - }, - "agh": { - "english_name": "Ngelima" - }, - "fll": { - "english_name": "Fali, North" - }, - "ceb": { - "english_name": "Cebuano" - }, - "sir": { - "english_name": "Siri" - }, - "ab": { - "english_name": "Abkhazian" - }, - "hka": { - "english_name": "Kahe" - }, - "wno": { - "english_name": "Wano" - }, - "mli": { - "english_name": "Malimpung" - }, - "lac": { - "english_name": "Lacandon" - }, - "buj": { - "english_name": "Basa-Gurmana" - }, - "hot": { - "english_name": "Hote" - }, - "sr": { - "english_name": "Serbian", - "name": "српски" - }, - "vmd": { - "english_name": "Koraga, Mudu" - }, - "dne": { - "english_name": "Ndendeule" - }, - "kfh": { - "english_name": "Kurichiya" - }, - "flh": { - "english_name": "Foau" - }, - "juo": { - "english_name": "Jiba" - }, - "tcs": { - "english_name": "Creole, Torres Strait" - }, - "duz": { - "english_name": "Duli" - }, - "rtw": { - "english_name": "Rathawi" - }, - "fon": { - "english_name": "Fon" - }, - "qvs": { - "english_name": "Quechua, San Martín" - }, - "zpz": { - "english_name": "Zapotec, Texmelucan" - }, - "bsn": { - "english_name": "Barasana-Eduria" - }, - "hap": { - "english_name": "Hupla" - }, - "nik": { - "english_name": "Nicobarese, Southern" - }, - "gbr": { - "english_name": "Gbagyi" - }, - "zoo": { - "english_name": "Zapotec, Asunción Mixtepec" - }, - "enb": { - "english_name": "Markweeta" - }, - "frd": { - "english_name": "Fordata" - }, - "dyd": { - "english_name": "Dyugun" - }, - "ttg": { - "english_name": "Tutong" - }, - "pbb": { - "english_name": "Páez" - }, - "yrs": { - "english_name": "Yarsun" - }, - "hji": { - "english_name": "Haji" - }, - "tpp": { - "english_name": "Tepehua, Pisaflores" - }, - "nit": { - "english_name": "Kolami, Southeastern" - }, - "one": { - "english_name": "Oneida" - }, - "gha": { - "english_name": "Ghadamès" - }, - "sbf": { - "english_name": "Shabo" - }, - "chn": { - "english_name": "Chinook jargon" - }, - "sqm": { - "english_name": "Suma" - }, - "ain": { - "english_name": "Ainu (Japan)" - }, - "sgh": { - "english_name": "Shughni" - }, - "atb": { - "english_name": "Zaiwa" - }, - "mcq": { - "english_name": "Ese" - }, - "fli": { - "english_name": "Fali" - }, - "jat": { - "english_name": "Jakati" - }, - "xpt": { - "english_name": "Punthamara" - }, - "mlr": { - "english_name": "Vame" - }, - "crr": { - "english_name": "Algonquian, Carolina" - }, - "squ": { - "english_name": "Squamish" - }, - "ktq": { - "english_name": "Katabaga" - }, - "guc": { - "english_name": "Wayuu" - }, - "gyd": { - "english_name": "Kayardild" - }, - "bhz": { - "english_name": "Bada (Indonesia)" - }, - "blv": { - "english_name": "Bolo" - }, - "lmq": { - "english_name": "Lamatuka" - }, - "cav": { - "english_name": "Cavineña" - }, - "tkn": { - "english_name": "Toku-No-Shima" - }, - "hrt": { - "english_name": "Hértevin" - }, - "rom": { - "english_name": "Romany" - }, - "wku": { - "english_name": "Kunduvadi" - }, - "kzs": { - "english_name": "Dusun, Sugut" - }, - "shp": { - "english_name": "Shipibo-Conibo" - }, - "nur": { - "english_name": "Nukuria" - }, - "kzp": { - "english_name": "Kaidipang" - }, - "bfb": { - "english_name": "Bareli, Pauri" - }, - "zmp": { - "english_name": "Mpuono" - }, - "jeh": { - "english_name": "Jeh" - }, - "guh": { - "english_name": "Guahibo" - }, - "tte": { - "english_name": "Bwanabwana" - }, - "zai": { - "english_name": "Zapotec, Isthmus" - }, - "giw": { - "english_name": "Gelao, White" - }, - "bub": { - "english_name": "Bua" - }, - "kki": { - "english_name": "Kagulu" - }, - "abc": { - "english_name": "Ayta, Ambala" - }, - "gvy": { - "english_name": "Guyani" - }, - "gdb": { - "english_name": "Gadaba, Pottangi Ollar" - }, - "kcf": { - "english_name": "Ukaan" - }, - "gih": { - "english_name": "Githabul" - }, - "nyp": { - "english_name": "Nyang'i" - }, - "kbp": { - "english_name": "Kabiyè" - }, - "bme": { - "english_name": "Limassa" - }, - "lks": { - "english_name": "Kisa" - }, - "nsq": { - "english_name": "Miwok, Northern Sierra" - }, - "emk": { - "english_name": "Maninkakan, Eastern" - }, - "kaf": { - "english_name": "Katso" - }, - "wbq": { - "english_name": "Waddar" - }, - "blr": { - "english_name": "Blang" - }, - "spe": { - "english_name": "Sepa (Papua New Guinea)" - }, - "dbl": { - "english_name": "Dyirbal" - }, - "ert": { - "english_name": "Eritai" - }, - "luf": { - "english_name": "Laua" - }, - "zmt": { - "english_name": "Maringarr" - }, - "psp": { - "english_name": "Philippine Sign Language" - }, - "aki": { - "english_name": "Aiome" - }, - "acr": { - "english_name": "Achi" - }, - "yme": { - "english_name": "Yameo" - }, - "ldk": { - "english_name": "Leelau" - }, - "uis": { - "english_name": "Uisai" - }, - "omg": { - "english_name": "Omagua" - }, - "hld": { - "english_name": "Halang Doan" - }, - "syc": { - "english_name": "Syriac, Classical" - }, - "bue": { - "english_name": "Beothuk" - }, - "gwa": { - "english_name": "Mbato" - }, - "bge": { - "english_name": "Bauria" - }, - "mfr": { - "english_name": "Marithiel" - }, - "wgi": { - "english_name": "Wahgi" - }, - "ash": { - "english_name": "Abishira" - }, - "xil": { - "english_name": "Illyrian" - }, - "ttq": { - "english_name": "Tamajaq, Tawallammat" - }, - "mjp": { - "english_name": "Malapandaram" - }, - "hrc": { - "english_name": "Niwer Mil" - }, - "pi": { - "english_name": "Pali" - }, - "bhl": { - "english_name": "Bimin" - }, - "ije": { - "english_name": "Biseni" - }, - "cfd": { - "english_name": "Cara" - }, - "yi": { - "english_name": "Yiddish" - }, - "chl": { - "english_name": "Cahuilla" - }, - "cy": { - "english_name": "Welsh", - "name": "Cymraeg" - }, - "mfq": { - "english_name": "Moba" - }, - "ior": { - "english_name": "Inor" - }, - "kuy": { - "english_name": "Kuuku-Ya'u" - }, - "aqr": { - "english_name": "Arhâ" - }, - "ktk": { - "english_name": "Kaniet" - }, - "tpv": { - "english_name": "Tanapag" - }, - "tnn": { - "english_name": "Tanna, North" - }, - "lkt": { - "english_name": "Lakota" - }, - "ksm": { - "english_name": "Kumba" - }, - "dtm": { - "english_name": "Dogon, Tomo Kan" - }, - "sat": { - "english_name": "Santali" - }, - "cku": { - "english_name": "Koasati" - }, - "shz": { - "english_name": "Senoufo, Syenara" - }, - "cya": { - "english_name": "Chatino, Nopala" - }, - "tzl": { - "english_name": "Talossan" - }, - "aoc": { - "english_name": "Pemon" - }, - "myj": { - "english_name": "Mangayat" - }, - "rmb": { - "english_name": "Rembarunga" - }, - "kla": { - "english_name": "Klamath-Modoc" - }, - "gex": { - "english_name": "Garre" - }, - "kpj": { - "english_name": "Karajá" - }, - "gqn": { - "english_name": "Guana (Brazil)" - }, - "aax": { - "english_name": "Mandobo Atas" - }, - "ddo": { - "english_name": "Dido" - }, - "owi": { - "english_name": "Owiniga" - }, - "kpq": { - "english_name": "Korupun-Sela" - }, - "bnu": { - "english_name": "Bentong" - }, - "slm": { - "english_name": "Sama, Pangutaran" - }, - "led": { - "english_name": "Lendu" - }, - "dcr": { - "english_name": "Negerhollands" - }, - "teb": { - "english_name": "Tetete" - }, - "xom": { - "english_name": "Komo (Sudan)" - }, - "coh": { - "english_name": "Chonyi-Dzihana-Kauma" - }, - "bie": { - "english_name": "Bepour" - }, - "tiq": { - "english_name": "Tiéfo" - }, - "bvk": { - "english_name": "Bukat" - }, - "cid": { - "english_name": "Chimariko" - }, - "pal": { - "english_name": "Pahlavi" - }, - "jab": { - "english_name": "Hyam" - }, - "twc": { - "english_name": "Teshenawa" - }, - "twr": { - "english_name": "Tarahumara, Southwestern" - }, - "sv": { - "english_name": "Swedish", - "name": "Svenska" - }, - "ljw": { - "english_name": "Yirandali" - }, - "tnu": { - "english_name": "Tay Khang" - }, - "uk": { - "english_name": "Ukrainian", - "name": "українська" - }, - "dba": { - "english_name": "Bangime" - }, - "kpi": { - "english_name": "Kofei" - }, - "xet": { - "english_name": "Xetá" - }, - "pty": { - "english_name": "Pathiya" - }, - "zal": { - "english_name": "Zauzou" - }, - "djn": { - "english_name": "Djauan" - }, - "ulb": { - "english_name": "Ulukwumi" - }, - "mgz": { - "english_name": "Mbugwe" - }, - "kee": { - "english_name": "Keres, Eastern" - }, - "gaq": { - "english_name": "Gata'" - }, - "ctc": { - "english_name": "Chetco" - }, - "sdr": { - "english_name": "Sadri, Oraon" - }, - "byl": { - "english_name": "Bayono" - }, - "kai": { - "english_name": "Karekare" - }, - "mnw": { - "english_name": "Mon" - }, - "lsm": { - "english_name": "Saamia" - }, - "wdu": { - "english_name": "Wadjigu" - }, - "tst": { - "english_name": "Songway Kiini, Tondi" - }, - "lwa": { - "english_name": "Lwalu" - }, - "loj": { - "english_name": "Lou" - }, - "lgg": { - "english_name": "Lugbara" - }, - "msq": { - "english_name": "Caac" - }, - "jay": { - "english_name": "Yan-nhangu" - }, - "arq": { - "english_name": "Arabic, Algerian" - }, - "urp": { - "english_name": "Uru-Pa-In" - }, - "mnc": { - "english_name": "Manchu" - }, - "tiw": { - "english_name": "Tiwi" - }, - "wav": { - "english_name": "Waka" - }, - "umm": { - "english_name": "Umon" - }, - "srq": { - "english_name": "Sirionó" - }, - "kul": { - "english_name": "Kulere" - }, - "hca": { - "english_name": "Creole Hindi, Andaman" - }, - "xha": { - "english_name": "Harami" - }, - "drt": { - "english_name": "Drents" - }, - "glk": { - "english_name": "Gilaki" - }, - "gba": { - "english_name": "Gbaya (Central African Republic)" - }, - "kgv": { - "english_name": "Karas" - }, - "kft": { - "english_name": "Kanjari" - }, - "chy": { - "english_name": "Cheyenne" - }, - "aua": { - "english_name": "Asumboa" - }, - "buq": { - "english_name": "Brem" - }, - "esn": { - "english_name": "Salvadoran Sign Language" - }, - "rob": { - "english_name": "Tae'" - }, - "gbe": { - "english_name": "Niksek" - }, - "aen": { - "english_name": "Armenian Sign Language" - }, - "olm": { - "english_name": "Oloma" - }, - "sco": { - "english_name": "Scots" - }, - "bum": { - "english_name": "Bulu (Cameroon)" - }, - "kue": { - "english_name": "Kuman" - }, - "pag": { - "english_name": "Pangasinan" - }, - "tiv": { - "english_name": "Tiv" - }, - "als": { - "english_name": "Albanian, Tosk" - }, - "tmo": { - "english_name": "Temoq" - }, - "ndq": { - "english_name": "Ndombe" - }, - "bya": { - "english_name": "Batak" - }, - "thl": { - "english_name": "Tharu, Dangaura" - }, - "oge": { - "english_name": "Georgian, Old" - }, - "cch": { - "english_name": "Atsam" - }, - "tin": { - "english_name": "Tindi" - }, - "shi": { - "english_name": "Tachelhit" - }, - "dhw": { - "english_name": "Dhanwar (Nepal)" - }, - "su": { - "english_name": "Sundanese" - }, - "nmd": { - "english_name": "Ndumu" - }, - "snh": { - "english_name": "Shinabo" - }, - "nrb": { - "english_name": "Nara" - }, - "ymz": { - "english_name": "Muzi" - }, - "zne": { - "english_name": "Zande (individual language)" - }, - "omw": { - "english_name": "Tairora, South" - }, - "bvb": { - "english_name": "Bube" - }, - "cpn": { - "english_name": "Cherepon" - }, - "lop": { - "english_name": "Lopa" - }, - "vwa": { - "english_name": "Awa (China)" - }, - "cqu": { - "english_name": "Quechua, Chilean" - }, - "jmx": { - "english_name": "Mixtec, Western Juxtlahuaca" - }, - "xxt": { - "english_name": "Tambora" - }, - "nea": { - "english_name": "Ngad'a, Eastern" - }, - "lik": { - "english_name": "Lika" - }, - "trx": { - "english_name": "Bidayuh, Tringgus-Sembaan" - }, - "kzg": { - "english_name": "Kikai" - }, - "jii": { - "english_name": "Jiiddu" - }, - "uhn": { - "english_name": "Damal" - }, - "mot": { - "english_name": "Barí" - }, - "gin": { - "english_name": "Hinukh" - }, - "otx": { - "english_name": "Otomi, Texcatepec" - }, - "shm": { - "english_name": "Shahrudi" - }, - "ncz": { - "english_name": "Natchez" - }, - "pkp": { - "english_name": "Pukapuka" - }, - "mxl": { - "english_name": "Gbe, Maxi" - }, - "juw": { - "english_name": "Wãpha" - }, - "id": { - "english_name": "Indonesian", - "name": "Indonesian" - }, - "skn": { - "english_name": "Subanon, Kolibugan" - }, - "wrk": { - "english_name": "Garrwa" - }, - "twd": { - "english_name": "Twents" - }, - "csv": { - "english_name": "Chin, Sumtu" - }, - "brs": { - "english_name": "Baras" - }, - "ptn": { - "english_name": "Patani" - }, - "tft": { - "english_name": "Ternate" - }, - "azj": { - "english_name": "Azerbaijani, North" - }, - "ekr": { - "english_name": "Yace" - }, - "nyy": { - "english_name": "Nyakyusa-Ngonde" - }, - "nes": { - "english_name": "Kinnauri, Bhoti" - }, - "wmt": { - "english_name": "Walmajarri" - }, - "hax": { - "english_name": "Haida, Southern" - }, - "sha": { - "english_name": "Shall-Zwall" - }, - "bij": { - "english_name": "Vaghat-Ya-Bijim-Legeri" - }, - "rif": { - "english_name": "Tarifit" - }, - "yaq": { - "english_name": "Yaqui" - }, - "sso": { - "english_name": "Sissano" - }, - "naq": { - "english_name": "Nama (Namibia)" - }, - "wbm": { - "english_name": "Wa" - }, - "srm": { - "english_name": "Saramaccan" - }, - "yha": { - "english_name": "Buyang, Baha" - }, - "mbi": { - "english_name": "Manobo, Ilianen" - }, - "zsu": { - "english_name": "Sukurum" - }, - "gcf": { - "english_name": "Creole French, Guadeloupean" - }, - "kpx": { - "english_name": "Koiali, Mountain" - }, - "nkw": { - "english_name": "Nkutu" - }, - "bty": { - "english_name": "Bobot" - }, - "kpy": { - "english_name": "Koryak" - }, - "tgr": { - "english_name": "Tareng" - }, - "pox": { - "english_name": "Polabian" - }, - "uam": { - "english_name": "Uamué" - }, - "lai": { - "english_name": "Lambya" - }, - "zpw": { - "english_name": "Zapotec, Zaniza" - }, - "ylu": { - "english_name": "Aribwaung" - }, - "mgd": { - "english_name": "Moru" - }, - "qve": { - "english_name": "Quechua, Eastern Apurímac" - }, - "bpd": { - "english_name": "Banda-Banda" - }, - "aem": { - "english_name": "Arem" - }, - "cjk": { - "english_name": "Chokwe" - }, - "tew": { - "english_name": "Tewa (USA)" - }, - "rmk": { - "english_name": "Romkun" - }, - "ont": { - "english_name": "Ontenu" - }, - "hmp": { - "english_name": "Hmong, Northern Mashan" - }, - "dav": { - "english_name": "Taita" - }, - "stb": { - "english_name": "Subanen, Northern" - }, - "tpf": { - "english_name": "Tarpia" - }, - "bxe": { - "english_name": "Birale" - }, - "srn": { - "english_name": "Sranan Tongo" - }, - "kbd": { - "english_name": "Kabardian" - }, - "lig": { - "english_name": "Ligbi" - }, - "sor": { - "english_name": "Somrai" - }, - "ndy": { - "english_name": "Lutos" - }, - "thv": { - "english_name": "Tamahaq, Tahaggart" - }, - "aji": { - "english_name": "Ajië" - }, - "wod": { - "english_name": "Wolani" - }, - "bwn": { - "english_name": "Bunu, Wunai" - }, - "blh": { - "english_name": "Kuwaa" - }, - "duc": { - "english_name": "Duna" - }, - "ki": { - "english_name": "Kikuyu" - }, - "baw": { - "english_name": "Bambili-Bambui" - }, - "nph": { - "english_name": "Naga, Phom" - }, - "krr": { - "english_name": "Kru'ng 2" - }, - "brd": { - "english_name": "Baraamu" - }, - "unm": { - "english_name": "Unami" - }, - "ff": { - "english_name": "Fulah" - }, - "jra": { - "english_name": "Jarai" - }, - "aca": { - "english_name": "Achagua" - }, - "top": { - "english_name": "Totonac, Papantla" - }, - "zu": { - "english_name": "Zulu", - "name": "Isi-Zulu" - }, - "ypb": { - "english_name": "Phowa, Labo" - }, - "oar": { - "english_name": "Aramaic, Old (up to 700 BCE)" - }, - "mdr": { - "english_name": "Mandar" - }, - "kim": { - "english_name": "Karagas" - }, - "sjd": { - "english_name": "Sami, Kildin" - }, - "gmm": { - "english_name": "Gbaya-Mbodomo" - }, - "tee": { - "english_name": "Tepehua, Huehuetla" - }, - "mcd": { - "english_name": "Sharanahua" - }, - "clm": { - "english_name": "Clallam" - }, - "spy": { - "english_name": "Sabaot" - }, - "url": { - "english_name": "Urali" - }, - "gax": { - "english_name": "Oromo, Borana-Arsi-Guji" - }, - "kqq": { - "english_name": "Krenak" - }, - "hio": { - "english_name": "Tsoa" - }, - "mfh": { - "english_name": "Matal" - }, - "and": { - "english_name": "Ansus" - }, - "nlz": { - "english_name": "Nalögo" - }, - "yno": { - "english_name": "Yong" - }, - "cnc": { - "english_name": "Côông" - }, - "puu": { - "english_name": "Punu" - }, - "lon": { - "english_name": "Lomwe, Malawi" - }, - "gum": { - "english_name": "Guambiano" - }, - "ynd": { - "english_name": "Yandruwandha" - }, - "wlo": { - "english_name": "Wolio" - }, - "kcv": { - "english_name": "Kete" - }, - "klc": { - "english_name": "Kolbila" - }, - "jur": { - "english_name": "Jurúna" - }, - "gds": { - "english_name": "Ghandruk Sign Language" - }, - "odk": { - "english_name": "Od" - }, - "spd": { - "english_name": "Saep" - }, - "mjm": { - "english_name": "Medebur" - }, - "pye": { - "english_name": "Krumen, Pye" - }, - "acm": { - "english_name": "Arabic, Mesopotamian" - }, - "tpl": { - "english_name": "Me'phaa, Tlacoapa" - }, - "hrz": { - "english_name": "Harzani" - }, - "txo": { - "english_name": "Toto" - }, - "lv": { - "english_name": "Latvian", - "name": "Latviešu" - }, - "ila": { - "english_name": "Ile Ape" - }, - "dml": { - "english_name": "Dameli" - }, - "acu": { - "english_name": "Achuar-Shiwiar" - }, - "ama": { - "english_name": "Amanayé" - }, - "etn": { - "english_name": "Eton (Vanuatu)" - }, - "bpv": { - "english_name": "Marind, Bian" - }, - "apj": { - "english_name": "Apache, Jicarilla" - }, - "ddi": { - "english_name": "Goodenough, West" - }, - "msi": { - "english_name": "Malay, Sabah" - }, - "kka": { - "english_name": "Kakanda" - }, - "aot": { - "english_name": "A'tong" - }, - "saz": { - "english_name": "Saurashtra" - }, - "kdn": { - "english_name": "Kunda" - }, - "uwa": { - "english_name": "Kuku-Uwanh" - }, - "mfw": { - "english_name": "Mulaha" - }, - "phn": { - "english_name": "Phoenician" - }, - "ktw": { - "english_name": "Kato" - }, - "dur": { - "english_name": "Dii" - }, - "kci": { - "english_name": "Kamantan" - }, - "xdm": { - "english_name": "Edomite" - }, - "akm": { - "english_name": "Aka-Bo" - }, - "bvi": { - "english_name": "Belanda Viri" - }, - "hrk": { - "english_name": "Haruku" - }, - "rnl": { - "english_name": "Ranglong" - }, - "mis": { - "english_name": "Uncoded languages" - }, - "mcx": { - "english_name": "Mpiemo" - }, - "bav": { - "english_name": "Vengo" - }, - "tdb": { - "english_name": "Panchpargania" - }, - "ugy": { - "english_name": "Uruguayan Sign Language" - }, - "aab": { - "english_name": "Alumu-Tesu" - }, - "dux": { - "english_name": "Duungooma" - }, - "mjk": { - "english_name": "Matukar" - }, - "aqc": { - "english_name": "Archi" - }, - "mpk": { - "english_name": "Mbara (Chad)" - }, - "rub": { - "english_name": "Gungu" - }, - "ghk": { - "english_name": "Karen, Geko" - }, - "duf": { - "english_name": "Dumbea" - }, - "mrj": { - "english_name": "Mari, Western" - }, - "bzv": { - "english_name": "Naami" - }, - "kip": { - "english_name": "Kham, Sheshi" - }, - "pih": { - "english_name": "Pitcairn-Norfolk" - }, - "jaa": { - "english_name": "Jamamadí" - }, - "agq": { - "english_name": "Aghem" - }, - "hra": { - "english_name": "Hrangkhol" - }, - "sed": { - "english_name": "Sedang" - }, - "wao": { - "english_name": "Wappo" - }, - "bqd": { - "english_name": "Bung" - }, - "abo": { - "english_name": "Abon" - }, - "rgr": { - "english_name": "Resígaro" - }, - "xok": { - "english_name": "Xokleng" - }, - "skz": { - "english_name": "Sekar" - }, - "lkb": { - "english_name": "Kabras" - }, - "sml": { - "english_name": "Sama, Central" - }, - "slc": { - "english_name": "Sáliba" - }, - "xbd": { - "english_name": "Bindal" - }, - "ynq": { - "english_name": "Yendang" - }, - "tyh": { - "english_name": "O'du" - }, - "nom": { - "english_name": "Nocamán" - }, - "knb": { - "english_name": "Kalinga, Lubuagan" - }, - "tds": { - "english_name": "Doutai" - }, - "ymc": { - "english_name": "Muji, Southern" - }, - "mcs": { - "english_name": "Mambai" - }, - "wss": { - "english_name": "Wasa" - }, - "rmw": { - "english_name": "Romani, Welsh" - }, - "gft": { - "english_name": "Gafat" - }, - "tvt": { - "english_name": "Naga, Tutsa" - }, - "apg": { - "english_name": "Ampanang" - }, - "taw": { - "english_name": "Tai" - }, - "so": { - "english_name": "Somali" - }, - "tr": { - "english_name": "Turkish", - "name": "Türkçe" - }, - "nok": { - "english_name": "Nooksack" - }, - "wih": { - "english_name": "Wik-Me'anha" - }, - "kog": { - "english_name": "Cogui" - }, - "mji": { - "english_name": "Kim Mun" - }, - "kmg": { - "english_name": "Kâte" - }, - "bck": { - "english_name": "Bunaba" - }, - "rmn": { - "english_name": "Romani, Balkan" - }, - "sgg": { - "english_name": "Swiss-German Sign Language" - }, - "sbp": { - "english_name": "Sangu (Tanzania)" - }, - "yum": { - "english_name": "Quechan" - }, - "bjo": { - "english_name": "Banda, Mid-Southern" - }, - "jid": { - "english_name": "Bu" - }, - "apo": { - "english_name": "Ambul" - }, - "kyl": { - "english_name": "Kalapuya" - }, - "omr": { - "english_name": "Marathi, Old" - }, - "bsx": { - "english_name": "Yangkam" - }, - "lni": { - "english_name": "Daantanai'" - }, - "kqp": { - "english_name": "Kimré" - }, - "sua": { - "english_name": "Sulka" - }, - "mbp": { - "english_name": "Malayo" - }, - "tsi": { - "english_name": "Tsimshian" - }, - "klq": { - "english_name": "Rumu" - }, - "eaa": { - "english_name": "Karenggapa" - }, - "xhd": { - "english_name": "Hadrami" - }, - "kcm": { - "english_name": "Gula (Central African Republic)" - }, - "ago": { - "english_name": "Tainae" - }, - "lus": { - "english_name": "Lushai" - }, - "xtv": { - "english_name": "Thawa" - }, - "saj": { - "english_name": "Sahu" - }, - "all": { - "english_name": "Allar" - }, - "tqn": { - "english_name": "Tenino" - }, - "hac": { - "english_name": "Gurani" - }, - "tay": { - "english_name": "Atayal" - }, - "zaf": { - "english_name": "Zapotec, Ayoquesco" - }, - "llb": { - "english_name": "Lolo" - }, - "aut": { - "english_name": "Austral" - }, - "ngx": { - "english_name": "Nggwahyi" - }, - "emb": { - "english_name": "Embaloh" - }, - "ksd": { - "english_name": "Kuanua" - }, - "ppm": { - "english_name": "Papuma" - }, - "akk": { - "english_name": "Akkadian" - }, - "pxm": { - "english_name": "Mixe, Quetzaltepec" - }, - "tbi": { - "english_name": "Gaam" - }, - "adw": { - "english_name": "Amundava" - }, - "smw": { - "english_name": "Sumbawa" - }, - "pry": { - "english_name": "Pray 3" - }, - "nxn": { - "english_name": "Ngawun" - }, - "udu": { - "english_name": "Uduk" - }, - "bca": { - "english_name": "Bai, Central" - }, - "ktl": { - "english_name": "Koroshi" - }, - "mic": { - "english_name": "Mi'kmaq" - }, - "djw": { - "english_name": "Djawi" - }, - "pwm": { - "english_name": "Molbog" - }, - "spv": { - "english_name": "Sambalpuri" - }, - "chx": { - "english_name": "Chantyal" - }, - "cog": { - "english_name": "Chong" - }, - "mzd": { - "english_name": "Malimba" - }, - "hsh": { - "english_name": "Hungarian Sign Language" - }, - "myk": { - "english_name": "Senoufo, Mamara" - }, - "vig": { - "english_name": "Viemo" - }, - "hub": { - "english_name": "Huambisa" - }, - "lln": { - "english_name": "Lele (Chad)" - }, - "fuu": { - "english_name": "Furu" - }, - "zkp": { - "english_name": "Kaingáng, São Paulo" - }, - "mci": { - "english_name": "Mese" - }, - "bmi": { - "english_name": "Bagirmi" - }, - "dov": { - "english_name": "Dombe" - }, - "kih": { - "english_name": "Kilmeri" - }, - "cyb": { - "english_name": "Cayubaba" - }, - "ney": { - "english_name": "Neyo" - }, - "sav": { - "english_name": "Saafi-Saafi" - }, - "zay": { - "english_name": "Zayse-Zergulla" - }, - "kdt": { - "english_name": "Kuy" - }, - "isi": { - "english_name": "Nkem-Nkum" - }, - "mtu": { - "english_name": "Mixtec, Tututepec" - }, - "ywu": { - "english_name": "Nasu, Wumeng" - }, - "nmo": { - "english_name": "Naga, Moyon" - }, - "fax": { - "english_name": "Fala" - }, - "yvt": { - "english_name": "Yavitero" - }, - "wax": { - "english_name": "Watam" - }, - "goe": { - "english_name": "Gongduk" - }, - "jun": { - "english_name": "Juang" - }, - "jam": { - "english_name": "Creole English, Jamaican" - }, - "bno": { - "english_name": "Bantoanon" - }, - "yip": { - "english_name": "Pholo" - }, - "otq": { - "english_name": "Otomi, Querétaro" - }, - "nms": { - "english_name": "Letemboi" - }, - "soz": { - "english_name": "Temi" - }, - "klk": { - "english_name": "Kono (Nigeria)" - }, - "neh": { - "english_name": "Nyenkha" - }, - "mqk": { - "english_name": "Manobo, Rajah Kabunsuwan" - }, - "prw": { - "english_name": "Parawen" - }, - "kma": { - "english_name": "Konni" - }, - "xsv": { - "english_name": "Sudovian" - }, - "mwt": { - "english_name": "Moken" - }, - "ayb": { - "english_name": "Gbe, Ayizo" - }, - "ulu": { - "english_name": "Uma' Lung" - }, - "uzs": { - "english_name": "Uzbek, Southern" - }, - "ail": { - "english_name": "Aimele" - }, - "xyt": { - "english_name": "Mayi-Thakurti" - }, - "yut": { - "english_name": "Yopno" - }, - "bwj": { - "english_name": "Bwamu, Láá Láá" - }, - "jal": { - "english_name": "Yalahatan" - }, - "trb": { - "english_name": "Terebu" - }, - "oj": { - "english_name": "Ojibwa" - }, - "yuj": { - "english_name": "Karkar-Yuri" - }, - "vic": { - "english_name": "Creole English, Virgin Islands" - }, - "ign": { - "english_name": "Ignaciano" - }, - "ksz": { - "english_name": "Kodaku" - }, - "kmr": { - "english_name": "Kurdish, Northern" - }, - "bsb": { - "english_name": "Bisaya, Brunei" - }, - "lot": { - "english_name": "Otuho" - }, - "chp": { - "english_name": "Chipewyan" - }, - "mps": { - "english_name": "Dadibi" - }, - "kkx": { - "english_name": "Kohin" - }, - "icr": { - "english_name": "Creole English, Islander" - }, - "bzq": { - "english_name": "Buli (Indonesia)" - }, - "dnk": { - "english_name": "Dengka" - }, - "nxq": { - "english_name": "Naxi" - }, - "ttf": { - "english_name": "Tuotomb" - }, - "dad": { - "english_name": "Marik" - }, - "mqp": { - "english_name": "Manipa" - }, - "zpe": { - "english_name": "Zapotec, Petapa" - }, - "myz": { - "english_name": "Mandaic, Classical" - }, - "ypg": { - "english_name": "Phola" - }, - "emm": { - "english_name": "Mamulique" - }, - "hur": { - "english_name": "Halkomelem" - }, - "gly": { - "english_name": "Gule" - }, - "pnr": { - "english_name": "Panim" - }, - "cnk": { - "english_name": "Chin, Khumi" - }, - "kmd": { - "english_name": "Kalinga, Majukayang" - }, - "alu": { - "english_name": "'Are'are" - }, - "brj": { - "english_name": "Bieria" - }, - "kjm": { - "english_name": "Kháng" - }, - "crj": { - "english_name": "Cree, Southern East" - }, - "jmr": { - "english_name": "Kamara" - }, - "msl": { - "english_name": "Molof" - }, - "sda": { - "english_name": "Toraja-Sa'dan" - }, - "wlc": { - "english_name": "Comorian, Mwali" - }, - "rsb": { - "english_name": "Romano-Serbian" - }, - "cim": { - "english_name": "Cimbrian" - }, - "xmu": { - "english_name": "Kamu" - }, - "mdh": { - "english_name": "Maguindanaon" - }, - "hod": { - "english_name": "Holma" - }, - "mtf": { - "english_name": "Murik (Papua New Guinea)" - }, - "szd": { - "english_name": "Seru" - }, - "bww": { - "english_name": "Bwa" - }, - "arw": { - "english_name": "Arawak" - }, - "tdh": { - "english_name": "Thulung" - }, - "dgk": { - "english_name": "Dagba" - }, - "xnh": { - "english_name": "Kuanhua" - }, - "ppi": { - "english_name": "Paipai" - }, - "kxy": { - "english_name": "Kayong" - }, - "io": { - "english_name": "Ido" - }, - "xgd": { - "english_name": "Gudang" - }, - "bau": { - "english_name": "Bada (Nigeria)" - }, - "sdb": { - "english_name": "Shabak" - }, - "lcq": { - "english_name": "Luhu" - }, - "otu": { - "english_name": "Otuke" - }, - "mjc": { - "english_name": "Mixtec, San Juan Colorado" - }, - "kdq": { - "english_name": "Koch" - }, - "pat": { - "english_name": "Papitalai" - }, - "abr": { - "english_name": "Abron" - }, - "ili": { - "english_name": "Ili Turki" - }, - "nnn": { - "english_name": "Ngete" - }, - "khw": { - "english_name": "Khowar" - }, - "vml": { - "english_name": "Malgana" - }, - "gal": { - "english_name": "Galolen" - }, - "auz": { - "english_name": "Arabic, Uzbeki" - }, - "jaj": { - "english_name": "Zazao" - }, - "onw": { - "english_name": "Nubian, Old" - }, - "bvc": { - "english_name": "Baelelea" - }, - "sov": { - "english_name": "Sonsorol" - }, - "zun": { - "english_name": "Zuni" - }, - "qxn": { - "english_name": "Quechua, Northern Conchucos Ancash" - }, - "ghs": { - "english_name": "Guhu-Samane" - }, - "uma": { - "english_name": "Umatilla" - }, - "crm": { - "english_name": "Cree, Moose" - }, - "wsu": { - "english_name": "Wasu" - }, - "cv": { - "english_name": "Chuvash" - }, - "kdj": { - "english_name": "Karamojong" - }, - "auc": { - "english_name": "Waorani" - }, - "ysn": { - "english_name": "Sani" - }, - "avu": { - "english_name": "Avokaya" - }, - "muh": { - "english_name": "Mündü" - }, - "sek": { - "english_name": "Sekani" - }, - "fam": { - "english_name": "Fam" - }, - "aie": { - "english_name": "Amara" - }, - "xgf": { - "english_name": "Gabrielino-Fernandeño" - }, - "ymn": { - "english_name": "Yamna" - }, - "mhs": { - "english_name": "Buru (Indonesia)" - }, - "xgb": { - "english_name": "Gbin" - }, - "hug": { - "english_name": "Huachipaeri" - }, - "tbr": { - "english_name": "Tumtum" - }, - "yan": { - "english_name": "Mayangna" - }, - "pnl": { - "english_name": "Paleni" - }, - "yli": { - "english_name": "Yali, Angguruk" - }, - "ity": { - "english_name": "Itneg, Moyadan" - }, - "kmh": { - "english_name": "Kalam" - }, - "sgk": { - "english_name": "Sangkong" - }, - "inl": { - "english_name": "Indonesian Sign Language" - }, - "bwu": { - "english_name": "Buli (Ghana)" - }, - "ame": { - "english_name": "Yanesha'" - }, - "bmq": { - "english_name": "Bomu" - }, - "laq": { - "english_name": "Qabiao" - }, - "soe": { - "english_name": "Songomeno" - }, - "alh": { - "english_name": "Alawa" - }, - "bal": { - "english_name": "Baluchi" - }, - "noy": { - "english_name": "Noy" - }, - "wya": { - "english_name": "Wyandot" - }, - "grq": { - "english_name": "Gorovu" - }, - "rol": { - "english_name": "Romblomanon" - }, - "env": { - "english_name": "Enwan (Edu State)" - }, - "vkt": { - "english_name": "Malay, Tenggarong Kutai" - }, - "xrm": { - "english_name": "Armazic" - }, - "kfn": { - "english_name": "Kuk" - }, - "mcp": { - "english_name": "Makaa" - }, - "hea": { - "english_name": "Miao, Northern Qiandong" - }, - "yna": { - "english_name": "Aluo" - }, - "tmm": { - "english_name": "Tai Thanh" - }, - "ifb": { - "english_name": "Ifugao, Batad" - }, - "czk": { - "english_name": "Knaanic" - }, - "hdn": { - "english_name": "Haida, Northern" - }, - "emi": { - "english_name": "Mussau-Emira" - }, - "cbs": { - "english_name": "Cashinahua" - }, - "lme": { - "english_name": "Pévé" - }, - "xbn": { - "english_name": "Kenaboi" - }, - "gnr": { - "english_name": "Gureng Gureng" - }, - "amn": { - "english_name": "Amanab" - }, - "nhb": { - "english_name": "Beng" - }, - "aro": { - "english_name": "Araona" - }, - "tgf": { - "english_name": "Chalikha" - }, - "huf": { - "english_name": "Humene" - }, - "kyo": { - "english_name": "Kelon" - }, - "nmj": { - "english_name": "Ngombe (Central African Republic)" - }, - "hke": { - "english_name": "Hunde" - }, - "swc": { - "english_name": "Swahili, Congo" - }, - "idt": { - "english_name": "Idaté" - }, - "ttl": { - "english_name": "Totela" - }, - "mdt": { - "english_name": "Mbere" - }, - "add": { - "english_name": "Dzodinka" - }, - "twf": { - "english_name": "Tiwa, Northern" - }, - "wah": { - "english_name": "Watubela" - }, - "tci": { - "english_name": "Wára" - }, - "dao": { - "english_name": "Chin, Daai" - }, - "blf": { - "english_name": "Buol" - }, - "cdn": { - "english_name": "Chaudangsi" - }, - "ppk": { - "english_name": "Uma" - }, - "mvf": { - "english_name": "Mongolian, Peripheral" - }, - "mla": { - "english_name": "Malo" - }, - "lwu": { - "english_name": "Lawu" - }, - "aza": { - "english_name": "Azha" - }, - "dgl": { - "english_name": "Andaandi" - }, - "kly": { - "english_name": "Kalao" - }, - "mxk": { - "english_name": "Monumbo" - }, - "nuy": { - "english_name": "Nunggubuyu" - }, - "tnr": { - "english_name": "Ménik" - }, - "pmw": { - "english_name": "Miwok, Plains" - }, - "lmy": { - "english_name": "Lamboya" - }, - "ps": { - "english_name": "Pushto", - "name": "Pushto" - }, - "tjn": { - "english_name": "Tonjon" - }, - "pps": { - "english_name": "Popoloca, San Luís Temalacayuca" - }, - "slj": { - "english_name": "Salumá" - }, - "xkj": { - "english_name": "Kajali" - }, - "aun": { - "english_name": "One, Molmo" - }, - "coa": { - "english_name": "Malay, Cocos Islands" - }, - "cjo": { - "english_name": "Ashéninka Pajonal" - }, - "anc": { - "english_name": "Ngas" - }, - "lnl": { - "english_name": "Banda, South Central" - }, - "ans": { - "english_name": "Anserma" - }, - "wer": { - "english_name": "Weri" - }, - "low": { - "english_name": "Lobu, Tampias" - }, - "prr": { - "english_name": "Puri" - }, - "mgf": { - "english_name": "Maklew" - }, - "xmm": { - "english_name": "Malay, Manado" - }, - "mgh": { - "english_name": "Makhuwa-Meetto" - }, - "rhg": { - "english_name": "Rohingya" - }, - "esi": { - "english_name": "Inupiatun, North Alaskan" - }, - "spx": { - "english_name": "Picene, South" - }, - "nbh": { - "english_name": "Ngamo" - }, - "tll": { - "english_name": "Tetela" - }, - "blt": { - "english_name": "Tai Dam" - }, - "ccg": { - "english_name": "Daka, Samba" - }, - "bvg": { - "english_name": "Bonkeng" - }, - "mux": { - "english_name": "Bo-Ung" - }, - "xht": { - "english_name": "Hattic" - }, - "nmt": { - "english_name": "Namonuito" - }, - "bnq": { - "english_name": "Bantik" - }, - "tpz": { - "english_name": "Tinputz" - }, - "xog": { - "english_name": "Soga" - }, - "stl": { - "english_name": "Stellingwerfs" - }, - "mhb": { - "english_name": "Mahongwe" - }, - "nbc": { - "english_name": "Naga, Chang" - }, - "eve": { - "english_name": "Even" - }, - "ttb": { - "english_name": "Gaa" - }, - "jbn": { - "english_name": "Nafusi" - }, - "lu": { - "english_name": "Luba-Katanga" - }, - "jim": { - "english_name": "Jimi (Cameroon)" - }, - "wma": { - "english_name": "Mawa (Nigeria)" - }, - "akz": { - "english_name": "Alabama" - }, - "haw": { - "english_name": "Hawaiian" - }, - "cuc": { - "english_name": "Chinantec, Usila" - }, - "keu": { - "english_name": "Akebu" - }, - "kno": { - "english_name": "Kono (Sierra Leone)" - }, - "krh": { - "english_name": "Kurama" - }, - "mqh": { - "english_name": "Mixtec, Tlazoyaltepec" - }, - "vum": { - "english_name": "Vumbu" - }, - "eka": { - "english_name": "Ekajuk" - }, - "sut": { - "english_name": "Subtiaba" - }, - "nie": { - "english_name": "Niellim" - }, - "wap": { - "english_name": "Wapishana" - }, - "kay": { - "english_name": "Kamayurá" - }, - "vmx": { - "english_name": "Mixtec, Tamazola" - }, - "log": { - "english_name": "Logo" - }, - "otw": { - "english_name": "Ottawa" - }, - "kyh": { - "english_name": "Karok" - }, - "wmn": { - "english_name": "Waamwang" - }, - "mna": { - "english_name": "Mbula" - }, - "ayu": { - "english_name": "Ayu" - }, - "woe": { - "english_name": "Woleaian" - }, - "mfa": { - "english_name": "Malay, Pattani" - }, - "oni": { - "english_name": "Onin" - }, - "sks": { - "english_name": "Maia" - }, - "ktg": { - "english_name": "Kalkutung" - }, - "koe": { - "english_name": "Kacipo-Balesi" - }, - "urg": { - "english_name": "Urigina" - }, - "ayl": { - "english_name": "Arabic, Libyan" - }, - "tk": { - "english_name": "Turkmen" - }, - "zko": { - "english_name": "Kott" - }, - "kui": { - "english_name": "Kuikúro-Kalapálo" - }, - "bhj": { - "english_name": "Bahing" - }, - "smq": { - "english_name": "Samo" - }, - "cht": { - "english_name": "Cholón" - }, - "lga": { - "english_name": "Lungga" - }, - "rey": { - "english_name": "Reyesano" - }, - "poq": { - "english_name": "Popoluca, Texistepec" - }, - "yiz": { - "english_name": "Azhe" - }, - "xli": { - "english_name": "Liburnian" - }, - "azo": { - "english_name": "Awing" - }, - "faa": { - "english_name": "Fasu" - }, - "cr": { - "english_name": "Cree" - }, - "gar": { - "english_name": "Galeya" - }, - "hui": { - "english_name": "Huli" - }, - "zxx": { - "english_name": "No linguistic content" - }, - "xzm": { - "english_name": "Zemgalian" - }, - "bpa": { - "english_name": "Daakaka" - }, - "mls": { - "english_name": "Masalit" - }, - "dyi": { - "english_name": "Senoufo, Djimini" - }, - "ttm": { - "english_name": "Tutchone, Northern" - }, - "tpx": { - "english_name": "Me'phaa, Acatepec" - }, - "ife": { - "english_name": "Ifè" - }, - "sw": { - "english_name": "Swahili (macrolanguage)" - }, - "bnz": { - "english_name": "Beezen" - }, - "idb": { - "english_name": "Indo-Portuguese" - }, - "kic": { - "english_name": "Kickapoo" - }, - "lgb": { - "english_name": "Laghu" - }, - "lfn": { - "english_name": "Lingua Franca Nova" - }, - "dhu": { - "english_name": "Dhurga" - }, - "kfv": { - "english_name": "Kurmukar" - }, - "sao": { - "english_name": "Sause" - }, - "qvc": { - "english_name": "Quechua, Cajamarca" - }, - "psg": { - "english_name": "Penang Sign Language" - }, - "pis": { - "english_name": "Pijin" - }, - "tnl": { - "english_name": "Lenakel" - }, - "wij": { - "english_name": "Wik-Iiyanh" - }, - "pbu": { - "english_name": "Pashto, Northern" - }, - "buh": { - "english_name": "Bunu, Younuo" - }, - "bow": { - "english_name": "Rema" - }, - "xii": { - "english_name": "Xiri" - }, - "awc": { - "english_name": "Cicipu" - }, - "ssq": { - "english_name": "So'a" - }, - "gna": { - "english_name": "Kaansa" - }, - "lmj": { - "english_name": "Lembata, West" - }, - "tdc": { - "english_name": "Emberá-Tadó" - }, - "knc": { - "english_name": "Kanuri, Central" - }, - "naj": { - "english_name": "Nalu" - }, - "xsh": { - "english_name": "Shamang" - }, - "mvz": { - "english_name": "Mesqan" - }, - "fud": { - "english_name": "Futuna, East" - }, - "mdq": { - "english_name": "Mbole" - }, - "ssy": { - "english_name": "Saho" - }, - "ona": { - "english_name": "Ona" - }, - "acy": { - "english_name": "Arabic, Cypriot" - }, - "sya": { - "english_name": "Siang" - }, - "dmv": { - "english_name": "Dumpas" - }, - "nfd": { - "english_name": "Ahwai" - }, - "ibd": { - "english_name": "Iwaidja" - }, - "vmj": { - "english_name": "Mixtec, Ixtayutla" - }, - "gka": { - "english_name": "Guya" - }, - "wrm": { - "english_name": "Warumungu" - }, - "lkj": { - "english_name": "Remun" - }, - "doa": { - "english_name": "Dom" - }, - "umg": { - "english_name": "Umbuygamu" - }, - "pot": { - "english_name": "Potawatomi" - }, - "gro": { - "english_name": "Groma" - }, - "sak": { - "english_name": "Sake" - }, - "awx": { - "english_name": "Awara" - }, - "beg": { - "english_name": "Belait" - }, - "cia": { - "english_name": "Cia-Cia" - }, - "kvl": { - "english_name": "Kayaw" - }, - "qvw": { - "english_name": "Quechua, Huaylla Wanca" - }, - "lrc": { - "english_name": "Luri, Northern" - }, - "sto": { - "english_name": "Stoney" - }, - "bgo": { - "english_name": "Baga Koga" - }, - "oor": { - "english_name": "Oorlams" - }, - "bug": { - "english_name": "Buginese" - }, - "zkr": { - "english_name": "Zakhring" - }, - "bmp": { - "english_name": "Bulgebi" - }, - "lrk": { - "english_name": "Loarki" - }, - "aaf": { - "english_name": "Aranadan" - }, - "atj": { - "english_name": "Atikamekw" - }, - "ylg": { - "english_name": "Yelogu" - }, - "ulc": { - "english_name": "Ulch" - }, - "ro": { - "english_name": "Romanian", - "name": "Română" - }, - "kiy": { - "english_name": "Kirikiri" - }, - "puk": { - "english_name": "Pu Ko" - }, - "grd": { - "english_name": "Guruntum-Mbaaru" - }, - "mmj": { - "english_name": "Majhwar" - }, - "brx": { - "english_name": "Bodo (India)" - }, - "dtu": { - "english_name": "Dogon, Tebul Ure" - }, - "mlj": { - "english_name": "Miltu" - }, - "enu": { - "english_name": "Enu" - }, - "ksy": { - "english_name": "Kharia Thar" - }, - "lji": { - "english_name": "Laiyolo" - }, - "cdr": { - "english_name": "Cinda-Regi-Tiyal" - }, - "nwb": { - "english_name": "Nyabwa" - }, - "kmq": { - "english_name": "Kwama" - }, - "gd": { - "english_name": "Gaelic, Scottish" - }, - "djc": { - "english_name": "Daju, Dar Daju" - }, - "srv": { - "english_name": "Sorsoganon, Southern" - }, - "bsa": { - "english_name": "Abinomn" - }, - "ncc": { - "english_name": "Ponam" - }, - "lic": { - "english_name": "Hlai" - }, - "bla": { - "english_name": "Siksika" - }, - "tks": { - "english_name": "Takestani" - }, - "hib": { - "english_name": "Hibito" - }, - "nkd": { - "english_name": "Koireng" - }, - "bze": { - "english_name": "Bozo, Jenaama" - }, - "kpu": { - "english_name": "Kafoa" - }, - "mdy": { - "english_name": "Male (Ethiopia)" - }, - "qxc": { - "english_name": "Quechua, Chincha" - }, - "prz": { - "english_name": "Providencia Sign Language" - }, - "zyb": { - "english_name": "Zhuang, Yongbei" - }, - "ayq": { - "english_name": "Ayi (Papua New Guinea)" - }, - "cox": { - "english_name": "Nanti" - }, - "kub": { - "english_name": "Kutep" - }, - "blq": { - "english_name": "Baluan-Pam" - }, - "mlf": { - "english_name": "Mal" - }, - "wny": { - "english_name": "Wanyi" - }, - "vot": { - "english_name": "Votic" - }, - "kwf": { - "english_name": "Kwara'ae" - }, - "anu": { - "english_name": "Anuak" - }, - "mmg": { - "english_name": "Ambrym, North" - }, - "skp": { - "english_name": "Sekapan" - }, - "hma": { - "english_name": "Hmong, Southern Mashan" - }, - "nxk": { - "english_name": "Naga, Koki" - }, - "xan": { - "english_name": "Xamtanga" - }, - "agi": { - "english_name": "Agariya" - }, - "clj": { - "english_name": "Chin, Laitu" - }, - "gui": { - "english_name": "Guaraní, Eastern Bolivian" - }, - "wua": { - "english_name": "Wikngenchera" - }, - "hy": { - "english_name": "Armenian" - }, - "adb": { - "english_name": "Adabe" - }, - "rbk": { - "english_name": "Bontok, Northern" - }, - "snf": { - "english_name": "Noon" - }, - "prb": { - "english_name": "Lua'" - }, - "awg": { - "english_name": "Anguthimri" - }, - "kca": { - "english_name": "Khanty" - }, - "ajw": { - "english_name": "Ajawa" - }, - "nci": { - "english_name": "Nahuatl, Classical" - }, - "gdx": { - "english_name": "Godwari" - }, - "fau": { - "english_name": "Fayu" - }, - "wgg": { - "english_name": "Wangganguru" - }, - "whk": { - "english_name": "Kenyah, Wahau" - }, - "smt": { - "english_name": "Simte" - }, - "sgz": { - "english_name": "Sursurunga" - }, - "cly": { - "english_name": "Chatino, Eastern Highland" - }, - "agy": { - "english_name": "Alta, Southern" - }, - "mir": { - "english_name": "Mixe, Isthmus" - }, - "gsm": { - "english_name": "Guatemalan Sign Language" - }, - "egl": { - "english_name": "Emilian" - }, - "awh": { - "english_name": "Awbono" - }, - "xeb": { - "english_name": "Eblan" - }, - "wab": { - "english_name": "Wab" - }, - "aoz": { - "english_name": "Uab Meto" - }, - "apv": { - "english_name": "Alapmunte" - }, - "nte": { - "english_name": "Nathembo" - }, - "tea": { - "english_name": "Temiar" - }, - "caj": { - "english_name": "Chané" - }, - "abs": { - "english_name": "Malay, Ambonese" - }, - "kyv": { - "english_name": "Kayort" - }, - "gvn": { - "english_name": "Kuku-Yalanji" - }, - "nkc": { - "english_name": "Nkongho" - }, - "doq": { - "english_name": "Dominican Sign Language" - }, - "lev": { - "english_name": "Lamma" - }, - "css": { - "english_name": "Ohlone, Southern" - }, - "luv": { - "english_name": "Luwati" - }, - "nme": { - "english_name": "Naga, Mzieme" - }, - "sij": { - "english_name": "Numbami" - }, - "wca": { - "english_name": "Yanomámi" - }, - "lgi": { - "english_name": "Lengilu" - }, - "xcl": { - "english_name": "Armenian, Classical" - }, - "tvd": { - "english_name": "Tsuvadi" - }, - "hix": { - "english_name": "Hixkaryána" - }, - "alj": { - "english_name": "Alangan" - }, - "tmz": { - "english_name": "Tamanaku" - }, - "lmz": { - "english_name": "Lumbee" - }, - "lst": { - "english_name": "Trinidad and Tobago Sign Language" - }, - "ypz": { - "english_name": "Phuza" - }, - "kuu": { - "english_name": "Kuskokwim, Upper" - }, - "cuq": { - "english_name": "Cun" - }, - "tev": { - "english_name": "Teor" - }, - "nyc": { - "english_name": "Nyanga-li" - }, - "bqy": { - "english_name": "Bengkala Sign Language" - }, - "cbh": { - "english_name": "Cagua" - }, - "psn": { - "english_name": "Panasuan" - }, - "clc": { - "english_name": "Chilcotin" - }, - "cts": { - "english_name": "Bikol, Northern Catanduanes" - }, - "shk": { - "english_name": "Shilluk" - }, - "anf": { - "english_name": "Animere" - }, - "cky": { - "english_name": "Cakfem-Mushere" - }, - "ngd": { - "english_name": "Ngando (Central African Republic)" - }, - "gve": { - "english_name": "Duwet" - }, - "bvw": { - "english_name": "Boga" - }, - "tbo": { - "english_name": "Tawala" - }, - "sol": { - "english_name": "Solos" - }, - "van": { - "english_name": "Valman" - }, - "ekl": { - "english_name": "Kol (Bangladesh)" - }, - "cdo": { - "english_name": "Chinese, Min Dong" - }, - "nbk": { - "english_name": "Nake" - }, - "cuu": { - "english_name": "Tai Ya" - }, - "tox": { - "english_name": "Tobian" - }, - "bjl": { - "english_name": "Bulu (Papua New Guinea)" - }, - "byi": { - "english_name": "Buyu" - }, - "std": { - "english_name": "Sentinel" - }, - "can": { - "english_name": "Chambri" - }, - "amw": { - "english_name": "Neo-Aramaic, Western" - }, - "my": { - "english_name": "Burmese" - }, - "kgw": { - "english_name": "Karon Dori" - }, - "akj": { - "english_name": "Aka-Jeru" - }, - "arv": { - "english_name": "Arbore" - }, - "ctm": { - "english_name": "Chitimacha" - }, - "quz": { - "english_name": "Quechua, Cusco" - }, - "pib": { - "english_name": "Yine" - }, - "tmj": { - "english_name": "Samarokena" - }, - "sqs": { - "english_name": "Sri Lankan Sign Language" - }, - "gcn": { - "english_name": "Gaina" - }, - "bzg": { - "english_name": "Babuza" - }, - "crx": { - "english_name": "Carrier" - }, - "muj": { - "english_name": "Mabire" - }, - "spo": { - "english_name": "Spokane" - }, - "sqn": { - "english_name": "Susquehannock" - }, - "sdt": { - "english_name": "Shuadit" - }, - "dgd": { - "english_name": "Dagaari Dioula" - }, - "irx": { - "english_name": "Kamberau" - }, - "uuu": { - "english_name": "U" - }, - "kwc": { - "english_name": "Likwala" - }, - "aik": { - "english_name": "Ake" - }, - "mnl": { - "english_name": "Tiale" - }, - "nbu": { - "english_name": "Naga, Rongmei" - }, - "gey": { - "english_name": "Enya" - }, - "nda": { - "english_name": "Ndasa" - }, - "kjj": { - "english_name": "Khinalugh" - }, - "kwm": { - "english_name": "Kwambi" - }, - "aic": { - "english_name": "Ainbai" - }, - "wkl": { - "english_name": "Kalanadi" - }, - "cmt": { - "english_name": "Camtho" - }, - "tre": { - "english_name": "Tarangan, East" - }, - "ctz": { - "english_name": "Chatino, Zacatepec" - }, - "krk": { - "english_name": "Kerek" - }, - "xon": { - "english_name": "Konkomba" - }, - "mzm": { - "english_name": "Mumuye" - }, - "agf": { - "english_name": "Arguni" - }, - "bzs": { - "english_name": "Brazilian Sign Language" - }, - "xqa": { - "english_name": "Karakhanid" - }, - "zra": { - "english_name": "Kara (Korea)" - }, - "agj": { - "english_name": "Argobba" - }, - "mss": { - "english_name": "Masela, West" - }, - "sob": { - "english_name": "Sobei" - }, - "xmp": { - "english_name": "Kuku-Mu'inh" - }, - "bbg": { - "english_name": "Barama" - }, - "erk": { - "english_name": "Efate, South" - }, - "bzp": { - "english_name": "Kemberano" - }, - "kzk": { - "english_name": "Kazukuru" - }, - "nad": { - "english_name": "Nijadali" - }, - "nmi": { - "english_name": "Nyam" - }, - "fad": { - "english_name": "Wagi" - }, - "dts": { - "english_name": "Dogon, Toro So" - }, - "mas": { - "english_name": "Masai" - }, - "clh": { - "english_name": "Chilisso" - }, - "huh": { - "english_name": "Huilliche" - }, - "xtd": { - "english_name": "Mixtec, Diuxi-Tilantongo" - }, - "doy": { - "english_name": "Dompo" - }, - "bfo": { - "english_name": "Birifor, Malba" - }, - "xww": { - "english_name": "Wemba Wemba" - }, - "aga": { - "english_name": "Aguano" - }, - "jrr": { - "english_name": "Jiru" - }, - "zuh": { - "english_name": "Tokano" - }, - "bsy": { - "english_name": "Bisaya, Sabah" - }, - "dmg": { - "english_name": "Kinabatangan, Upper" - }, - "bet": { - "english_name": "Béte, Guiberoua" - }, - "sgu": { - "english_name": "Salas" - }, - "afd": { - "english_name": "Andai" - }, - "shw": { - "english_name": "Shwai" - }, - "xmd": { - "english_name": "Mbudum" - }, - "rpn": { - "english_name": "Repanbitip" - }, - "nkg": { - "english_name": "Nekgini" - }, - "ayd": { - "english_name": "Ayabadhu" - }, - "kkt": { - "english_name": "Koi" - }, - "kme": { - "english_name": "Bakole" - }, - "swh": { - "english_name": "Swahili (individual language)" - }, - "ahl": { - "english_name": "Igo" - }, - "ali": { - "english_name": "Amaimon" - }, - "rgu": { - "english_name": "Ringgou" - }, - "chq": { - "english_name": "Chinantec, Quiotepec" - }, - "cnb": { - "english_name": "Chin, Chinbon" - }, - "siv": { - "english_name": "Sumariup" - }, - "gfk": { - "english_name": "Patpatar" - }, - "esu": { - "english_name": "Yupik, Central" - }, - "eto": { - "english_name": "Eton (Cameroon)" - }, - "bzr": { - "english_name": "Biri" - }, - "aiw": { - "english_name": "Aari" - }, - "gzn": { - "english_name": "Gane" - }, - "ykm": { - "english_name": "Kap" - }, - "wlu": { - "english_name": "Wuliwuli" - }, - "tia": { - "english_name": "Tamazight, Tidikelt" - }, - "jjr": { - "english_name": "Bankal" - }, - "dbe": { - "english_name": "Dabe" - }, - "bqn": { - "english_name": "Bulgarian Sign Language" - }, - "smd": { - "english_name": "Sama" - }, - "luo": { - "english_name": "Luo (Kenya and Tanzania)" - }, - "bjk": { - "english_name": "Barok" - }, - "glr": { - "english_name": "Glaro-Twabo" - }, - "kam": { - "english_name": "Kamba (Kenya)" - }, - "gaa": { - "english_name": "Ga" - }, - "se": { - "english_name": "Sami, Northern" - }, - "emx": { - "english_name": "Erromintxela" - }, - "chg": { - "english_name": "Chagatai" - }, - "bwp": { - "english_name": "Mandobo Bawah" - }, - "kgp": { - "english_name": "Kaingang" - }, - "mse": { - "english_name": "Musey" - }, - "kpw": { - "english_name": "Kobon" - }, - "hir": { - "english_name": "Himarimã" - }, - "djj": { - "english_name": "Djeebbana" - }, - "cam": { - "english_name": "Cemuhî" - }, - "aah": { - "english_name": "Arapesh, Abu'" - }, - "gl": { - "english_name": "Galician", - "name": "Galego" - }, - "btf": { - "english_name": "Birgit" - }, - "xgi": { - "english_name": "Garingbal" - }, - "izr": { - "english_name": "Izere" - }, - "bvl": { - "english_name": "Bolivian Sign Language" - }, - "yla": { - "english_name": "Yaul" - }, - "ndt": { - "english_name": "Ndunga" - }, - "kok": { - "english_name": "Konkani (macrolanguage)", - "name": "Konkani (macrolanguage)" - }, - "kth": { - "english_name": "Karanga" - }, - "pme": { - "english_name": "Pwaamei" - }, - "mjq": { - "english_name": "Malaryan" - }, - "vec": { - "english_name": "Venetian" - }, - "kuf": { - "english_name": "Katu, Western" - }, - "mzr": { - "english_name": "Marúbo" - }, - "tsh": { - "english_name": "Tsuvan" - }, - "asa": { - "english_name": "Asu (Tanzania)" - }, - "kup": { - "english_name": "Kunimaipa" - }, - "poy": { - "english_name": "Pogolo" - }, - "udm": { - "english_name": "Udmurt" - }, - "slf": { - "english_name": "Swiss-Italian Sign Language" - }, - "xyl": { - "english_name": "Yalakalore" - }, - "gis": { - "english_name": "Giziga, North" - }, - "ane": { - "english_name": "Xârâcùù" - }, - "bqo": { - "english_name": "Balo" - }, - "lwe": { - "english_name": "Lewo Eleng" - }, - "xmv": { - "english_name": "Malagasy, Antankarana" - }, - "mjj": { - "english_name": "Mawak" - }, - "msm": { - "english_name": "Manobo, Agusan" - }, - "tap": { - "english_name": "Taabwa" - }, - "kba": { - "english_name": "Kalarko" - }, - "cjy": { - "english_name": "Chinese, Jinyu" - }, - "mxo": { - "english_name": "Mbowe" - }, - "ctt": { - "english_name": "Chetti, Wayanad" - }, - "tmv": { - "english_name": "Tembo (Motembo)" - }, - "zae": { - "english_name": "Zapotec, Yareni" - }, - "cca": { - "english_name": "Cauca" - }, - "laj": { - "english_name": "Lango (Uganda)" - }, - "gsg": { - "english_name": "German Sign Language" - }, - "ojs": { - "english_name": "Ojibwa, Severn" - }, - "njh": { - "english_name": "Naga, Lotha" - }, - "dng": { - "english_name": "Dungan" - }, - "nid": { - "english_name": "Ngandi" - }, - "nba": { - "english_name": "Nyemba" - }, - "hi": { - "english_name": "Hindi", - "name": "हिंदी" - }, - "jru": { - "english_name": "Japrería" - }, - "tmn": { - "english_name": "Taman (Indonesia)" - }, - "wuh": { - "english_name": "Wutunhua" - }, - "grg": { - "english_name": "Madi" - }, - "rth": { - "english_name": "Ratahan" - }, - "dsl": { - "english_name": "Danish Sign Language" - }, - "uro": { - "english_name": "Ura (Papua New Guinea)" - }, - "moq": { - "english_name": "Mor (Bomberai Peninsula)" - }, - "vkp": { - "english_name": "Creole Portuguese, Korlai" - }, - "sss": { - "english_name": "Sô" - }, - "mtb": { - "english_name": "Anyin Morofo" - }, - "orh": { - "english_name": "Oroqen" - }, - "acb": { - "english_name": "Áncá" - }, - "wem": { - "english_name": "Gbe, Weme" - }, - "qwc": { - "english_name": "Quechua, Classical" - }, - "kji": { - "english_name": "Zabana" - }, - "mab": { - "english_name": "Mixtec, Yutanduchi" - }, - "bnp": { - "english_name": "Bola" - }, - "any": { - "english_name": "Anyin" - }, - "ktz": { - "english_name": "Ju/'hoan" - }, - "crh": { - "english_name": "Tatar, Crimean", - "name": "Tatar, Crimean" - }, - "awy": { - "english_name": "Awyu, Edera" - }, - "lox": { - "english_name": "Loun" - }, - "kew": { - "english_name": "Kewa, West" - }, - "kv": { - "english_name": "Komi" - }, - "ukg": { - "english_name": "Ukuriguma" - }, - "ldd": { - "english_name": "Luri" - }, - "juu": { - "english_name": "Ju" - }, - "aha": { - "english_name": "Ahanta" - }, - "rwr": { - "english_name": "Marwari (India)" - }, - "tkf": { - "english_name": "Tukumanféd" - }, - "bnm": { - "english_name": "Batanga" - }, - "lrm": { - "english_name": "Marama" - }, - "npo": { - "english_name": "Naga, Pochuri" - }, - "lno": { - "english_name": "Lango (Sudan)" - }, - "ndl": { - "english_name": "Ndolo" - }, - "smc": { - "english_name": "Som" - }, - "fro": { - "english_name": "French, Old (842-ca. 1400)" - }, - "bju": { - "english_name": "Busuu" - }, - "txx": { - "english_name": "Tatana" - }, - "ror": { - "english_name": "Rongga" - }, - "otl": { - "english_name": "Otomi, Tilapa" - }, - "jls": { - "english_name": "Jamaican Sign Language" - }, - "riu": { - "english_name": "Riung" - }, - "mut": { - "english_name": "Muria, Western" - }, - "abu": { - "english_name": "Abure" - }, - "tgb": { - "english_name": "Tobilung" - }, - "kgo": { - "english_name": "Krongo" - }, - "wbb": { - "english_name": "Wabo" - }, - "lbg": { - "english_name": "Laopang" - }, - "sch": { - "english_name": "Sakachep" - }, - "wrl": { - "english_name": "Warlmanpa" - }, - "ddg": { - "english_name": "Fataluku" - }, - "nmc": { - "english_name": "Ngam" - }, - "pns": { - "english_name": "Ponosakan" - }, - "gau": { - "english_name": "Gadaba, Mudhili" - }, - "zlm": { - "english_name": "Malay (individual language)" - }, - "hmn": { - "english_name": "Hmong" - }, - "bho": { - "english_name": "Bhojpuri" - }, - "afo": { - "english_name": "Eloyi" - }, - "zhb": { - "english_name": "Zhaba" - }, - "lba": { - "english_name": "Lui" - }, - "taq": { - "english_name": "Tamasheq" - }, - "brp": { - "english_name": "Barapasi" - }, - "cui": { - "english_name": "Cuiba" - }, - "dbw": { - "english_name": "Dogon, Bankan Tey" - }, - "tnh": { - "english_name": "Maiani" - }, - "cmg": { - "english_name": "Mongolian, Classical" - }, - "tmh": { - "english_name": "Tamashek" - }, - "ora": { - "english_name": "Oroha" - }, - "gwt": { - "english_name": "Gawar-Bati" - }, - "mpg": { - "english_name": "Marba" - }, - "dgg": { - "english_name": "Doga" - }, - "phh": { - "english_name": "Phukha" - }, - "ms": { - "english_name": "Malay (macrolanguage)", - "name": "Malay (macrolanguage)" - }, - "clt": { - "english_name": "Chin, Lautu" - }, - "sjp": { - "english_name": "Surjapuri" - }, - "dul": { - "english_name": "Agta, Alabat Island" - }, - "vms": { - "english_name": "Moksela" - }, - "ttn": { - "english_name": "Towei" - }, - "aac": { - "english_name": "Ari" - }, - "mtm": { - "english_name": "Mator" - }, - "wha": { - "english_name": "Manusela" - }, - "wnw": { - "english_name": "Wintu" - }, - "ncn": { - "english_name": "Nauna" - }, - "txr": { - "english_name": "Tartessian" - }, - "anw": { - "english_name": "Anaang" - }, - "gmh": { - "english_name": "German, Middle High (ca. 1050-1500)" - }, - "sne": { - "english_name": "Bidayuh, Bau" - }, - "hre": { - "english_name": "Hre" - }, - "tkl": { - "english_name": "Tokelau" - }, - "ebo": { - "english_name": "Teke-Ebo" - }, - "ikl": { - "english_name": "Ikulu" - }, - "khd": { - "english_name": "Kanum, Bädi" - }, - "mbn": { - "english_name": "Macaguán" - }, - "apm": { - "english_name": "Apache, Mescalero-Chiricahua" - }, - "amo": { - "english_name": "Amo" - }, - "tsy": { - "english_name": "Tebul Sign Language" - }, - "suz": { - "english_name": "Sunwar" - }, - "bed": { - "english_name": "Bedoanas" - }, - "sts": { - "english_name": "Shumashti" - }, - "pmn": { - "english_name": "Pam" - }, - "ktx": { - "english_name": "Kaxararí" - }, - "crk": { - "english_name": "Cree, Plains" - }, - "gub": { - "english_name": "Guajajára" - }, - "ywg": { - "english_name": "Yinhawangka" - }, - "iyx": { - "english_name": "Yaka (Congo)" - }, - "bhr": { - "english_name": "Malagasy, Bara" - }, - "cpy": { - "english_name": "Ashéninka, South Ucayali" - }, - "awo": { - "english_name": "Awak" - }, - "vme": { - "english_name": "Masela, East" - }, - "akp": { - "english_name": "Siwu" - }, - "erh": { - "english_name": "Eruwa" - }, - "mhn": { - "english_name": "Mócheno" - }, - "afn": { - "english_name": "Defaka" - }, - "yau": { - "english_name": "Yuwana" - }, - "kwk": { - "english_name": "Kwakiutl" - }, - "hnd": { - "english_name": "Hindko, Southern" - }, - "lok": { - "english_name": "Loko" - }, - "tar": { - "english_name": "Tarahumara, Central" - }, - "ugo": { - "english_name": "Ugong" - }, - "hue": { - "english_name": "Huave, San Francisco Del Mar" - }, - "lnd": { - "english_name": "Lundayeh" - }, - "ztl": { - "english_name": "Zapotec, Lapaguía-Guivini" - }, - "ser": { - "english_name": "Serrano" - }, - "xyk": { - "english_name": "Mayi-Kulan" - }, - "nbo": { - "english_name": "Nkukoli" - }, - "pyy": { - "english_name": "Pyen" - }, - "mom": { - "english_name": "Mangue" - }, - "bde": { - "english_name": "Bade" - }, - "def": { - "english_name": "Dezfuli" - }, - "con": { - "english_name": "Cofán" - }, - "waj": { - "english_name": "Waffa" - }, - "yba": { - "english_name": "Yala" - }, - "gbj": { - "english_name": "Gadaba, Bodo" - }, - "ygl": { - "english_name": "Yangum Gel" - }, - "txq": { - "english_name": "Tii" - }, - "nll": { - "english_name": "Nihali" - }, - "uru": { - "english_name": "Urumi" - }, - "mwb": { - "english_name": "Juwal" - }, - "smg": { - "english_name": "Simbali" - }, - "ida": { - "english_name": "Idakho-Isukha-Tiriki" - }, - "yar": { - "english_name": "Yabarana" - }, - "kio": { - "english_name": "Kiowa" - }, - "wci": { - "english_name": "Gbe, Waci" - }, - "bim": { - "english_name": "Bimoba" - }, - "scn": { - "english_name": "Sicilian" - }, - "xmg": { - "english_name": "Mengaka" - }, - "der": { - "english_name": "Deori" - }, - "gde": { - "english_name": "Gude" - }, - "ddd": { - "english_name": "Dongotono" - }, - "paf": { - "english_name": "Paranawát" - }, - "tpa": { - "english_name": "Taupota" - }, - "ldj": { - "english_name": "Lemoro" - }, - "ybj": { - "english_name": "Hasha" - }, - "thh": { - "english_name": "Tarahumara, Northern" - }, - "btv": { - "english_name": "Bateri" - }, - "zap": { - "english_name": "Zapotec" - }, - "pig": { - "english_name": "Pisabo" - }, - "ckx": { - "english_name": "Caka" - }, - "tyr": { - "english_name": "Tai Daeng" - }, - "ham": { - "english_name": "Hewa" - }, - "sps": { - "english_name": "Saposa" - }, - "oyy": { - "english_name": "Oya'oya" - }, - "cbc": { - "english_name": "Carapana" - }, - "bzw": { - "english_name": "Basa (Nigeria)" - }, - "gug": { - "english_name": "Guaraní, Paraguayan" - }, - "woc": { - "english_name": "Wogeo" - }, - "trs": { - "english_name": "Triqui, Chicahuaxtla" - }, - "aog": { - "english_name": "Angoram" - }, - "kxp": { - "english_name": "Koli, Wadiyara" - }, - "trc": { - "english_name": "Triqui, Copala" - }, - "wum": { - "english_name": "Wumbvu" - }, - "ike": { - "english_name": "Inuktitut, Eastern Canadian" - }, - "lt": { - "english_name": "Lithuanian", - "name": "Lietuvių" - }, - "gko": { - "english_name": "Kok-Nar" - }, - "tuz": { - "english_name": "Turka" - }, - "ldn": { - "english_name": "Láadan" - }, - "hag": { - "english_name": "Hanga" - }, - "tim": { - "english_name": "Timbe" - }, - "ass": { - "english_name": "Ipulo" - }, - "dug": { - "english_name": "Duruma" - }, - "xlu": { - "english_name": "Luwian, Cuneiform" - }, - "mfy": { - "english_name": "Mayo" - }, - "rof": { - "english_name": "Rombo" - }, - "mpm": { - "english_name": "Mixtec, Yosondúa" - }, - "wga": { - "english_name": "Wagaya" - }, - "tdn": { - "english_name": "Tondano" - }, - "tns": { - "english_name": "Tenis" - }, - "cuo": { - "english_name": "Cumanagoto" - }, - "lcf": { - "english_name": "Lubu" - }, - "nsf": { - "english_name": "Nisu, Northwestern" - }, - "pcw": { - "english_name": "Pyapun" - }, - "azz": { - "english_name": "Nahuatl, Highland Puebla" - }, - "vbk": { - "english_name": "Bontok, Southwestern" - }, - "slx": { - "english_name": "Salampasu" - }, - "kkr": { - "english_name": "Kir-Balar" - }, - "cby": { - "english_name": "Carabayo" - }, - "nuq": { - "english_name": "Nukumanu" - }, - "mio": { - "english_name": "Mixtec, Pinotepa Nacional" - }, - "mml": { - "english_name": "Man Met" - }, - "ifk": { - "english_name": "Ifugao, Tuwali" - }, - "ntx": { - "english_name": "Naga, Tangkhul (Myanmar)" - }, - "gun": { - "english_name": "Guaraní, Mbyá" - }, - "sew": { - "english_name": "Sewa Bay" - }, - "bdr": { - "english_name": "Bajau, West Coast" - }, - "mvo": { - "english_name": "Marovo" - }, - "gpe": { - "english_name": "Pidgin English, Ghanaian" - }, - "piu": { - "english_name": "Pintupi-Luritja" - }, - "akq": { - "english_name": "Ak" - }, - "tua": { - "english_name": "Wiarumus" - }, - "nyw": { - "english_name": "Nyaw" - }, - "ktn": { - "english_name": "Karitiâna" - }, - "toi": { - "english_name": "Tonga (Zambia)" - }, - "kpe": { - "english_name": "Kpelle" - }, - "byg": { - "english_name": "Baygo" - }, - "crb": { - "english_name": "Carib, Island" - }, - "gou": { - "english_name": "Gavar" - }, - "koq": { - "english_name": "Kota (Gabon)" - }, - "spr": { - "english_name": "Saparua" - }, - "uri": { - "english_name": "Urim" - }, - "bse": { - "english_name": "Wushi" - }, - "aea": { - "english_name": "Areba" - }, - "mru": { - "english_name": "Mono (Cameroon)" - }, - "huw": { - "english_name": "Hukumina" - }, - "zat": { - "english_name": "Zapotec, Tabaa" - }, - "kta": { - "english_name": "Katua" - }, - "cuk": { - "english_name": "Kuna, San Blas" - }, - "mhg": { - "english_name": "Margu" - }, - "mua": { - "english_name": "Mundang" - }, - "idc": { - "english_name": "Idon" - }, - "tkq": { - "english_name": "Tee" - }, - "xer": { - "english_name": "Xerénte" - }, - "zmz": { - "english_name": "Mbandja" - }, - "ycn": { - "english_name": "Yucuna" - }, - "lbw": { - "english_name": "Tolaki" - }, - "kye": { - "english_name": "Krache" - }, - "zts": { - "english_name": "Zapotec, Tilquiapan" - }, - "itm": { - "english_name": "Itu Mbon Uzo" - }, - "pym": { - "english_name": "Fyam" - }, - "job": { - "english_name": "Joba" - }, - "khb": { - "english_name": "Lü" - }, - "ha": { - "english_name": "Hausa" - }, - "msw": { - "english_name": "Mansoanka" - }, - "dju": { - "english_name": "Kapriman" - }, - "lbf": { - "english_name": "Tinani" - }, - "sje": { - "english_name": "Sami, Pite" - }, - "yri": { - "english_name": "Yarí" - }, - "diz": { - "english_name": "Ding" - }, - "mln": { - "english_name": "Malango" - }, - "myg": { - "english_name": "Manta" - }, - "wka": { - "english_name": "Kw'adza" - }, - "zuy": { - "english_name": "Zumaya" - }, - "for": { - "english_name": "Fore" - }, - "axm": { - "english_name": "Armenian, Middle" - }, - "abd": { - "english_name": "Manide" - }, - "mpn": { - "english_name": "Mindiri" - }, - "diw": { - "english_name": "Dinka, Northwestern" - }, - "mgq": { - "english_name": "Malila" - }, - "cgg": { - "english_name": "Chiga" - }, - "omc": { - "english_name": "Mochica" - }, - "fvr": { - "english_name": "Fur" - }, - "faj": { - "english_name": "Faita" - }, - "psc": { - "english_name": "Persian Sign Language" - }, - "tcx": { - "english_name": "Toda" - }, - "txu": { - "english_name": "Kayapó" - }, - "xnk": { - "english_name": "Nganakarti" - }, - "gmd": { - "english_name": "Mághdì" - }, - "bgm": { - "english_name": "Baga Mboteni" - }, - "kll": { - "english_name": "Kalagan, Kagan" - }, - "ums": { - "english_name": "Pendau" - }, - "mlv": { - "english_name": "Motlav" - }, - "khk": { - "english_name": "Mongolian, Halh" - }, - "dyg": { - "english_name": "Agta, Villa Viciosa" - }, - "xow": { - "english_name": "Kowaki" - }, - "sng": { - "english_name": "Sanga (Democratic Republic of Congo)" - }, - "bhh": { - "english_name": "Bukharic" - }, - "lhl": { - "english_name": "Lohar, Lahul" - }, - "ski": { - "english_name": "Sika" - }, - "trg": { - "english_name": "Lishán Didán" - }, - "cob": { - "english_name": "Chicomuceltec" - }, - "nyq": { - "english_name": "Nayini" - }, - "tuh": { - "english_name": "Taulil" - }, - "cnw": { - "english_name": "Chin, Ngawn" - }, - "auu": { - "english_name": "Auye" - }, - "buv": { - "english_name": "Bun" - }, - "bxl": { - "english_name": "Jalkunan" - }, - "ljx": { - "english_name": "Yuru" - }, - "hno": { - "english_name": "Hindko, Northern" - }, - "gmx": { - "english_name": "Magoma" - }, - "lnu": { - "english_name": "Longuda" - }, - "mqt": { - "english_name": "Mok" - }, - "nsv": { - "english_name": "Nisu, Southwestern" - }, - "clo": { - "english_name": "Chontal, Lowland Oaxaca" - }, - "kgl": { - "english_name": "Kunggari" - }, - "kgx": { - "english_name": "Kamaru" - }, - "thy": { - "english_name": "Tha" - }, - "snw": { - "english_name": "Selee" - }, - "nsk": { - "english_name": "Naskapi" - }, - "zaj": { - "english_name": "Zaramo" - }, - "mtj": { - "english_name": "Moskona" - }, - "nfu": { - "english_name": "Mfumte" - }, - "git": { - "english_name": "Gitxsan" - }, - "tui": { - "english_name": "Tupuri" - }, - "gcd": { - "english_name": "Ganggalida" - }, - "bic": { - "english_name": "Bikaru" - }, - "lnz": { - "english_name": "Lonzo" - }, - "kkk": { - "english_name": "Kokota" - }, - "tio": { - "english_name": "Teop" - }, - "kn": { - "english_name": "Kannada", - "name": "ಕನ್ನಡ" - }, - "nho": { - "english_name": "Takuu" - }, - "mhd": { - "english_name": "Mbugu" - }, - "dix": { - "english_name": "Dixon Reef" - }, - "dks": { - "english_name": "Dinka, Southeastern" - }, - "ikr": { - "english_name": "Ikaranggal" - }, - "gyy": { - "english_name": "Gunya" - }, - "ree": { - "english_name": "Kayan, Rejang" - }, - "tog": { - "english_name": "Tonga (Nyasa)" - }, - "ttp": { - "english_name": "Tombelala" - }, - "txb": { - "english_name": "Tokharian B" - }, - "hud": { - "english_name": "Huaulu" - }, - "hij": { - "english_name": "Hijuk" - }, - "cto": { - "english_name": "Emberá-Catío" - }, - "sad": { - "english_name": "Sandawe" - }, - "khc": { - "english_name": "Tukang Besi North" - }, - "cri": { - "english_name": "Sãotomense" - }, - "hbo": { - "english_name": "Hebrew, Ancient" - }, - "ace": { - "english_name": "Achinese" - }, - "dbq": { - "english_name": "Daba" - }, - "bm": { - "english_name": "Bambara" - }, - "bqp": { - "english_name": "Busa" - }, - "nge": { - "english_name": "Ngemba" - }, - "zav": { - "english_name": "Zapotec, Yatzachi" - }, - "sfe": { - "english_name": "Subanen, Eastern" - }, - "wdg": { - "english_name": "Wadaginam" - }, - "thm": { - "english_name": "Aheu" - }, - "kdy": { - "english_name": "Keder" - }, - "duo": { - "english_name": "Agta, Dupaninan" - }, - "psq": { - "english_name": "Pasi" - }, - "mvw": { - "english_name": "Machinga" - }, - "okb": { - "english_name": "Okobo" - }, - "xkt": { - "english_name": "Kantosi" - }, - "til": { - "english_name": "Tillamook" - }, - "kuv": { - "english_name": "Kur" - }, - "weo": { - "english_name": "Wemale" - }, - "nnf": { - "english_name": "Ngaing" - }, - "ish": { - "english_name": "Esan" - }, - "yxl": { - "english_name": "Yardliyawarra" - }, - "xyb": { - "english_name": "Yandjibara" - }, - "rak": { - "english_name": "Tulu-Bohuai" - }, - "kqt": { - "english_name": "Kadazan, Klias River" - }, - "xoi": { - "english_name": "Kominimung" - }, - "kao": { - "english_name": "Xaasongaxango" - }, - "trl": { - "english_name": "Scottish, Traveller" - }, - "ver": { - "english_name": "Mom Jango" - }, - "krv": { - "english_name": "Kavet" - }, - "csr": { - "english_name": "Costa Rican Sign Language" - }, - "ksq": { - "english_name": "Kwaami" - }, - "byb": { - "english_name": "Bikya" - }, - "jcs": { - "english_name": "Jamaican Country Sign Language" - }, - "agl": { - "english_name": "Fembe" - }, - "azb": { - "english_name": "Azerbaijani, South" - }, - "mai": { - "english_name": "Maithili" - }, - "wei": { - "english_name": "Kiunum" - }, - "npg": { - "english_name": "Naga, Ponyo-Gongwang" - }, - "bra": { - "english_name": "Braj" - }, - "trz": { - "english_name": "Torá" - }, - "trd": { - "english_name": "Turi" - }, - "jow": { - "english_name": "Jowulu" - }, - "gvl": { - "english_name": "Gulay" - }, - "wtf": { - "english_name": "Watiwa" - }, - "mjd": { - "english_name": "Maidu, Northwest" - }, - "scw": { - "english_name": "Sha" - }, - "nlw": { - "english_name": "Walangama" - }, - "nb": { - "english_name": "Norwegian Bokmål", - "name": "Norwegian Bokmål" - }, - "iba": { - "english_name": "Iban" - }, - "mpc": { - "english_name": "Mangarayi" - }, - "kvp": { - "english_name": "Kompane" - }, - "rnd": { - "english_name": "Ruund" - }, - "wnc": { - "english_name": "Wantoat" - }, - "gcc": { - "english_name": "Mali" - }, - "yry": { - "english_name": "Yarluyandi" - }, - "khq": { - "english_name": "Songhay, Koyra Chiini" - }, - "xwj": { - "english_name": "Wajuk" - }, - "th": { - "english_name": "Thai", - "name": "ไทย" - }, - "glh": { - "english_name": "Pashayi, Northwest" - }, - "krx": { - "english_name": "Karon" - }, - "mkv": { - "english_name": "Mafea" - }, - "mnb": { - "english_name": "Muna" - }, - "nuj": { - "english_name": "Nyole" - }, - "dac": { - "english_name": "Dambi" - }, - "yai": { - "english_name": "Yagnobi" - }, - "ngh": { - "english_name": "N/u" - }, - "acf": { - "english_name": "Creole French, Saint Lucian" - }, - "nui": { - "english_name": "Ngumbi" - }, - "imr": { - "english_name": "Imroing" - }, - "pml": { - "english_name": "Lingua Franca" - }, - "pbv": { - "english_name": "Pnar" - }, - "hve": { - "english_name": "Huave, San Dionisio Del Mar" - }, - "tqp": { - "english_name": "Tomoip" - }, - "pks": { - "english_name": "Pakistan Sign Language" - }, - "mmf": { - "english_name": "Mundat" - }, - "adh": { - "english_name": "Adhola" - }, - "mav": { - "english_name": "Sateré-Mawé" - }, - "tsa": { - "english_name": "Tsaangi" - }, - "fue": { - "english_name": "Fulfulde, Borgu" - }, - "kqb": { - "english_name": "Kovai" - }, - "dds": { - "english_name": "Dogon, Donno So" - }, - "cno": { - "english_name": "Con" - }, - "tbp": { - "english_name": "Taworta" - }, - "avd": { - "english_name": "Alviri-Vidari" - }, - "yo": { - "english_name": "Yoruba" - }, - "bgp": { - "english_name": "Balochi, Eastern" - }, - "mwl": { - "english_name": "Mirandese" - }, - "mey": { - "english_name": "Hassaniyya" - }, - "wie": { - "english_name": "Wik-Epa" - }, - "km": { - "english_name": "Khmer, Central" - }, - "uve": { - "english_name": "Uvean, West" - }, - "mhz": { - "english_name": "Mor (Mor Islands)" - }, - "ilb": { - "english_name": "Ila" - }, - "gbf": { - "english_name": "Gaikundi" - }, - "shv": { - "english_name": "Shehri" - }, - "bkm": { - "english_name": "Kom (Cameroon)" - }, - "thd": { - "english_name": "Thayore" - }, - "caq": { - "english_name": "Nicobarese, Car" - }, - "ijs": { - "english_name": "Ijo, Southeast" - }, - "gtu": { - "english_name": "Aghu-Tharnggala" - }, - "bgw": { - "english_name": "Bhatri" - }, - "yxy": { - "english_name": "Yabula Yabula" - }, - "knz": { - "english_name": "Kalamsé" - }, - "xbg": { - "english_name": "Bunganditj" - }, - "gvf": { - "english_name": "Golin" - }, - "zmh": { - "english_name": "Makolkol" - }, - "prd": { - "english_name": "Parsi-Dari" - }, - "ebg": { - "english_name": "Ebughu" - }, - "suj": { - "english_name": "Shubi" - }, - "xur": { - "english_name": "Urartian" - }, - "jei": { - "english_name": "Yei" - }, - "anx": { - "english_name": "Andra-Hus" - }, - "nar": { - "english_name": "Iguta" - }, - "vmk": { - "english_name": "Makhuwa-Shirima" - }, - "agu": { - "english_name": "Aguacateco" - }, - "rbl": { - "english_name": "Bikol, Miraya" - }, - "nag": { - "english_name": "Naga Pidgin" - }, - "bon": { - "english_name": "Bine" - }, - "bao": { - "english_name": "Waimaha" - }, - "sev": { - "english_name": "Senoufo, Nyarafolo" - }, - "byt": { - "english_name": "Berti" - }, - "wdj": { - "english_name": "Wadjiginy" - }, - "bsf": { - "english_name": "Bauchi" - }, - "to": { - "english_name": "Tonga (Tonga Islands)" - }, - "mmk": { - "english_name": "Mukha-Dora" - }, - "btg": { - "english_name": "Bété, Gagnoa" - }, - "lpe": { - "english_name": "Lepki" - }, - "jax": { - "english_name": "Malay, Jambi" - }, - "buk": { - "english_name": "Bugawac" - }, - "svk": { - "english_name": "Slovakian Sign Language" - }, - "gec": { - "english_name": "Grebo, Gboloo" - }, - "sgs": { - "english_name": "Samogitian" - }, - "ja": { - "english_name": "Japanese", - "name": "日本語" - }, - "bcv": { - "english_name": "Shoo-Minda-Nye" - }, - "coq": { - "english_name": "Coquille" - }, - "orr": { - "english_name": "Oruma" - }, - "bpq": { - "english_name": "Malay, Banda" - }, - "lke": { - "english_name": "Kenyi" - }, - "inm": { - "english_name": "Minaean" - }, - "wec": { - "english_name": "Wè Western" - }, - "cje": { - "english_name": "Chru" - }, - "dgb": { - "english_name": "Dogon, Bunoge" - }, - "caf": { - "english_name": "Carrier, Southern" - }, - "ygw": { - "english_name": "Yagwoia" - }, - "ogu": { - "english_name": "Ogbronuagum" - }, - "xpg": { - "english_name": "Phrygian" - }, - "rnw": { - "english_name": "Rungwa" - }, - "tdx": { - "english_name": "Malagasy, Tandroy-Mahafaly" - }, - "mxb": { - "english_name": "Mixtec, Tezoatlán" - }, - "xbo": { - "english_name": "Bolgarian" - }, - "wob": { - "english_name": "Wè Northern" - }, - "abz": { - "english_name": "Abui" - }, - "bfh": { - "english_name": "Blafe" - }, - "mrd": { - "english_name": "Magar, Western" - }, - "sgt": { - "english_name": "Brokpake" - }, - "wor": { - "english_name": "Woria" - }, - "orn": { - "english_name": "Orang Kanaq" - }, - "tdd": { - "english_name": "Tai Nüa" - }, - "zpk": { - "english_name": "Zapotec, Tlacolulita" - }, - "teg": { - "english_name": "Teke-Tege" - }, - "lam": { - "english_name": "Lamba" - }, - "oko": { - "english_name": "Korean, Old (3rd-9th cent.)" - }, - "itk": { - "english_name": "Judeo-Italian" - }, - "bpz": { - "english_name": "Bilba" - }, - "eu": { - "english_name": "Basque", - "name": "Euskara" - }, - "dda": { - "english_name": "Dadi Dadi" - }, - "aci": { - "english_name": "Aka-Cari" - }, - "vnm": { - "english_name": "Vinmavis" - }, - "aau": { - "english_name": "Abau" - }, - "krt": { - "english_name": "Kanuri, Tumari" - }, - "lgq": { - "english_name": "Logba" - }, - "csn": { - "english_name": "Colombian Sign Language" - }, - "btn": { - "english_name": "Ratagnon" - }, - "kiq": { - "english_name": "Kosadle" - }, - "lbr": { - "english_name": "Lohorung" - }, - "brc": { - "english_name": "Creole Dutch, Berbice" - }, - "csf": { - "english_name": "Cuba Sign Language" - }, - "sac": { - "english_name": "Meskwaki" - }, - "dhi": { - "english_name": "Dhimal" - }, - "sld": { - "english_name": "Sissala" - }, - "cir": { - "english_name": "Tiri" - }, - "wsk": { - "english_name": "Waskia" - }, - "bwz": { - "english_name": "Bwisi" - }, - "ggl": { - "english_name": "Ganglau" - }, - "jnl": { - "english_name": "Rawat" - }, - "epi": { - "english_name": "Epie" - }, - "xcc": { - "english_name": "Camunic" - }, - "xsm": { - "english_name": "Kasem" - }, - "len": { - "english_name": "Lenca" - }, - "tmc": { - "english_name": "Tumak" - }, - "xtp": { - "english_name": "Mixtec, San Miguel Piedras" - }, - "dre": { - "english_name": "Dolpo" - }, - "arc": { - "english_name": "Aramaic, Official (700-300 BCE)" - }, - "gju": { - "english_name": "Gujari" - }, - "muo": { - "english_name": "Nyong" - }, - "skm": { - "english_name": "Kutong" - }, - "xzh": { - "english_name": "Zhang-Zhung" - }, - "gas": { - "english_name": "Garasia, Adiwasi" - }, - "amt": { - "english_name": "Amto" - }, - "bbh": { - "english_name": "Bugan" - }, - "wmm": { - "english_name": "Maiwa (Indonesia)" - }, - "vmr": { - "english_name": "Marenje" - }, - "qux": { - "english_name": "Quechua, Yauyos" - }, - "chh": { - "english_name": "Chinook" - }, - "nsh": { - "english_name": "Ngoshie" - }, - "yec": { - "english_name": "Yeniche" - }, - "zgn": { - "english_name": "Zhuang, Guibian" - }, - "wni": { - "english_name": "Comorian, Ndzwani" - }, - "lir": { - "english_name": "English, Liberian" - }, - "kni": { - "english_name": "Kanufi" - }, - "tiu": { - "english_name": "Adasen" - }, - "zoq": { - "english_name": "Zoque, Tabasco" - }, - "asn": { - "english_name": "Asuriní, Xingú" - }, - "kkn": { - "english_name": "Kon Keu" - }, - "end": { - "english_name": "Ende" - }, - "xkn": { - "english_name": "Kayan, Kayan River" - }, - "tsq": { - "english_name": "Thai Sign Language" - }, - "gix": { - "english_name": "Gilima" - }, - "kyx": { - "english_name": "Rapoisi" - }, - "kez": { - "english_name": "Kukele" - }, - "dro": { - "english_name": "Melanau, Daro-Matu" - }, - "ikw": { - "english_name": "Ikwere" - }, - "mfl": { - "english_name": "Putai" - }, - "ndp": { - "english_name": "Ndo" - }, - "sow": { - "english_name": "Sowanda" - }, - "kpv": { - "english_name": "Komi-Zyrian" - }, - "yky": { - "english_name": "Yakoma" - }, - "quw": { - "english_name": "Quichua, Tena Lowland" - }, - "mfj": { - "english_name": "Mefele" - }, - "xpi": { - "english_name": "Pictish" - }, - "pbh": { - "english_name": "E'ñapa Woromaipu" - }, - "rcf": { - "english_name": "Creole French, Réunion" - }, - "tgn": { - "english_name": "Tandaganon" - }, - "gbd": { - "english_name": "Karadjeri" - }, - "goo": { - "english_name": "Gone Dau" - }, - "kxf": { - "english_name": "Karen, Manumanaw" - }, - "shb": { - "english_name": "Ninam" - }, - "cta": { - "english_name": "Chatino, Tataltepec" - }, - "pix": { - "english_name": "Piu" - }, - "cdi": { - "english_name": "Chodri" - }, - "ttu": { - "english_name": "Torau" - }, - "kvb": { - "english_name": "Kubu" - }, - "ttr": { - "english_name": "Tera" - }, - "gnd": { - "english_name": "Zulgo-Gemzek" - }, - "sec": { - "english_name": "Sechelt" - }, - "guf": { - "english_name": "Gupapuyngu" - }, - "bry": { - "english_name": "Burui" - }, - "bkk": { - "english_name": "Brokskat" - }, - "txe": { - "english_name": "Totoli" - }, - "lli": { - "english_name": "Teke-Laali" - }, - "kvr": { - "english_name": "Kerinci" - }, - "shr": { - "english_name": "Shi" - }, - "act": { - "english_name": "Achterhoeks" - }, - "dlk": { - "english_name": "Dahalik" - }, - "mzb": { - "english_name": "Tumzabt" - }, - "pay": { - "english_name": "Pech" - }, - "pek": { - "english_name": "Penchal" - }, - "yaa": { - "english_name": "Yaminahua" - }, - "srw": { - "english_name": "Serua" - }, - "guk": { - "english_name": "Gumuz" - }, - "ypn": { - "english_name": "Phowa, Ani" - }, - "rrt": { - "english_name": "Arritinngithigh" - }, - "stv": { - "english_name": "Silt'e" - }, - "obi": { - "english_name": "Obispeño" - }, - "kfm": { - "english_name": "Khunsari" - }, - "wmd": { - "english_name": "Mamaindé" - }, - "auo": { - "english_name": "Auyokawa" - }, - "puq": { - "english_name": "Puquina" - }, - "aeb": { - "english_name": "Arabic, Tunisian" - }, - "gnl": { - "english_name": "Gangulu" - }, - "ktb": { - "english_name": "Kambaata" - }, - "mdd": { - "english_name": "Mbum" - }, - "udg": { - "english_name": "Muduga" - }, - "tih": { - "english_name": "Murut, Timugon" - }, - "rmq": { - "english_name": "Caló" - }, - "gnb": { - "english_name": "Gangte" - }, - "fer": { - "english_name": "Feroge" - }, - "tw": { - "english_name": "Twi" - }, - "om": { - "english_name": "Oromo" - }, - "coo": { - "english_name": "Comox" - }, - "msh": { - "english_name": "Malagasy, Masikoro" - }, - "nmh": { - "english_name": "Naga, Monsang" - }, - "haf": { - "english_name": "Haiphong Sign Language" - }, - "xau": { - "english_name": "Kauwera" - }, - "dhn": { - "english_name": "Dhanki" - }, - "swn": { - "english_name": "Sawknah" - }, - "ten": { - "english_name": "Tama (Colombia)" - }, - "hmq": { - "english_name": "Miao, Eastern Qiandong" - }, - "pgi": { - "english_name": "Pagi" - }, - "hmk": { - "english_name": "Maek" - }, - "xkb": { - "english_name": "Nago, Northern" - }, - "txi": { - "english_name": "Ikpeng" - }, - "rod": { - "english_name": "Rogo" - }, - "mqy": { - "english_name": "Manggarai" - }, - "bch": { - "english_name": "Bariai" - }, - "dde": { - "english_name": "Doondo" - }, - "llk": { - "english_name": "Lelak" - }, - "poi": { - "english_name": "Popoluca, Highland" - }, - "wgb": { - "english_name": "Wagawaga" - }, - "gwd": { - "english_name": "Gawwada" - }, - "kw": { - "english_name": "Cornish" - }, - "btd": { - "english_name": "Batak Dairi" - }, - "eza": { - "english_name": "Ezaa" - }, - "tma": { - "english_name": "Tama (Chad)" - }, - "adq": { - "english_name": "Adangbe" - }, - "xaq": { - "english_name": "Aquitanian" - }, - "btp": { - "english_name": "Budibud" - }, - "xka": { - "english_name": "Kalkoti" - }, - "tnz": { - "english_name": "Tonga (Thailand)" - }, - "kwn": { - "english_name": "Kwangali" - }, - "msn": { - "english_name": "Vurës" - }, - "awn": { - "english_name": "Awngi" - }, - "kys": { - "english_name": "Kayan, Baram" - }, - "key": { - "english_name": "Kupia" - }, - "ned": { - "english_name": "Nde-Gbite" - }, - "inz": { - "english_name": "Ineseño" - }, - "af": { - "english_name": "Afrikaans", - "name": "Afrikaans" - }, - "apu": { - "english_name": "Apurinã" - }, - "xes": { - "english_name": "Kesawai" - }, - "ayp": { - "english_name": "Arabic, North Mesopotamian" - }, - "bls": { - "english_name": "Balaesang" - }, - "dry": { - "english_name": "Darai" - }, - "pnc": { - "english_name": "Pannei" - }, - "bsq": { - "english_name": "Bassa" - }, - "xlb": { - "english_name": "Loup B" - }, - "hai": { - "english_name": "Haida" - }, - "ems": { - "english_name": "Yupik, Pacific Gulf" - }, - "vsi": { - "english_name": "Moldova Sign Language" - }, - "ino": { - "english_name": "Inoke-Yate" - }, - "ibm": { - "english_name": "Agoi" - }, - "bjs": { - "english_name": "Bajan" - }, - "atd": { - "english_name": "Manobo, Ata" - }, - "dso": { - "english_name": "Desiya" - }, - "blw": { - "english_name": "Balangao" - }, - "bdd": { - "english_name": "Bunama" - }, - "ahp": { - "english_name": "Aizi, Aproumu" - }, - "sys": { - "english_name": "Sinyar" - }, - "kge": { - "english_name": "Komering" - }, - "ise": { - "english_name": "Italian Sign Language" - }, - "cse": { - "english_name": "Czech Sign Language" - }, - "ru": { - "english_name": "Russian", - "name": "русский" - }, - "ady": { - "english_name": "Adyghe" - }, - "liu": { - "english_name": "Logorik" - }, - "aiq": { - "english_name": "Aimaq" - }, - "eo": { - "english_name": "Esperanto", - "name": "Esperanto" - }, - "tsr": { - "english_name": "Akei" - }, - "sxk": { - "english_name": "Kalapuya, Southern" - }, - "bma": { - "english_name": "Lame" - }, - "kuj": { - "english_name": "Kuria" - }, - "yuc": { - "english_name": "Yuchi" - }, - "jia": { - "english_name": "Jina" - }, - "tcf": { - "english_name": "Me'phaa, Malinaltepec" - }, - "nuf": { - "english_name": "Nusu" - }, - "bay": { - "english_name": "Batuley" - }, - "bkf": { - "english_name": "Beeke" - }, - "mfo": { - "english_name": "Mbe" - }, - "ndk": { - "english_name": "Ndaka" - }, - "rpt": { - "english_name": "Rapting" - }, - "kag": { - "english_name": "Kajaman" - }, - "phq": { - "english_name": "Phana'" - }, - "yom": { - "english_name": "Yombe" - }, - "cni": { - "english_name": "Asháninka" - }, - "yuq": { - "english_name": "Yuqui" - }, - "cag": { - "english_name": "Nivaclé" - }, - "kbg": { - "english_name": "Khamba" - }, - "alq": { - "english_name": "Algonquin" - }, - "ruy": { - "english_name": "Mala (Nigeria)" - }, - "tuv": { - "english_name": "Turkana" - }, - "gmu": { - "english_name": "Gumalu" - }, - "lwm": { - "english_name": "Laomian" - }, - "mh": { - "english_name": "Marshallese" - }, - "myf": { - "english_name": "Bambassi" - }, - "swt": { - "english_name": "Sawila" - }, - "tzx": { - "english_name": "Tabriak" - }, - "gul": { - "english_name": "Creole English, Sea Island" - }, - "mtr": { - "english_name": "Mewari" - }, - "bmu": { - "english_name": "Somba-Siawari" - }, - "ebk": { - "english_name": "Bontok, Eastern" - }, - "esq": { - "english_name": "Esselen" - }, - "tet": { - "english_name": "Tetum" - }, - "mog": { - "english_name": "Mongondow" - }, - "nck": { - "english_name": "Nakara" - }, - "tyx": { - "english_name": "Teke-Tyee" - }, - "ute": { - "english_name": "Ute-Southern Paiute" - }, - "ndz": { - "english_name": "Ndogo" - }, - "gob": { - "english_name": "Playero" - }, - "bky": { - "english_name": "Bokyi" - }, - "bid": { - "english_name": "Bidiyo" - }, - "beb": { - "english_name": "Bebele" - }, - "okh": { - "english_name": "Koresh-e Rostam" - }, - "kea": { - "english_name": "Kabuverdianu" - }, - "crn": { - "english_name": "Cora, El Nayar" - }, - "ntp": { - "english_name": "Tepehuan, Northern" - }, - "kxi": { - "english_name": "Murut, Keningau" - }, - "avl": { - "english_name": "Arabic, Eastern Egyptian Bedawi" - }, - "xpp": { - "english_name": "Puyo-Paekche" - }, - "vkm": { - "english_name": "Kamakan" - }, - "hoh": { - "english_name": "Hobyót" - }, - "bgr": { - "english_name": "Chin, Bawm" - }, - "tuc": { - "english_name": "Mutu" - }, - "ulf": { - "english_name": "Usku" - }, - "mgw": { - "english_name": "Matumbi" - }, - "kbe": { - "english_name": "Kanju" - }, - "nrn": { - "english_name": "Norn" - }, - "gbk": { - "english_name": "Gaddi" - }, - "ie": { - "english_name": "Interlingue" - }, - "ium": { - "english_name": "Mien, Iu" - }, - "kde": { - "english_name": "Makonde" - }, - "pcm": { - "english_name": "Pidgin, Nigerian" - }, - "bdm": { - "english_name": "Buduma" - }, - "mqa": { - "english_name": "Maba (Indonesia)" - }, - "unu": { - "english_name": "Unubahe" - }, - "rna": { - "english_name": "Runa" - }, - "rmx": { - "english_name": "Romam" - }, - "srg": { - "english_name": "Sulod" - }, - "mui": { - "english_name": "Musi" - }, - "tef": { - "english_name": "Teressa" - }, - "mhm": { - "english_name": "Makhuwa-Moniga" - }, - "bnn": { - "english_name": "Bunun" - }, - "ppl": { - "english_name": "Pipil" - }, - "llp": { - "english_name": "Efate, North" - }, - "crl": { - "english_name": "Cree, Northern East" - }, - "awb": { - "english_name": "Awa (Papua New Guinea)" - }, - "lek": { - "english_name": "Leipon" - }, - "klh": { - "english_name": "Weliki" - }, - "nuc": { - "english_name": "Nukuini" - }, - "tpe": { - "english_name": "Tippera" - }, - "dyn": { - "english_name": "Dyangadi" - }, - "mxc": { - "english_name": "Manyika" - }, - "mjt": { - "english_name": "Sauria Paharia" - }, - "sbt": { - "english_name": "Kimki" - }, - "tal": { - "english_name": "Tal" - }, - "gva": { - "english_name": "Guana (Paraguay)" - }, - "sue": { - "english_name": "Suena" - }, - "aod": { - "english_name": "Andarum" - }, - "waw": { - "english_name": "Waiwai" - }, - "chm": { - "english_name": "Mari (Russia)" - }, - "jmw": { - "english_name": "Mouwase" - }, - "jvd": { - "english_name": "Javindo" - }, - "uby": { - "english_name": "Ubykh" - }, - "afg": { - "english_name": "Afghan Sign Language" - }, - "lbc": { - "english_name": "Lakkia" - }, - "bxw": { - "english_name": "Bankagooma" - }, - "ayg": { - "english_name": "Ginyanga" - }, - "syw": { - "english_name": "Kagate" - }, - "ho": { - "english_name": "Hiri Motu" - }, - "yhd": { - "english_name": "Arabic, Judeo-Iraqi" - }, - "ylo": { - "english_name": "Yi, Naluo" - }, - "weg": { - "english_name": "Wergaia" - }, - "bts": { - "english_name": "Batak Simalungun" - }, - "fil": { - "english_name": "Filipino" - }, - "jmd": { - "english_name": "Yamdena" - }, - "svb": { - "english_name": "Ulau-Suain" - }, - "laf": { - "english_name": "Lafofa" - }, - "tgu": { - "english_name": "Tanggu" - }, - "hab": { - "english_name": "Hanoi Sign Language" - }, - "tye": { - "english_name": "Kyanga" - }, - "bud": { - "english_name": "Ntcham" - }, - "enr": { - "english_name": "Emumu" - }, - "bss": { - "english_name": "Akoose" - }, - "gv": { - "english_name": "Manx" - }, - "kxa": { - "english_name": "Kairiru" - }, - "wyb": { - "english_name": "Wangaaybuwan-Ngiyambaa" - }, - "oht": { - "english_name": "Hittite, Old" - }, - "nhw": { - "english_name": "Nahuatl, Western Huasteca" - }, - "kck": { - "english_name": "Kalanga" - }, - "mnz": { - "english_name": "Moni" - }, - "djb": { - "english_name": "Djinba" - }, - "pyu": { - "english_name": "Puyuma" - }, - "trp": { - "english_name": "Kok Borok" - }, - "mem": { - "english_name": "Mangala" - }, - "kqz": { - "english_name": "Korana" - }, - "han": { - "english_name": "Hangaza" - }, - "wil": { - "english_name": "Wilawila" - }, - "sou": { - "english_name": "Thai, Southern" - }, - "kot": { - "english_name": "Lagwan" - }, - "mmx": { - "english_name": "Madak" - }, - "huo": { - "english_name": "Hu" - }, - "kkz": { - "english_name": "Kaska" - }, - "isk": { - "english_name": "Ishkashimi" - }, - "rm": { - "english_name": "Romansh" - }, - "lbk": { - "english_name": "Bontok, Central" - }, - "ruc": { - "english_name": "Ruuli" - }, - "grt": { - "english_name": "Garo" - }, - "knl": { - "english_name": "Keninjal" - }, - "zkh": { - "english_name": "Khorezmian" - }, - "kxv": { - "english_name": "Kuvi" - }, - "yyu": { - "english_name": "Yau (Sandaun Province)" - }, - "ysy": { - "english_name": "Sanie" - }, - "nul": { - "english_name": "Nusa Laut" - }, - "wwa": { - "english_name": "Waama" - }, - "ppa": { - "english_name": "Pao" - }, - "xoo": { - "english_name": "Xukurú" - }, - "gbh": { - "english_name": "Gbe, Defi" - }, - "kty": { - "english_name": "Kango (Bas-Uélé District)" - }, - "com": { - "english_name": "Comanche" - }, - "ksj": { - "english_name": "Uare" - }, - "pyx": { - "english_name": "Pyu (Myanmar)" - }, - "csc": { - "english_name": "Catalan Sign Language" - }, - "kdg": { - "english_name": "Seba" - }, - "bgf": { - "english_name": "Bangandu" - }, - "tda": { - "english_name": "Tagdal" - }, - "kmf": { - "english_name": "Kare (Papua New Guinea)" - }, - "brw": { - "english_name": "Bellari" - }, - "gap": { - "english_name": "Gal" - }, - "kqy": { - "english_name": "Koorete" - }, - "evh": { - "english_name": "Uvbie" - }, - "tuf": { - "english_name": "Tunebo, Central" - }, - "sdo": { - "english_name": "Bidayuh, Bukar-Sadung" - }, - "zor": { - "english_name": "Zoque, Rayón" - }, - "zdj": { - "english_name": "Comorian, Ngazidja" - }, - "ahm": { - "english_name": "Aizi, Mobumrin" - }, - "got": { - "english_name": "Gothic" - }, - "bly": { - "english_name": "Notre" - }, - "cso": { - "english_name": "Chinantec, Sochiapam" - }, - "mfe": { - "english_name": "Morisyen" - }, - "yty": { - "english_name": "Yatay" - }, - "wla": { - "english_name": "Walio" - }, - "pum": { - "english_name": "Puma" - }, - "dbr": { - "english_name": "Dabarre" - }, - "frc": { - "english_name": "French, Cajun" - }, - "nzs": { - "english_name": "New Zealand Sign Language" - }, - "boy": { - "english_name": "Bodo (Central African Republic)" - }, - "dgz": { - "english_name": "Daga" - }, - "did": { - "english_name": "Didinga" - }, - "vun": { - "english_name": "Vunjo" - }, - "tfi": { - "english_name": "Gbe, Tofin" - }, - "pnv": { - "english_name": "Pinigura" - }, - "pud": { - "english_name": "Punan Aput" - }, - "zms": { - "english_name": "Mbesa" - }, - "dhg": { - "english_name": "Djangu" - }, - "aaw": { - "english_name": "Solong" - }, - "pbn": { - "english_name": "Kpasam" - }, - "ato": { - "english_name": "Atong" - }, - "par": { - "english_name": "Panamint" - }, - "awm": { - "english_name": "Arawum" - }, - "loq": { - "english_name": "Lobala" - }, - "nni": { - "english_name": "Nuaulu, North" - }, - "vmu": { - "english_name": "Muluridyi" - }, - "wnp": { - "english_name": "Wanap" - }, - "moz": { - "english_name": "Mukulu" - }, - "ptv": { - "english_name": "Port Vato" - }, - "asv": { - "english_name": "Asoa" - }, - "sja": { - "english_name": "Epena" - }, - "itz": { - "english_name": "Itzá" - }, - "xsp": { - "english_name": "Silopi" - }, - "suw": { - "english_name": "Sumbwa" - }, - "lkh": { - "english_name": "Lakha" - }, - "rge": { - "english_name": "Romano-Greek" - }, - "hu": { - "english_name": "Hungarian", - "name": "magyar" - }, - "muc": { - "english_name": "Ajumbu" - }, - "tl": { - "english_name": "Tagalog" - }, - "kqa": { - "english_name": "Mum" - }, - "dbm": { - "english_name": "Duguri" - }, - "gnh": { - "english_name": "Lere" - }, - "ccr": { - "english_name": "Cacaopera" - }, - "ehu": { - "english_name": "Ehueun" - }, - "lgm": { - "english_name": "Lega-Mwenga" - }, - "fa": { - "english_name": "Persian", - "name": "فارسی" - }, - "mdw": { - "english_name": "Mbosi" - }, - "frp": { - "english_name": "Arpitan" - }, - "kvu": { - "english_name": "Karen, Yinbaw" - }, - "ria": { - "english_name": "Riang (India)" - }, - "aag": { - "english_name": "Ambrak" - }, - "stk": { - "english_name": "Arammba" - }, - "pdn": { - "english_name": "Podena" - }, - "khp": { - "english_name": "Kapori" - }, - "byp": { - "english_name": "Bumaji" - }, - "lol": { - "english_name": "Mongo" - }, - "jge": { - "english_name": "Judeo-Georgian" - }, - "mlm": { - "english_name": "Mulam" - }, - "smv": { - "english_name": "Samvedi" - }, - "akw": { - "english_name": "Akwa" - }, - "gup": { - "english_name": "Gunwinggu" - }, - "lbb": { - "english_name": "Label" - }, - "jmb": { - "english_name": "Zumbun" - }, - "cng": { - "english_name": "Qiang, Northern" - }, - "kcg": { - "english_name": "Tyap" - }, - "ddn": { - "english_name": "Dendi (Benin)" - }, - "ztu": { - "english_name": "Zapotec, Güilá" - }, - "bmz": { - "english_name": "Baramu" - }, - "aui": { - "english_name": "Anuki" - }, - "tac": { - "english_name": "Tarahumara, Lowland" - }, - "ggw": { - "english_name": "Gogodala" - }, - "mmn": { - "english_name": "Mamanwa" - }, - "mos": { - "english_name": "Mossi" - }, - "tza": { - "english_name": "Tanzanian Sign Language" - }, - "mzx": { - "english_name": "Mawayana" - }, - "bfc": { - "english_name": "Bai, Northern" - }, - "ndd": { - "english_name": "Nde-Nsele-Nta" - }, - "mvs": { - "english_name": "Massep" - }, - "cbu": { - "english_name": "Candoshi-Shapra" - }, - "gym": { - "english_name": "Ngäbere" - }, - "wle": { - "english_name": "Wolane" - }, - "aoi": { - "english_name": "Anindilyakwa" - }, - "xln": { - "english_name": "Alanic" - }, - "saw": { - "english_name": "Sawi" - }, - "mvy": { - "english_name": "Kohistani, Indus" - }, - "yok": { - "english_name": "Yokuts" - }, - "tyv": { - "english_name": "Tuvinian" - }, - "ogg": { - "english_name": "Ogbogolo" - }, - "bps": { - "english_name": "Blaan, Sarangani" - }, - "lsp": { - "english_name": "Panamanian Sign Language" - }, - "ibe": { - "english_name": "Akpes" - }, - "xsb": { - "english_name": "Sambal" - }, - "qvi": { - "english_name": "Quichua, Imbabura Highland" - }, - "huu": { - "english_name": "Huitoto, Murui" - }, - "ati": { - "english_name": "Attié" - }, - "gli": { - "english_name": "Guliguli" - }, - "bcd": { - "english_name": "Babar, North" - }, - "ysc": { - "english_name": "Yassic" - }, - "omk": { - "english_name": "Omok" - }, - "xgr": { - "english_name": "Garza" - }, - "drq": { - "english_name": "Dura" - }, - "alr": { - "english_name": "Alutor" - }, - "nhn": { - "english_name": "Nahuatl, Central" - }, - "rjg": { - "english_name": "Rajong" - }, - "lha": { - "english_name": "Laha (Viet Nam)" - }, - "pcc": { - "english_name": "Bouyei" - }, - "mwn": { - "english_name": "Nyamwanga" - }, - "xti": { - "english_name": "Mixtec, Sinicahua" - }, - "xnz": { - "english_name": "Kenzi" - }, - "xba": { - "english_name": "Kamba (Brazil)" - }, - "tdi": { - "english_name": "Tomadino" - }, - "apz": { - "english_name": "Safeyoka" - }, - "tmi": { - "english_name": "Tutuba" - }, - "amr": { - "english_name": "Amarakaeri" - }, - "fun": { - "english_name": "Fulniô" - }, - "fwe": { - "english_name": "Fwe" - }, - "ole": { - "english_name": "Olekha" - }, - "kpg": { - "english_name": "Kapingamarangi" - }, - "brz": { - "english_name": "Bilbil" - }, - "prt": { - "english_name": "Phai" - }, - "bcn": { - "english_name": "Bali (Nigeria)" - }, - "sis": { - "english_name": "Siuslaw" - }, - "bfw": { - "english_name": "Bondo" - }, - "lej": { - "english_name": "Lengola" - }, - "mhe": { - "english_name": "Besisi" - }, - "lwt": { - "english_name": "Lewotobi" - }, - "sih": { - "english_name": "Zire" - }, - "bew": { - "english_name": "Betawi" - }, - "tjs": { - "english_name": "Tujia, Southern" - }, - "gzi": { - "english_name": "Gazi" - }, - "mxd": { - "english_name": "Modang" - }, - "diy": { - "english_name": "Diuwe" - }, - "xmr": { - "english_name": "Meroitic" - }, - "cvg": { - "english_name": "Chug" - }, - "bwi": { - "english_name": "Baniwa" - }, - "hml": { - "english_name": "Hmong, Luopohe" - }, - "bcy": { - "english_name": "Bacama" - }, - "wxa": { - "english_name": "Waxianghua" - }, - "kvy": { - "english_name": "Karen, Yintale" - }, - "nap": { - "english_name": "Neapolitan" - }, - "thw": { - "english_name": "Thudam" - }, - "crz": { - "english_name": "Cruzeño" - }, - "xsa": { - "english_name": "Sabaean" - }, - "xrn": { - "english_name": "Arin" - }, - "int": { - "english_name": "Intha" - }, - "anr": { - "english_name": "Andh" - }, - "anl": { - "english_name": "Chin, Anu-Hkongso" - }, - "bbn": { - "english_name": "Uneapa" - }, - "zah": { - "english_name": "Zangwal" - }, - "pod": { - "english_name": "Ponares" - }, - "cub": { - "english_name": "Cubeo" - }, - "xtr": { - "english_name": "Tripuri, Early" - }, - "gdm": { - "english_name": "Laal" - }, - "gid": { - "english_name": "Gidar" - }, - "syy": { - "english_name": "Al-Sayyid Bedouin Sign Language" - }, - "msf": { - "english_name": "Mekwei" - }, - "yas": { - "english_name": "Nugunu (Cameroon)" - }, - "nsn": { - "english_name": "Nehan" - }, - "bkx": { - "english_name": "Baikeno" - }, - "gop": { - "english_name": "Yeretuar" - }, - "hor": { - "english_name": "Horo" - }, - "xks": { - "english_name": "Kumbewaha" - }, - "urb": { - "english_name": "Urubú-Kaapor" - }, - "ata": { - "english_name": "Pele-Ata" - }, - "zmq": { - "english_name": "Mituku" - }, - "cab": { - "english_name": "Garifuna" - }, - "lhm": { - "english_name": "Lhomi" - }, - "mxv": { - "english_name": "Mixtec, Metlatónoc" - }, - "klt": { - "english_name": "Nukna" - }, - "byx": { - "english_name": "Qaqet" - }, - "yig": { - "english_name": "Nasu, Wusa" - }, - "kzc": { - "english_name": "Kulango, Bondoukou" - }, - "bbu": { - "english_name": "Kulung (Nigeria)" - }, - "xlp": { - "english_name": "Lepontic" - }, - "ire": { - "english_name": "Iresim" - }, - "jya": { - "english_name": "Jiarong" - }, - "niw": { - "english_name": "Nimo" - }, - "loh": { - "english_name": "Narim" - }, - "jkm": { - "english_name": "Karen, Mobwa" - }, - "wra": { - "english_name": "Warapu" - }, - "zmg": { - "english_name": "Marti Ke" - }, - "asu": { - "english_name": "Asurini, Tocantins" - }, - "bpi": { - "english_name": "Bagupi" - }, - "wli": { - "english_name": "Waioli" - }, - "zgh": { - "english_name": "Tamazight, Standard Moroccan" - }, - "keb": { - "english_name": "Kélé" - }, - "rgs": { - "english_name": "Roglai, Southern" - }, - "prg": { - "english_name": "Prussian" - }, - "yuz": { - "english_name": "Yuracare" - }, - "dmy": { - "english_name": "Demta" - }, - "sgr": { - "english_name": "Sangisari" - }, - "gic": { - "english_name": "Gail" - }, - "org": { - "english_name": "Oring" - }, - "mve": { - "english_name": "Marwari (Pakistan)" - }, - "amx": { - "english_name": "Anmatyerre" - }, - "kit": { - "english_name": "Agob" - }, - "za": { - "english_name": "Zhuang" - }, - "ndx": { - "english_name": "Nduga" - }, - "tlo": { - "english_name": "Talodi" - }, - "lnh": { - "english_name": "Lanoh" - }, - "mow": { - "english_name": "Moi (Congo)" - }, - "mi": { - "english_name": "Maori", - "name": "Reo Māori" - }, - "hlt": { - "english_name": "Chin, Matu" - }, - "kst": { - "english_name": "Winyé" - }, - "ani": { - "english_name": "Andi" - }, - "khg": { - "english_name": "Tibetan, Khams" - }, - "noz": { - "english_name": "Nayi" - }, - "hvc": { - "english_name": "Haitian Vodoun Culture Language" - }, - "wgu": { - "english_name": "Wirangu" - }, - "usu": { - "english_name": "Uya" - }, - "sma": { - "english_name": "Sami, Southern" - }, - "cjp": { - "english_name": "Cabécar" - }, - "tpn": { - "english_name": "Tupinambá" - }, - "nsd": { - "english_name": "Nisu, Southern" - }, - "kmb": { - "english_name": "Kimbundu" - }, - "bru": { - "english_name": "Bru, Eastern" - }, - "bsj": { - "english_name": "Bangwinji" - }, - "bdg": { - "english_name": "Bonggi" - }, - "mnf": { - "english_name": "Mundani" - }, - "bjj": { - "english_name": "Kanauji" - }, - "nto": { - "english_name": "Ntomba" - }, - "hni": { - "english_name": "Hani" - }, - "xbi": { - "english_name": "Kombio" - }, - "yei": { - "english_name": "Yeni" - }, - "rai": { - "english_name": "Ramoaaina" - }, - "skq": { - "english_name": "Sininkere" - }, - "enm": { - "english_name": "English, Middle (1100-1500)" - }, - "fse": { - "english_name": "Finnish Sign Language" - }, - "dlm": { - "english_name": "Dalmatian" - }, - "meb": { - "english_name": "Ikobi" - }, - "dae": { - "english_name": "Duupa" - }, - "aol": { - "english_name": "Alor" - }, - "eiv": { - "english_name": "Askopan" - }, - "knd": { - "english_name": "Konda" - }, - "avb": { - "english_name": "Avau" - }, - "jyy": { - "english_name": "Jaya" - }, - "gbq": { - "english_name": "Gbaya-Bozoum" - }, - "are": { - "english_name": "Arrarnta, Western" - }, - "uka": { - "english_name": "Kaburi" - }, - "lnw": { - "english_name": "Lanima" - }, - "xhr": { - "english_name": "Hernican" - }, - "wsr": { - "english_name": "Owenia" - }, - "aee": { - "english_name": "Pashayi, Northeast" - }, - "nqg": { - "english_name": "Nago, Southern" - }, - "cbi": { - "english_name": "Chachi" - }, - "bhi": { - "english_name": "Bhilali" - }, - "xuo": { - "english_name": "Kuo" - }, - "zpc": { - "english_name": "Zapotec, Choapan" - }, - "nwx": { - "english_name": "Newar, Middle" - }, - "psw": { - "english_name": "Port Sandwich" - }, - "bqb": { - "english_name": "Bagusa" - }, - "bgz": { - "english_name": "Banggai" - }, - "nla": { - "english_name": "Ngombale" - }, - "jah": { - "english_name": "Jah Hut" - }, - "jbj": { - "english_name": "Arandai" - }, - "cgk": { - "english_name": "Chocangacakha" - }, - "xtc": { - "english_name": "Katcha-Kadugli-Miri" - }, - "nmq": { - "english_name": "Nambya" - }, - "xmj": { - "english_name": "Majera" - }, - "vah": { - "english_name": "Varhadi-Nagpuri" - }, - "dtp": { - "english_name": "Dusun, Central" - }, - "fkv": { - "english_name": "Finnish, Kven" - }, - "yim": { - "english_name": "Naga, Yimchungru" - }, - "rup": { - "english_name": "Romanian, Macedo-" - }, - "mry": { - "english_name": "Mandaya" - }, - "bhs": { - "english_name": "Buwal" - }, - "neg": { - "english_name": "Negidal" - }, - "kmz": { - "english_name": "Khorasani Turkish" - }, - "gaz": { - "english_name": "Oromo, West Central" - }, - "gue": { - "english_name": "Gurinji" - }, - "nnz": { - "english_name": "Nda'nda'" - }, - "ngb": { - "english_name": "Ngbandi, Northern" - }, - "bxr": { - "english_name": "Buriat, Russia" - }, - "mrh": { - "english_name": "Chin, Mara" - }, - "akx": { - "english_name": "Aka-Kede" - }, - "wo": { - "english_name": "Wolof" - }, - "nov": { - "english_name": "Novial" - }, - "uya": { - "english_name": "Doko-Uyanga" - }, - "fqs": { - "english_name": "Fas" - }, - "ngl": { - "english_name": "Lomwe" - }, - "bac": { - "english_name": "Badui" - }, - "lay": { - "english_name": "Lama (Myanmar)" - }, - "tnp": { - "english_name": "Whitesands" - }, - "bxm": { - "english_name": "Buriat, Mongolia" - }, - "nnv": { - "english_name": "Nugunu (Australia)" - }, - "xsu": { - "english_name": "Sanumá" - }, - "rin": { - "english_name": "Nungu" - }, - "cma": { - "english_name": "Maa" - }, - "xsy": { - "english_name": "Saisiyat" - }, - "dby": { - "english_name": "Dibiyaso" - }, - "snm": { - "english_name": "Ma'di, Southern" - }, - "knv": { - "english_name": "Tabo" - }, - "mvp": { - "english_name": "Duri" - }, - "kwd": { - "english_name": "Kwaio" - }, - "mqg": { - "english_name": "Malay, Kota Bangun Kutai" - }, - "elo": { - "english_name": "El Molo" - }, - "ukw": { - "english_name": "Ukwuani-Aboh-Ndoni" - }, - "tud": { - "english_name": "Tuxá" - }, - "kbh": { - "english_name": "Camsá" - }, - "xlc": { - "english_name": "Lycian" - }, - "bpx": { - "english_name": "Bareli, Palya" - }, - "hav": { - "english_name": "Havu" - }, - "nng": { - "english_name": "Naga, Maring" - }, - "cth": { - "english_name": "Chin, Thaiphum" - }, - "tlx": { - "english_name": "Khehek" - }, - "efa": { - "english_name": "Efai" - }, - "ael": { - "english_name": "Ambele" - }, - "byk": { - "english_name": "Biao" - }, - "lrz": { - "english_name": "Lemerig" - }, - "bko": { - "english_name": "Kwa'" - }, - "isc": { - "english_name": "Isconahua" - }, - "pkb": { - "english_name": "Pokomo" - }, - "mcy": { - "english_name": "Watut, South" - }, - "lov": { - "english_name": "Lopi" - }, - "loc": { - "english_name": "Inonhan" - }, - "xlo": { - "english_name": "Loup A" - }, - "stw": { - "english_name": "Satawalese" - }, - "lww": { - "english_name": "Lewo" - }, - "sny": { - "english_name": "Saniyo-Hiyewe" - }, - "ypm": { - "english_name": "Phuma" - }, - "ait": { - "english_name": "Arikem" - }, - "lgz": { - "english_name": "Ligenza" - }, - "dun": { - "english_name": "Dusun Deyah" - }, - "kvi": { - "english_name": "Kwang" - }, - "wtw": { - "english_name": "Wotu" - }, - "tzm": { - "english_name": "Tamazight, Central Atlas" - }, - "nab": { - "english_name": "Nambikuára, Southern" - }, - "brr": { - "english_name": "Birao" - }, - "xdk": { - "english_name": "Dharuk" - }, - "uz": { - "english_name": "Uzbek" - }, - "hvk": { - "english_name": "Haveke" - }, - "bwg": { - "english_name": "Barwe" - }, - "svc": { - "english_name": "Creole English, Vincentian" - }, - "amf": { - "english_name": "Hamer-Banna" - }, - "adz": { - "english_name": "Adzera" - }, - "ilv": { - "english_name": "Ilue" - }, - "ybl": { - "english_name": "Yukuben" - }, - "tae": { - "english_name": "Tariana" - }, - "qwm": { - "english_name": "Kuman (Russia)" - }, - "oro": { - "english_name": "Orokolo" - }, - "pnj": { - "english_name": "Pinjarup" - }, - "udi": { - "english_name": "Udi" - }, - "kwj": { - "english_name": "Kwanga" - }, - "keq": { - "english_name": "Kamar" - }, - "ltn": { - "english_name": "Latundê" - }, - "ppo": { - "english_name": "Folopa" - }, - "blg": { - "english_name": "Balau" - }, - "xtt": { - "english_name": "Mixtec, Tacahua" - }, - "aww": { - "english_name": "Awun" - }, - "wub": { - "english_name": "Wunambal" - }, - "dwr": { - "english_name": "Dawro" - }, - "xhu": { - "english_name": "Hurrian" - }, - "pca": { - "english_name": "Popoloca, Santa Inés Ahuatempan" - }, - "sos": { - "english_name": "Seeku" - }, - "mfz": { - "english_name": "Mabaan" - }, - "jel": { - "english_name": "Yelmek" - }, - "bns": { - "english_name": "Bundeli" - }, - "nqk": { - "english_name": "Ede Nago, Kura" - }, - "mik": { - "english_name": "Mikasuki" - }, - "peg": { - "english_name": "Pengo" - }, - "sbj": { - "english_name": "Surbakhal" - }, - "cpx": { - "english_name": "Chinese, Pu-Xian" - }, - "tem": { - "english_name": "Timne" - }, - "mxm": { - "english_name": "Meramera" - }, - "yaj": { - "english_name": "Banda-Yangere" - }, - "ltc": { - "english_name": "Chinese, Late Middle" - }, - "zro": { - "english_name": "Záparo" - }, - "duk": { - "english_name": "Uyajitaya" - }, - "tuo": { - "english_name": "Tucano" - }, - "itv": { - "english_name": "Itawit" - }, - "nkn": { - "english_name": "Nkangala" - }, - "kdu": { - "english_name": "Kadaru" - }, - "xwl": { - "english_name": "Gbe, Western Xwla" - }, - "jak": { - "english_name": "Jakun" - }, - "ik": { - "english_name": "Inupiaq" - }, - "tln": { - "english_name": "Talondo'" - }, - "asb": { - "english_name": "Assiniboine" - }, - "gml": { - "english_name": "German, Middle Low" - }, - "gjk": { - "english_name": "Koli, Kachi" - }, - "pls": { - "english_name": "Popoloca, San Marcos Tlalcoyalco" - }, - "mkw": { - "english_name": "Kituba (Congo)" - }, - "csz": { - "english_name": "Coos" - }, - "won": { - "english_name": "Wongo" - }, - "iou": { - "english_name": "Tuma-Irumu" - }, - "rml": { - "english_name": "Romani, Baltic" - }, - "idu": { - "english_name": "Idoma" - }, - "ons": { - "english_name": "Ono" - }, - "mhr": { - "english_name": "Mari, Eastern" - }, - "psh": { - "english_name": "Pashayi, Southwest" - }, - "kch": { - "english_name": "Vono" - }, - "tyu": { - "english_name": "Kua" - }, - "pir": { - "english_name": "Piratapuyo" - }, - "xao": { - "english_name": "Khao" - }, - "dio": { - "english_name": "Dibo" - }, - "bhx": { - "english_name": "Bhalay" - }, - "lag": { - "english_name": "Langi" - }, - "rmo": { - "english_name": "Romani, Sinte" - }, - "noh": { - "english_name": "Nomu" - }, - "rop": { - "english_name": "Kriol" - }, - "cou": { - "english_name": "Wamey" - }, - "kra": { - "english_name": "Kumhali" - }, - "gmy": { - "english_name": "Greek, Mycenaean" - }, - "lch": { - "english_name": "Luchazi" - }, - "big": { - "english_name": "Biangai" - }, - "kzu": { - "english_name": "Kayupulau" - }, - "wly": { - "english_name": "Waling" - }, - "bmn": { - "english_name": "Bina (Papua New Guinea)" - }, - "sbx": { - "english_name": "Seberuang" - }, - "hr": { - "english_name": "Croatian", - "name": "hrvatski" - }, - "szn": { - "english_name": "Sula" - }, - "lid": { - "english_name": "Nyindrou" - }, - "oks": { - "english_name": "Oko-Eni-Osayen" - }, - "pim": { - "english_name": "Powhatan" - }, - "kwb": { - "english_name": "Kwa" - }, - "mtk": { - "english_name": "Mbe'" - }, - "bqw": { - "english_name": "Buru (Nigeria)" - }, - "heg": { - "english_name": "Helong" - }, - "azd": { - "english_name": "Nahuatl, Eastern Durango" - }, - "tei": { - "english_name": "Torricelli" - }, - "bxj": { - "english_name": "Bayungu" - }, - "xch": { - "english_name": "Chemakum" - }, - "xmn": { - "english_name": "Persian, Manichaean Middle" - }, - "xra": { - "english_name": "Krahô" - }, - "eyo": { - "english_name": "Keiyo" - }, - "gta": { - "english_name": "Guató" - }, - "oku": { - "english_name": "Oku" - }, - "rme": { - "english_name": "Angloromani" - }, - "mwh": { - "english_name": "Mouk-Aria" - }, - "qxl": { - "english_name": "Quichua, Salasaca Highland" - }, - "qus": { - "english_name": "Quichua, Santiago del Estero" - }, - "doo": { - "english_name": "Dongo" - }, - "ler": { - "english_name": "Lenkau" - }, - "fsl": { - "english_name": "French Sign Language" - }, - "lld": { - "english_name": "Ladin" - }, - "sci": { - "english_name": "Creole Malay, Sri Lankan" - }, - "aeq": { - "english_name": "Aer" - }, - "kus": { - "english_name": "Kusaal" - }, - "bki": { - "english_name": "Baki" - }, - "tpy": { - "english_name": "Trumai" - }, - "neo": { - "english_name": "Ná-Meo" - }, - "aaq": { - "english_name": "Abnaki, Eastern" - }, - "bvx": { - "english_name": "Dibole" - }, - "jma": { - "english_name": "Dima" - }, - "ncx": { - "english_name": "Nahuatl, Central Puebla" - }, - "ruk": { - "english_name": "Che" - }, - "nce": { - "english_name": "Yale" - }, - "xmx": { - "english_name": "Maden" - }, - "zna": { - "english_name": "Zan Gula" - }, - "mbv": { - "english_name": "Mbulungish" - }, - "apd": { - "english_name": "Arabic, Sudanese" - }, - "ung": { - "english_name": "Ngarinyin" - }, - "zpg": { - "english_name": "Zapotec, Guevea De Humboldt" - }, - "kuw": { - "english_name": "Kpagua" - }, - "ask": { - "english_name": "Ashkun" - }, - "wow": { - "english_name": "Wawonii" - }, - "lmw": { - "english_name": "Miwok, Lake" - }, - "xvo": { - "english_name": "Volscian" - }, - "njl": { - "english_name": "Njalgulgule" - }, - "nct": { - "english_name": "Naga, Chothe" - }, - "ure": { - "english_name": "Uru" - }, - "typ": { - "english_name": "Thaypan" - }, - "lre": { - "english_name": "Laurentian" - }, - "xtn": { - "english_name": "Mixtec, Northern Tlaxiaco" - }, - "puf": { - "english_name": "Punan Merah" - }, - "upi": { - "english_name": "Umeda" - }, - "igb": { - "english_name": "Ebira" - }, - "alc": { - "english_name": "Qawasqar" - }, - "nym": { - "english_name": "Nyamwezi" - }, - "khn": { - "english_name": "Khandesi" - }, - "jsl": { - "english_name": "Japanese Sign Language" - }, - "zlq": { - "english_name": "Zhuang, Liuqian" - }, - "bzh": { - "english_name": "Buang, Mapos" - }, - "xop": { - "english_name": "Kopar" - }, - "xkq": { - "english_name": "Koroni" - }, - "apn": { - "english_name": "Apinayé" - }, - "fmu": { - "english_name": "Muria, Far Western" - }, - "gke": { - "english_name": "Ndai" - }, - "gdr": { - "english_name": "Wipi" - }, - "swl": { - "english_name": "Swedish Sign Language" - }, - "lbo": { - "english_name": "Laven" - }, - "npi": { - "english_name": "Nepali (individual language)" - }, - "yay": { - "english_name": "Agwagwune" - }, - "sjs": { - "english_name": "Senhaja De Srair" - }, - "sza": { - "english_name": "Semelai" - }, - "zlj": { - "english_name": "Zhuang, Liujiang" - }, - "xbx": { - "english_name": "Kabixí" - }, - "mhq": { - "english_name": "Mandan" - }, - "emp": { - "english_name": "Emberá, Northern" - }, - "sfs": { - "english_name": "South African Sign Language" - }, - "ttd": { - "english_name": "Tauade" - }, - "llm": { - "english_name": "Lasalimu" - }, - "tqm": { - "english_name": "Turumsa" - }, - "ymi": { - "english_name": "Moji" - }, - "mqb": { - "english_name": "Mbuko" - }, - "lbq": { - "english_name": "Wampar" - }, - "dho": { - "english_name": "Dhodia" - }, - "sqa": { - "english_name": "Shama-Sambuga" - }, - "weh": { - "english_name": "Weh" - }, - "mqw": { - "english_name": "Murupi" - }, - "ctn": { - "english_name": "Chhintange" - }, - "taa": { - "english_name": "Tanana, Lower" - }, - "nbd": { - "english_name": "Ngbinda" - }, - "ykt": { - "english_name": "Kathu" - }, - "ctu": { - "english_name": "Chol" - }, - "ngv": { - "english_name": "Nagumi" - }, - "kho": { - "english_name": "Khotanese" - }, - "lwl": { - "english_name": "Lawa, Eastern" - }, - "omi": { - "english_name": "Omi" - }, - "bhy": { - "english_name": "Bhele" - }, - "an": { - "english_name": "Aragonese" - }, - "tes": { - "english_name": "Tengger" - }, - "haq": { - "english_name": "Ha" - }, - "cja": { - "english_name": "Cham, Western" - }, - "alp": { - "english_name": "Alune" - }, - "puy": { - "english_name": "Purisimeño" - }, - "szl": { - "english_name": "Silesian" - }, - "atp": { - "english_name": "Atta, Pudtol" - }, - "nal": { - "english_name": "Nalik" - }, - "bi": { - "english_name": "Bislama" - }, - "tvm": { - "english_name": "Tela-Masbuar" - }, - "bph": { - "english_name": "Botlikh" - }, - "jit": { - "english_name": "Jita" - }, - "pgu": { - "english_name": "Pagu" - }, - "ozm": { - "english_name": "Koonzime" - }, - "tmw": { - "english_name": "Temuan" - }, - "okv": { - "english_name": "Orokaiva" - }, - "dth": { - "english_name": "Adithinngithigh" - }, - "zeg": { - "english_name": "Zenag" - }, - "pap": { - "english_name": "Papiamento" - }, - "huk": { - "english_name": "Hulung" - }, - "jaf": { - "english_name": "Jara" - }, - "yph": { - "english_name": "Phupha" - }, - "djd": { - "english_name": "Djamindjung" - }, - "sgb": { - "english_name": "Ayta, Mag-antsi" - }, - "kru": { - "english_name": "Kurukh" - }, - "pmd": { - "english_name": "Pallanganmiddang" - }, - "kdw": { - "english_name": "Koneraw" - }, - "sui": { - "english_name": "Suki" - }, - "dus": { - "english_name": "Dumi" - }, - "rga": { - "english_name": "Roria" - }, - "ruz": { - "english_name": "Ruma" - }, - "niq": { - "english_name": "Nandi" - }, - "wat": { - "english_name": "Kaninuwa" - }, - "xtj": { - "english_name": "Mixtec, San Juan Teita" - }, - "hts": { - "english_name": "Hadza" - }, - "roo": { - "english_name": "Rotokas" - }, - "txa": { - "english_name": "Tombonuo" - }, - "jau": { - "english_name": "Yaur" - }, - "wth": { - "english_name": "Wathawurrung" - }, - "lzn": { - "english_name": "Naga, Leinong" - }, - "boh": { - "english_name": "Boma" - }, - "hrp": { - "english_name": "Nhirrpi" - }, - "kjr": { - "english_name": "Kurudu" - }, - "mit": { - "english_name": "Mixtec, Southern Puebla" - }, - "kxk": { - "english_name": "Karen, Zayein" - }, - "ssv": { - "english_name": "Shark Bay" - }, - "mnu": { - "english_name": "Mer" - }, - "wnd": { - "english_name": "Wandarang" - }, - "ciw": { - "english_name": "Chippewa" - }, - "mqe": { - "english_name": "Matepi" - }, - "jbk": { - "english_name": "Barikewa" - }, - "raj": { - "english_name": "Rajasthani" - }, - "pch": { - "english_name": "Pardhan" - }, - "seg": { - "english_name": "Segeju" - }, - "loe": { - "english_name": "Saluan" - }, - "frs": { - "english_name": "Frisian, Eastern" - }, - "neu": { - "english_name": "Neo" - }, - "kcr": { - "english_name": "Katla" - }, - "dgx": { - "english_name": "Doghoro" - }, - "oml": { - "english_name": "Ombo" - }, - "vem": { - "english_name": "Vemgo-Mabas" - }, - "knq": { - "english_name": "Kintaq" - }, - "pad": { - "english_name": "Paumarí" - }, - "lts": { - "english_name": "Tachoni" - }, - "kae": { - "english_name": "Ketangalan" - }, - "twa": { - "english_name": "Twana" - }, - "scs": { - "english_name": "Slavey, North" - }, - "ill": { - "english_name": "Iranun" - }, - "nml": { - "english_name": "Ndemli" - }, - "bqt": { - "english_name": "Bamukumbit" - }, - "mdk": { - "english_name": "Mangbutu" - }, - "bep": { - "english_name": "Besoa" - }, - "pmo": { - "english_name": "Pom" - }, - "ktj": { - "english_name": "Krumen, Plapo" - }, - "knt": { - "english_name": "Katukína, Panoan" - }, - "pkn": { - "english_name": "Pakanha" - }, - "yol": { - "english_name": "Yola" - }, - "try": { - "english_name": "Turung" - }, - "ssl": { - "english_name": "Sisaala, Western" - }, - "dtk": { - "english_name": "Dogon, Tene Kan" - }, - "kwt": { - "english_name": "Kwesten" - }, - "pdc": { - "english_name": "German, Pennsylvania" - }, - "onj": { - "english_name": "Onjob" - }, - "mye": { - "english_name": "Myene" - }, - "hhy": { - "english_name": "Hoyahoya" - }, - "olk": { - "english_name": "Olkol" - }, - "yon": { - "english_name": "Yongkom" - }, - "nnq": { - "english_name": "Ngindo" - }, - "xuu": { - "english_name": "Kxoe" - }, - "pma": { - "english_name": "Paama" - }, - "mlk": { - "english_name": "Ilwana" - }, - "kkg": { - "english_name": "Kalinga, Mabaka Valley" - }, - "tqq": { - "english_name": "Tunni" - }, - "nfr": { - "english_name": "Nafaanra" - }, - "jaz": { - "english_name": "Jawe" - }, - "mjs": { - "english_name": "Miship" - }, - "kah": { - "english_name": "Kara (Central African Republic)" - }, - "kws": { - "english_name": "Kwese" - }, - "seh": { - "english_name": "Sena" - }, - "thz": { - "english_name": "Tamajeq, Tayart" - }, - "toq": { - "english_name": "Toposa" - }, - "mpy": { - "english_name": "Mapia" - }, - "kwr": { - "english_name": "Kwer" - }, - "eot": { - "english_name": "Beti (Côte d'Ivoire)" - }, - "kuh": { - "english_name": "Kushi" - }, - "nkp": { - "english_name": "Niuatoputapu" - }, - "mgc": { - "english_name": "Morokodo" - }, - "st": { - "english_name": "Sotho, Southern" - }, - "ots": { - "english_name": "Otomi, Estado de México" - }, - "dkk": { - "english_name": "Dakka" - }, - "yev": { - "english_name": "Yapunda" - }, - "iri": { - "english_name": "Irigwe" - }, - "ktm": { - "english_name": "Kurti" - }, - "xto": { - "english_name": "Tokharian A" - }, - "agg": { - "english_name": "Angor" - }, - "bjh": { - "english_name": "Bahinemo" - }, - "asg": { - "english_name": "Cishingini" - }, - "boe": { - "english_name": "Mundabli" - }, - "opa": { - "english_name": "Okpamheri" - }, - "aub": { - "english_name": "Alugu" - }, - "oac": { - "english_name": "Oroch" - }, - "tbg": { - "english_name": "Tairora, North" - }, - "dge": { - "english_name": "Degenan" - }, - "atu": { - "english_name": "Reel" - }, - "lkd": { - "english_name": "Lakondê" - }, - "lhi": { - "english_name": "Lahu Shi" - }, - "pep": { - "english_name": "Kunja" - }, - "sil": { - "english_name": "Sisaala, Tumulung" - }, - "luk": { - "english_name": "Lunanakha" - }, - "ths": { - "english_name": "Thakali" - }, - "itb": { - "english_name": "Itneg, Binongan" - }, - "trq": { - "english_name": "Triqui, San Martín Itunyoso" - }, - "wdk": { - "english_name": "Wadikali" - }, - "akv": { - "english_name": "Akhvakh" - }, - "cla": { - "english_name": "Ron" - }, - "sk": { - "english_name": "Slovak", - "name": "Slovenský" - }, - "mqs": { - "english_name": "Makian, West" - }, - "smz": { - "english_name": "Simeku" - }, - "yuw": { - "english_name": "Yau (Morobe Province)" - }, - "faz": { - "english_name": "Fars, Northwestern" - }, - "mmp": { - "english_name": "Siawi" - }, - "tov": { - "english_name": "Taromi, Upper" - }, - "elk": { - "english_name": "Elkei" - }, - "ztt": { - "english_name": "Zapotec, Tejalapan" - }, - "dhx": { - "english_name": "Dhungaloo" - }, - "bg": { - "english_name": "Bulgarian", - "name": "Български" - }, - "mxs": { - "english_name": "Mixtec, Huitepec" - }, - "ett": { - "english_name": "Etruscan" - }, - "nbg": { - "english_name": "Nagarchal" - }, - "dkx": { - "english_name": "Mazagway" - }, - "kie": { - "english_name": "Kibet" - }, - "gww": { - "english_name": "Kwini" - }, - "tcp": { - "english_name": "Chin, Tawr" - }, - "kyu": { - "english_name": "Kayah, Western" - }, - "una": { - "english_name": "Watut, North" - }, - "brk": { - "english_name": "Birked" - }, - "hoi": { - "english_name": "Holikachuk" - }, - "nyi": { - "english_name": "Ama (Sudan)" - }, - "mzz": { - "english_name": "Maiadomu" - }, - "sez": { - "english_name": "Chin, Senthang" - }, - "ksi": { - "english_name": "Krisa" - }, - "ktu": { - "english_name": "Kituba (Democratic Republic of Congo)" - }, - "giu": { - "english_name": "Mulao" - }, - "cot": { - "english_name": "Caquinte" - }, - "box": { - "english_name": "Buamu" - }, - "wyy": { - "english_name": "Fijian, Western" - }, - "tqb": { - "english_name": "Tembé" - }, - "prx": { - "english_name": "Purik" - }, - "btq": { - "english_name": "Batek" - }, - "sbv": { - "english_name": "Sabine" - }, - "mko": { - "english_name": "Mingang Doso" - }, - "xwt": { - "english_name": "Wotjobaluk" - }, - "srt": { - "english_name": "Sauri" - }, - "juc": { - "english_name": "Jurchen" - }, - "lmp": { - "english_name": "Limbum" - }, - "kks": { - "english_name": "Giiwo" - }, - "imy": { - "english_name": "Milyan" - }, - "nuw": { - "english_name": "Nguluwan" - }, - "ach": { - "english_name": "Acoli" - }, - "ybo": { - "english_name": "Yabong" - }, - "iki": { - "english_name": "Iko" - }, - "mco": { - "english_name": "Mixe, Coatlán" - }, - "ghe": { - "english_name": "Ghale, Southern" - }, - "leb": { - "english_name": "Lala-Bisa" - }, - "jqr": { - "english_name": "Jaqaru" - }, - "ynl": { - "english_name": "Yangulam" - }, - "rmc": { - "english_name": "Romani, Carpathian" - }, - "nre": { - "english_name": "Naga, Southern Rengma" - }, - "lnb": { - "english_name": "Mbalanhu" - }, - "zua": { - "english_name": "Zeem" - }, - "plj": { - "english_name": "Polci" - }, - "dyb": { - "english_name": "Dyaberdyaber" - }, - "bzj": { - "english_name": "Kriol English, Belize" - }, - "jua": { - "english_name": "Júma" - }, - "kak": { - "english_name": "Kallahan, Kayapa" - }, - "ala": { - "english_name": "Alago" - }, - "bei": { - "english_name": "Bekati'" - }, - "slw": { - "english_name": "Sialum" - }, - "bhq": { - "english_name": "Tukang Besi South" - }, - "nyu": { - "english_name": "Nyungwe" - }, - "sty": { - "english_name": "Tatar, Siberian" - }, - "kmn": { - "english_name": "Awtuw" - }, - "sop": { - "english_name": "Songe" - }, - "aou": { - "english_name": "A'ou" - }, - "nne": { - "english_name": "Ngandyera" - }, - "bzo": { - "english_name": "Bozaba" - }, - "lnj": { - "english_name": "Leningitij" - }, - "isu": { - "english_name": "Isu (Menchum Division)" - }, - "tsj": { - "english_name": "Tshangla" - }, - "hpo": { - "english_name": "Hpon" - }, - "yxm": { - "english_name": "Yinwum" - }, - "yag": { - "english_name": "Yámana" - }, - "cwt": { - "english_name": "Kuwaataay" - }, - "tpu": { - "english_name": "Tampuan" - }, - "ntj": { - "english_name": "Ngaanyatjarra" - }, - "pti": { - "english_name": "Pintiini" - }, - "dto": { - "english_name": "Dogon, Tommo So" - }, - "vay": { - "english_name": "Wayu" - }, - "ban": { - "english_name": "Balinese" - }, - "ivv": { - "english_name": "Ivatan" - }, - "kfw": { - "english_name": "Naga, Kharam" - }, - "gqa": { - "english_name": "Ga'anda" - }, - "zgr": { - "english_name": "Magori" - }, - "nnw": { - "english_name": "Nuni, Southern" - }, - "oyd": { - "english_name": "Oyda" - }, - "jhs": { - "english_name": "Jhankot Sign Language" - }, - "kxd": { - "english_name": "Brunei" - }, - "dkr": { - "english_name": "Kuijau" - }, - "lmk": { - "english_name": "Lamkang" - }, - "znk": { - "english_name": "Manangkari" - }, - "gsn": { - "english_name": "Gusan" - }, - "mrx": { - "english_name": "Maremgi" - }, - "csb": { - "english_name": "Kashubian" - }, - "itw": { - "english_name": "Ito" - }, - "gae": { - "english_name": "Guarequena" - }, - "obt": { - "english_name": "Breton, Old" - }, - "ee": { - "english_name": "Ewe" - }, - "mgu": { - "english_name": "Mailu" - }, - "pku": { - "english_name": "Paku" - }, - "cme": { - "english_name": "Cerma" - }, - "srb": { - "english_name": "Sora" - }, - "xrd": { - "english_name": "Gundungurra" - }, - "aer": { - "english_name": "Arrernte, Eastern" - }, - "tnq": { - "english_name": "Taino" - }, - "sm": { - "english_name": "Samoan" - }, - "yrw": { - "english_name": "Yarawata" - }, - "mmu": { - "english_name": "Mmaala" - }, - "kva": { - "english_name": "Bagvalal" - }, - "eja": { - "english_name": "Ejamat" - }, - "amm": { - "english_name": "Ama (Papua New Guinea)" - }, - "asr": { - "english_name": "Asuri" - }, - "bqm": { - "english_name": "Wumboko" - }, - "bxa": { - "english_name": "Tairaha" - }, - "de": { - "english_name": "German", - "name": "Deutsch" - }, - "sey": { - "english_name": "Secoya" - }, - "pla": { - "english_name": "Miani" - }, - "bgd": { - "english_name": "Bareli, Rathwi" - }, - "myp": { - "english_name": "Pirahã" - }, - "nkh": { - "english_name": "Naga, Khezha" - }, - "nqq": { - "english_name": "Naga, Kyan-Karyaw" - }, - "gsw": { - "english_name": "German, Swiss" - }, - "sjr": { - "english_name": "Siar-Lak" - }, - "bkv": { - "english_name": "Bekwarra" - }, - "zao": { - "english_name": "Zapotec, Ozolotepec" - }, - "ked": { - "english_name": "Kerewe" - }, - "lby": { - "english_name": "Lamu-Lamu" - }, - "xoc": { - "english_name": "O'chi'chi'" - }, - "biw": { - "english_name": "Kol (Cameroon)" - }, - "tya": { - "english_name": "Tauya" - }, - "bbe": { - "english_name": "Bangba" - }, - "pnz": { - "english_name": "Pana (Central African Republic)" - }, - "nao": { - "english_name": "Naaba" - }, - "qwa": { - "english_name": "Quechua, Corongo Ancash" - }, - "tmg": { - "english_name": "Ternateño" - }, - "rmt": { - "english_name": "Domari" - }, - "ruh": { - "english_name": "Ruga" - }, - "ate": { - "english_name": "Atemble" - }, - "tsc": { - "english_name": "Tswa" - }, - "nwe": { - "english_name": "Ngwe" - }, - "bgj": { - "english_name": "Bangolan" - }, - "wan": { - "english_name": "Wan" - }, - "enc": { - "english_name": "En" - }, - "bvm": { - "english_name": "Bamunka" - }, - "bvf": { - "english_name": "Boor" - }, - "mak": { - "english_name": "Makasar" - }, - "dnv": { - "english_name": "Danu" - }, - "phl": { - "english_name": "Phalura" - }, - "mce": { - "english_name": "Mixtec, Itundujia" - }, - "luq": { - "english_name": "Lucumi" - }, - "psl": { - "english_name": "Puerto Rican Sign Language" - }, - "nbq": { - "english_name": "Nggem" - }, - "guq": { - "english_name": "Aché" - }, - "blk": { - "english_name": "Karen, Pa'o" - }, - "slz": { - "english_name": "Ma'ya" - }, - "kkm": { - "english_name": "Kiong" - }, - "teq": { - "english_name": "Temein" - }, - "lou": { - "english_name": "Creole French, Louisiana" - }, - "bza": { - "english_name": "Bandi" - }, - "bdj": { - "english_name": "Bai" - }, - "plw": { - "english_name": "Palawano, Brooke's Point" - }, - "mfp": { - "english_name": "Malay, Makassar" - }, - "kia": { - "english_name": "Kim" - }, - "kzd": { - "english_name": "Kadai" - }, - "xpa": { - "english_name": "Pirriya" - }, - "tor": { - "english_name": "Banda, Togbo-Vara" - }, - "ksw": { - "english_name": "Karen, S'gaw" - }, - "lua": { - "english_name": "Luba-Lulua" - }, - "kbn": { - "english_name": "Kare (Central African Republic)" - }, - "dma": { - "english_name": "Duma" - }, - "mdn": { - "english_name": "Mbati" - }, - "mha": { - "english_name": "Manda (India)" - }, - "zmd": { - "english_name": "Maridan" - }, - "pqm": { - "english_name": "Malecite-Passamaquoddy" - }, - "ghc": { - "english_name": "Gaelic, Hiberno-Scottish" - }, - "ema": { - "english_name": "Emai-Iuleha-Ora" - }, - "ylr": { - "english_name": "Yalarnnga" - }, - "aeu": { - "english_name": "Akeu" - }, - "njn": { - "english_name": "Naga, Liangmai" - }, - "xgw": { - "english_name": "Guwa" - }, - "jpr": { - "english_name": "Judeo-Persian" - }, - "mbb": { - "english_name": "Manobo, Western Bukidnon" - }, - "oty": { - "english_name": "Tamil, Old" - }, - "liq": { - "english_name": "Libido" - }, - "aib": { - "english_name": "Ainu (China)" - }, - "mzt": { - "english_name": "Mintil" - }, - "qvz": { - "english_name": "Quichua, Northern Pastaza" - }, - "daq": { - "english_name": "Maria, Dandami" - }, - "bbm": { - "english_name": "Babango" - }, - "crs": { - "english_name": "Creole French, Seselwa" - }, - "orc": { - "english_name": "Orma" - }, - "liy": { - "english_name": "Banda-Bambari" - }, - "teu": { - "english_name": "Soo" - }, - "clu": { - "english_name": "Caluyanun" - }, - "el": { - "english_name": "Greek, Modern (1453-)", - "name": "Ελληνικά" - }, - "deh": { - "english_name": "Dehwari" - }, - "quv": { - "english_name": "Sacapulteco" - }, - "plt": { - "english_name": "Malagasy, Plateau" - }, - "iws": { - "english_name": "Iwam, Sepik" - }, - "qws": { - "english_name": "Quechua, Sihuas Ancash" - }, - "pua": { - "english_name": "Purepecha, Western Highland" - }, - "orv": { - "english_name": "Russian, Old" - }, - "pmt": { - "english_name": "Tuamotuan" - }, - "law": { - "english_name": "Lauje" - }, - "mzj": { - "english_name": "Manya" - }, - "sia": { - "english_name": "Sami, Akkala" - }, - "mrr": { - "english_name": "Maria (India)" - }, - "mfn": { - "english_name": "Mbembe, Cross River" - }, - "bng": { - "english_name": "Benga" - }, - "ren": { - "english_name": "Rengao" - }, - "dmx": { - "english_name": "Dema" - }, - "sht": { - "english_name": "Shasta" - }, - "nhh": { - "english_name": "Nahari" - }, - "bkg": { - "english_name": "Buraka" - }, - "ket": { - "english_name": "Ket" - }, - "zam": { - "english_name": "Zapotec, Miahuatlán" - }, - "rwo": { - "english_name": "Rawa" - }, - "bdu": { - "english_name": "Oroko" - }, - "ztp": { - "english_name": "Zapotec, Loxicha" - }, - "xnu": { - "english_name": "Nukunul" - }, - "tpt": { - "english_name": "Tepehua, Tlachichilco" - }, - "mqq": { - "english_name": "Minokok" - }, - "saf": { - "english_name": "Safaliba" - }, - "hmv": { - "english_name": "Hmong Dô" - }, - "hss": { - "english_name": "Harsusi" - }, - "bcr": { - "english_name": "Babine" - }, - "twy": { - "english_name": "Tawoyan" - }, - "ko": { - "english_name": "Korean", - "name": "한국어" - }, - "rwa": { - "english_name": "Rawo" - }, - "pro": { - "english_name": "Provençal, Old (to 1500)" - }, - "vbb": { - "english_name": "Babar, Southeast" - }, - "inp": { - "english_name": "Iñapari" - }, - "tpj": { - "english_name": "Tapieté" - }, - "stn": { - "english_name": "Owa" - }, - "jao": { - "english_name": "Yanyuwa" - }, - "mn": { - "english_name": "Mongolian", - "name": "Монгол" - }, - "oog": { - "english_name": "Ong" - }, - "abm": { - "english_name": "Abanyom" - }, - "yly": { - "english_name": "Nyâlayu" - }, - "mde": { - "english_name": "Maba (Chad)" - }, - "moh": { - "english_name": "Mohawk" - }, - "ica": { - "english_name": "Ede Ica" - }, - "urx": { - "english_name": "Urimo" - }, - "mcr": { - "english_name": "Menya" - }, - "mgn": { - "english_name": "Mbangi" - }, - "att": { - "english_name": "Atta, Pamplona" - }, - "mfx": { - "english_name": "Melo" - }, - "chc": { - "english_name": "Catawba" - }, - "kkf": { - "english_name": "Monpa, Kalaktang" - }, - "dbd": { - "english_name": "Dadiya" - }, - "fuh": { - "english_name": "Fulfulde, Western Niger" - }, - "myi": { - "english_name": "Mina (India)" - }, - "oav": { - "english_name": "Avar, Old" - }, - "ruq": { - "english_name": "Romanian, Megleno" - }, - "mrm": { - "english_name": "Merlav" - }, - "mmd": { - "english_name": "Maonan" - }, - "tbx": { - "english_name": "Kapin" - }, - "khj": { - "english_name": "Kuturmi" - }, - "dit": { - "english_name": "Dirari" - }, - "njr": { - "english_name": "Njerep" - }, - "buo": { - "english_name": "Terei" - }, - "pip": { - "english_name": "Pero" - }, - "ia": { - "english_name": "Interlingua (International Auxiliary Language Association)" - }, - "zrp": { - "english_name": "Zarphatic" - }, - "ymr": { - "english_name": "Malasar" - }, - "mrt": { - "english_name": "Marghi Central" - }, - "jnd": { - "english_name": "Jandavra" - }, - "tjo": { - "english_name": "Tamazight, Temacine" - }, - "quy": { - "english_name": "Quechua, Ayacucho" - }, - "emw": { - "english_name": "Emplawas" - }, - "vit": { - "english_name": "Viti" - }, - "mor": { - "english_name": "Moro" - }, - "xsi": { - "english_name": "Sio" - }, - "xke": { - "english_name": "Kereho" - }, - "tby": { - "english_name": "Tabaru" - }, - "gil": { - "english_name": "Gilbertese" - }, - "ffi": { - "english_name": "Foia Foia" - }, - "lwg": { - "english_name": "Wanga" - }, - "tga": { - "english_name": "Sagalla" - }, - "bcu": { - "english_name": "Awad Bing" - }, - "plg": { - "english_name": "Pilagá" - }, - "tpw": { - "english_name": "Tupí" - }, - "xad": { - "english_name": "Adai" - }, - "pnn": { - "english_name": "Pinai-Hagahai" - }, - "jms": { - "english_name": "Mashi (Nigeria)" - }, - "kbc": { - "english_name": "Kadiwéu" - }, - "stf": { - "english_name": "Seta" - }, - "tob": { - "english_name": "Toba" - }, - "aqz": { - "english_name": "Akuntsu" - }, - "mrz": { - "english_name": "Marind" - }, - "bbc": { - "english_name": "Batak Toba" - }, - "szb": { - "english_name": "Ngalum" - }, - "tml": { - "english_name": "Citak, Tamnim" - }, - "gqr": { - "english_name": "Gor" - }, - "ntk": { - "english_name": "Ikoma-Nata-Isenye" - }, - "mxr": { - "english_name": "Murik (Malaysia)" - }, - "jbw": { - "english_name": "Yawijibaya" - }, - "alf": { - "english_name": "Alege" - }, - "gxx": { - "english_name": "Wè Southern" - }, - "ors": { - "english_name": "Orang Seletar" - }, - "bfl": { - "english_name": "Banda-Ndélé" - }, - "ssd": { - "english_name": "Siroi" - }, - "krl": { - "english_name": "Karelian" - }, - "thr": { - "english_name": "Tharu, Rana" - }, - "mvl": { - "english_name": "Mbara (Australia)" - }, - "bwx": { - "english_name": "Bunu, Bu-Nao" - }, - "ele": { - "english_name": "Elepi" - }, - "myu": { - "english_name": "Mundurukú" - }, - "jup": { - "english_name": "Hupdë" - }, - "bvh": { - "english_name": "Bure" - }, - "odu": { - "english_name": "Odual" - }, - "wrv": { - "english_name": "Waruna" - }, - "afs": { - "english_name": "Creole, Afro-Seminole" - }, - "sws": { - "english_name": "Seluwasan" - }, - "anb": { - "english_name": "Andoa" - }, - "hmu": { - "english_name": "Hamap" - }, - "xng": { - "english_name": "Mongolian, Middle" - }, - "cra": { - "english_name": "Chara" - }, - "msb": { - "english_name": "Masbatenyo" - }, - "uda": { - "english_name": "Uda" - }, - "gdg": { - "english_name": "Ga'dang" - }, - "tkr": { - "english_name": "Tsakhur" - }, - "onr": { - "english_name": "One, Northern" - }, - "hbu": { - "english_name": "Habu" - }, - "abb": { - "english_name": "Bankon" - }, - "suc": { - "english_name": "Subanon, Western" - }, - "lmc": { - "english_name": "Limilngan" - }, - "thi": { - "english_name": "Tai Long" - }, - "pmf": { - "english_name": "Pamona" - }, - "umn": { - "english_name": "Naga, Makyan" - }, - "xla": { - "english_name": "Kamula" - }, - "wam": { - "english_name": "Wampanoag" - }, - "ghh": { - "english_name": "Ghale, Northern" - }, - "fut": { - "english_name": "Futuna-Aniwa" - }, - "sck": { - "english_name": "Sadri" - }, - "sd": { - "english_name": "Sindhi" - }, - "xrt": { - "english_name": "Aranama-Tamique" - }, - "ahk": { - "english_name": "Akha" - }, - "dja": { - "english_name": "Djadjawurrung" - }, - "kyn": { - "english_name": "Binukidnon, Northern" - }, - "ymd": { - "english_name": "Muda" - }, - "afh": { - "english_name": "Afrihili" - }, - "tba": { - "english_name": "Aikanã" - }, - "ebr": { - "english_name": "Ebrié" - }, - "asz": { - "english_name": "As" - }, - "pkr": { - "english_name": "Kurumba, Attapady" - }, - "gss": { - "english_name": "Greek Sign Language" - }, - "xwc": { - "english_name": "Woccon" - }, - "tmk": { - "english_name": "Tamang, Northwestern" - }, - "kyw": { - "english_name": "Kudmali" - }, - "acv": { - "english_name": "Achumawi" - }, - "goc": { - "english_name": "Gorakor" - }, - "mqu": { - "english_name": "Mandari" - }, - "lrt": { - "english_name": "Malay, Larantuka" - }, - "lda": { - "english_name": "Kla-Dan" - }, - "jeg": { - "english_name": "Jeng" - }, - "kym": { - "english_name": "Kpatili" - }, - "sbe": { - "english_name": "Saliba" - }, - "swp": { - "english_name": "Suau" - }, - "raq": { - "english_name": "Saam" - }, - "mxe": { - "english_name": "Mele-Fila" - }, - "mfg": { - "english_name": "Mogofin" - }, - "ygu": { - "english_name": "Yugul" - }, - "yur": { - "english_name": "Yurok" - }, - "rki": { - "english_name": "Rakhine" - }, - "kpd": { - "english_name": "Koba" - }, - "pev": { - "english_name": "Pémono" - }, - "ndw": { - "english_name": "Ndobo" - }, - "mid": { - "english_name": "Mandaic" - }, - "eze": { - "english_name": "Uzekwe" - }, - "kny": { - "english_name": "Kanyok" - }, - "kwh": { - "english_name": "Kowiai" - }, - "thn": { - "english_name": "Thachanadan" - }, - "rdb": { - "english_name": "Rudbari" - }, - "dib": { - "english_name": "Dinka, South Central" - }, - "wed": { - "english_name": "Wedau" - }, - "zpr": { - "english_name": "Zapotec, Santiago Xanica" - }, - "nyx": { - "english_name": "Nganyaywana" - }, - "plz": { - "english_name": "Paluan" - }, - "pop": { - "english_name": "Pwapwâ" - }, - "msx": { - "english_name": "Moresada" - }, - "tgo": { - "english_name": "Sudest" - }, - "gaf": { - "english_name": "Gende" - }, - "gew": { - "english_name": "Gera" - }, - "dhm": { - "english_name": "Zemba" - }, - "tbh": { - "english_name": "Thurawal" - }, - "asq": { - "english_name": "Austrian Sign Language" - }, - "uha": { - "english_name": "Uhami" - }, - "chb": { - "english_name": "Chibcha" - }, - "awt": { - "english_name": "Araweté" - }, - "mho": { - "english_name": "Mashi (Zambia)" - }, - "ibb": { - "english_name": "Ibibio" - }, - "klx": { - "english_name": "Koluwawa" - }, - "msj": { - "english_name": "Ma (Democratic Republic of Congo)" - }, - "acq": { - "english_name": "Arabic, Ta'izzi-Adeni" - }, - "ggk": { - "english_name": "Kungarakany" - }, - "szg": { - "english_name": "Sengele" - }, - "igl": { - "english_name": "Igala" - }, - "kxu": { - "english_name": "Kui (India)" - }, - "slr": { - "english_name": "Salar" - }, - "cnl": { - "english_name": "Chinantec, Lalana" - }, - "kfb": { - "english_name": "Kolami, Northwestern" - }, - "pao": { - "english_name": "Paiute, Northern" - }, - "rnp": { - "english_name": "Rongpo" - }, - "kph": { - "english_name": "Kplang" - }, - "kzi": { - "english_name": "Kelabit" - }, - "asp": { - "english_name": "Algerian Sign Language" - }, - "yxu": { - "english_name": "Yuyu" - }, - "waa": { - "english_name": "Walla Walla" - }, - "cms": { - "english_name": "Messapic" - }, - "skr": { - "english_name": "Seraiki" - }, - "nak": { - "english_name": "Nakanai" - }, - "zpt": { - "english_name": "Zapotec, San Vicente Coatlán" - }, - "tgy": { - "english_name": "Togoyo" - }, - "vto": { - "english_name": "Vitou" - }, - "bof": { - "english_name": "Bolon" - }, - "awv": { - "english_name": "Awyu, Jair" - }, - "smj": { - "english_name": "Lule Sami" - }, - "csd": { - "english_name": "Chiangmai Sign Language" - }, - "amu": { - "english_name": "Amuzgo, Guerrero" - }, - "xtw": { - "english_name": "Tawandê" - }, - "onb": { - "english_name": "Lingao" - }, - "ttt": { - "english_name": "Tat, Muslim" - }, - "biq": { - "english_name": "Bipi" - }, - "mbw": { - "english_name": "Maring" - }, - "ybk": { - "english_name": "Bokha" - }, - "umc": { - "english_name": "Marrucinian" - }, - "bnx": { - "english_name": "Bangubangu" - }, - "ve": { - "english_name": "Venda", - "name": "Venda" - }, - "xnb": { - "english_name": "Kanakanabu" - }, - "yup": { - "english_name": "Yukpa" - }, - "jiv": { - "english_name": "Shuar" - }, - "sry": { - "english_name": "Sera" - }, - "xrq": { - "english_name": "Karranga" - }, - "gjm": { - "english_name": "Gunditjmara" - }, - "byw": { - "english_name": "Belhariya" - }, - "kux": { - "english_name": "Kukatja" - }, - "win": { - "english_name": "Ho-Chunk" - }, - "mep": { - "english_name": "Miriwung" - }, - "oin": { - "english_name": "One, Inebu" - }, - "htx": { - "english_name": "Hittite, Middle" - }, - "cuv": { - "english_name": "Cuvok" - }, - "cod": { - "english_name": "Cocama-Cocamilla" - }, - "tow": { - "english_name": "Jemez" - }, - "ekp": { - "english_name": "Ekpeye" - }, - "qui": { - "english_name": "Quileute" - }, - "vmf": { - "english_name": "Mainfränkisch" - }, - "li": { - "english_name": "Limburgan" - }, - "med": { - "english_name": "Melpa" - }, - "xed": { - "english_name": "Hdi" - }, - "hgm": { - "english_name": "Hai//om" - }, - "syl": { - "english_name": "Sylheti" - }, - "aur": { - "english_name": "Aruek" - }, - "alt": { - "english_name": "Altai, Southern" - }, - "kna": { - "english_name": "Dera (Nigeria)" - }, - "yud": { - "english_name": "Arabic, Judeo-Tripolitanian" - }, - "afi": { - "english_name": "Akrukay" - }, - "bku": { - "english_name": "Buhid" - }, - "yeu": { - "english_name": "Yerukula" - }, - "gwc": { - "english_name": "Kalami" - }, - "hwa": { - "english_name": "Wané" - }, - "klz": { - "english_name": "Kabola" - }, - "kzo": { - "english_name": "Kaningi" - }, - "ngs": { - "english_name": "Gvoko" - }, - "bbr": { - "english_name": "Girawa" - }, - "as": { - "english_name": "Assamese" - }, - "qun": { - "english_name": "Quinault" - }, - "tbj": { - "english_name": "Tiang" - }, - "snv": { - "english_name": "Sa'ban" - }, - "tcd": { - "english_name": "Tafi" - }, - "ndn": { - "english_name": "Ngundi" - }, - "uku": { - "english_name": "Ukue" - }, - "cde": { - "english_name": "Chenchu" - }, - "nwr": { - "english_name": "Nawaru" - }, - "wgo": { - "english_name": "Waigeo" - }, - "afe": { - "english_name": "Putukwam" - }, - "mou": { - "english_name": "Mogum" - }, - "dbj": { - "english_name": "Ida'an" - }, - "dbf": { - "english_name": "Edopi" - }, - "nch": { - "english_name": "Nahuatl, Central Huasteca" - }, - "bsi": { - "english_name": "Bassossi" - }, - "jng": { - "english_name": "Yangman" - }, - "geq": { - "english_name": "Geme" - }, - "cjv": { - "english_name": "Chuave" - }, - "khv": { - "english_name": "Khvarshi" - }, - "llh": { - "english_name": "Lamu" - }, - "bxd": { - "english_name": "Pela" - }, - "ush": { - "english_name": "Ushojo" - }, - "zyp": { - "english_name": "Chin, Zyphe" - }, - "okg": { - "english_name": "Koko Babangk" - }, - "tkp": { - "english_name": "Tikopia" - }, - "kql": { - "english_name": "Kyenele" - }, - "spl": { - "english_name": "Selepet" - }, - "mer": { - "english_name": "Meru" - }, - "csy": { - "english_name": "Chin, Siyin" - }, - "abw": { - "english_name": "Pal" - }, - "bn": { - "english_name": "Bengali", - "name": "বাংলা" - }, - "puc": { - "english_name": "Punan Merap" - }, - "xte": { - "english_name": "Ketengban" - }, - "lwh": { - "english_name": "Lachi, White" - }, - "mlc": { - "english_name": "Cao Lan" - }, - "nlg": { - "english_name": "Gela" - }, - "onu": { - "english_name": "Unua" - }, - "uzn": { - "english_name": "Uzbek, Northern" - }, - "mvg": { - "english_name": "Mixtec, Yucuañe" - }, - "miz": { - "english_name": "Mixtec, Coatzospan" - }, - "inn": { - "english_name": "Isinai" - }, - "ofo": { - "english_name": "Ofo" - }, - "kuo": { - "english_name": "Kumukio" - }, - "isg": { - "english_name": "Irish Sign Language" - }, - "bsc": { - "english_name": "Bassari" - }, - "ula": { - "english_name": "Fungwa" - }, - "djo": { - "english_name": "Jangkang" - }, - "lfa": { - "english_name": "Lefa" - }, - "ddr": { - "english_name": "Dhudhuroa" - }, - "dbb": { - "english_name": "Deno" - }, - "jet": { - "english_name": "Manem" - }, - "kfu": { - "english_name": "Katkari" - }, - "bxc": { - "english_name": "Molengue" - }, - "sni": { - "english_name": "Sensi" - }, - "ase": { - "english_name": "American Sign Language" - }, - "nby": { - "english_name": "Ningera" - }, - "kuk": { - "english_name": "Kepo'" - }, - "noj": { - "english_name": "Nonuya" - }, - "bvp": { - "english_name": "Bumang" - }, - "myw": { - "english_name": "Muyuw" - }, - "zbw": { - "english_name": "Berawan, West" - }, - "bjb": { - "english_name": "Banggarla" - }, - "ffm": { - "english_name": "Fulfulde, Maasina" - }, - "ijn": { - "english_name": "Kalabari" - }, - "rmh": { - "english_name": "Murkim" - }, - "nxm": { - "english_name": "Numidian" - }, - "tpr": { - "english_name": "Tuparí" - }, - "hul": { - "english_name": "Hula" - }, - "bqa": { - "english_name": "Tchumbuli" - }, - "kmc": { - "english_name": "Dong, Southern" - }, - "jus": { - "english_name": "Jumla Sign Language" - }, - "zqe": { - "english_name": "Zhuang, Qiubei" - }, - "wms": { - "english_name": "Wambon" - }, - "sej": { - "english_name": "Sene" - }, - "nsr": { - "english_name": "Maritime Sign Language" - }, - "jib": { - "english_name": "Jibu" - }, - "dip": { - "english_name": "Dinka, Northeastern" - }, - "mae": { - "english_name": "Bo-Rukul" - }, - "smx": { - "english_name": "Samba" - }, - "ikx": { - "english_name": "Ik" - }, - "baj": { - "english_name": "Barakai" - }, - "apc": { - "english_name": "Arabic, North Levantine" - }, - "kby": { - "english_name": "Kanuri, Manga" - }, - "czo": { - "english_name": "Chinese, Min Zhong" - }, - "hop": { - "english_name": "Hopi" - }, - "sgj": { - "english_name": "Surgujia" - }, - "ldh": { - "english_name": "Lamja-Dengsa-Tola" - }, - "ulm": { - "english_name": "Ulumanda'" - }, - "da": { - "english_name": "Danish", - "name": "Dansk" - }, - "psy": { - "english_name": "Piscataway" - }, - "ahb": { - "english_name": "Axamb" - }, - "nkv": { - "english_name": "Nyika (Malawi and Zambia)" - }, - "doi": { - "english_name": "Dogri (macrolanguage)" - }, - "pmq": { - "english_name": "Pame, Northern" - }, - "tdf": { - "english_name": "Talieng" - }, - "zwa": { - "english_name": "Zay" - }, - "scv": { - "english_name": "Sheni" - }, - "xcb": { - "english_name": "Cumbric" - }, - "scx": { - "english_name": "Sicel" - }, - "ihw": { - "english_name": "Bidhawal" - }, - "bqj": { - "english_name": "Bandial" - }, - "nga": { - "english_name": "Ngbaka" - }, - "nbs": { - "english_name": "Namibian Sign Language" - }, - "soj": { - "english_name": "Soi" - }, - "row": { - "english_name": "Dela-Oenale" - }, - "hbs": { - "english_name": "Serbo-Croatian" - }, - "sug": { - "english_name": "Suganga" - }, - "ztx": { - "english_name": "Zapotec, Zaachila" - }, - "lpo": { - "english_name": "Lipo" - }, - "hvn": { - "english_name": "Sabu" - }, - "unr": { - "english_name": "Mundari" - }, - "adi": { - "english_name": "Adi" - }, - "gox": { - "english_name": "Gobu" - }, - "qyp": { - "english_name": "Quiripi" - }, - "nxd": { - "english_name": "Ngando (Democratic Republic of Congo)" - }, - "goy": { - "english_name": "Goundo" - }, - "gse": { - "english_name": "Ghanaian Sign Language" - }, - "kda": { - "english_name": "Worimi" - }, - "wbh": { - "english_name": "Wanda" - }, - "hro": { - "english_name": "Haroi" - }, - "lvs": { - "english_name": "Latvian, Standard" - }, - "dol": { - "english_name": "Doso" - }, - "hwc": { - "english_name": "Creole English, Hawai'i" - }, - "maw": { - "english_name": "Mampruli" - }, - "syb": { - "english_name": "Subanen, Central" - }, - "lsa": { - "english_name": "Lasgerdi" - }, - "mwp": { - "english_name": "Kala Lagaw Ya" - }, - "wlg": { - "english_name": "Kunbarlang" - }, - "xbr": { - "english_name": "Kambera" - }, - "mau": { - "english_name": "Mazatec, Huautla" - }, - "kid": { - "english_name": "Koshin" - }, - "aaz": { - "english_name": "Amarasi" - }, - "kzx": { - "english_name": "Kamarian" - }, - "tro": { - "english_name": "Naga, Tarao" - }, - "vmb": { - "english_name": "Barbaram" - }, - "cbb": { - "english_name": "Cabiyarí" - }, - "enf": { - "english_name": "Enets, Forest" - }, - "dgu": { - "english_name": "Degaru" - }, - "kju": { - "english_name": "Kashaya" - }, - "kre": { - "english_name": "Panará" - }, - "kaq": { - "english_name": "Capanahua" - }, - "ojg": { - "english_name": "Ojibwa, Eastern" - }, - "tgs": { - "english_name": "Nume" - }, - "pax": { - "english_name": "Pankararé" - }, - "mwk": { - "english_name": "Maninkakan, Kita" - }, - "woi": { - "english_name": "Kamang" - }, - "kun": { - "english_name": "Kunama" - }, - "dis": { - "english_name": "Dimasa" - }, - "cad": { - "english_name": "Caddo" - }, - "odt": { - "english_name": "Dutch, Old" - }, - "mgg": { - "english_name": "Mpumpong" - }, - "lue": { - "english_name": "Luvale" - }, - "frk": { - "english_name": "Frankish" - }, - "aye": { - "english_name": "Ayere" - }, - "loa": { - "english_name": "Loloda" - }, - "kjc": { - "english_name": "Konjo, Coastal" - }, - "dpp": { - "english_name": "Papar" - }, - "ymo": { - "english_name": "Yangum Mon" - }, - "kce": { - "english_name": "Kaivi" - }, - "mhy": { - "english_name": "Ma'anyan" - }, - "jig": { - "english_name": "Djingili" - }, - "gol": { - "english_name": "Gola" - }, - "mza": { - "english_name": "Mixtec, Santa María Zacatepec" - }, - "bdl": { - "english_name": "Bajau, Indonesian" - }, - "btt": { - "english_name": "Bete-Bendi" - }, - "lg": { - "english_name": "Ganda" - }, - "gbm": { - "english_name": "Garhwali" - }, - "xut": { - "english_name": "Kuthant" - }, - "cas": { - "english_name": "Tsimané" - }, - "mig": { - "english_name": "Mixtec, San Miguel El Grande" - }, - "chw": { - "english_name": "Chuwabu" - }, - "tvk": { - "english_name": "Ambrym, Southeast" - }, - "dna": { - "english_name": "Dani, Upper Grand Valley" - }, - "pau": { - "english_name": "Palauan" - }, - "flr": { - "english_name": "Fuliiru" - }, - "gdq": { - "english_name": "Mehri" - }, - "sii": { - "english_name": "Shom Peng" - }, - "gbb": { - "english_name": "Kaytetye" - }, - "yii": { - "english_name": "Yidiny" - }, - "nnd": { - "english_name": "Ambae, West" - }, - "drg": { - "english_name": "Rungus" - }, - "gza": { - "english_name": "Ganza" - }, - "nyk": { - "english_name": "Nyaneka" - }, - "pht": { - "english_name": "Phu Thai" - }, - "myr": { - "english_name": "Muniche" - }, - "boz": { - "english_name": "Bozo, Tiéyaxo" - }, - "vnp": { - "english_name": "Vunapu" - }, - "niu": { - "english_name": "Niuean" - }, - "zik": { - "english_name": "Zimakani" - }, - "diq": { - "english_name": "Dimli (individual language)" - }, - "oru": { - "english_name": "Ormuri" - }, - "mzq": { - "english_name": "Mori Atas" - }, - "tgh": { - "english_name": "Creole English, Tobagonian" - }, - "wbv": { - "english_name": "Wajarri" - }, - "lrn": { - "english_name": "Lorang" - }, - "waf": { - "english_name": "Wakoná" - }, - "mte": { - "english_name": "Mono (Solomon Islands)" - }, - "hns": { - "english_name": "Hindustani, Caribbean" - }, - "xrr": { - "english_name": "Raetic" - }, - "grz": { - "english_name": "Guramalum" - }, - "toz": { - "english_name": "To" - }, - "lei": { - "english_name": "Lemio" - }, - "mso": { - "english_name": "Mombum" - }, - "tra": { - "english_name": "Tirahi" - }, - "adg": { - "english_name": "Andegerebinha" - }, - "oyb": { - "english_name": "Oy" - }, - "mds": { - "english_name": "Maria (Papua New Guinea)" - }, - "upv": { - "english_name": "Uripiv-Wala-Rano-Atchin" - }, - "cbr": { - "english_name": "Cashibo-Cacataibo" - }, - "kmk": { - "english_name": "Kalinga, Limos" - }, - "oua": { - "english_name": "Tagargrent" - }, - "oui": { - "english_name": "Uighur, Old" - }, - "slq": { - "english_name": "Salchuq" - }, - "tvu": { - "english_name": "Tunen" - }, - "loz": { - "english_name": "Lozi" - }, - "kvc": { - "english_name": "Kove" - }, - "tys": { - "english_name": "Tày Sa Pa" - }, - "sxr": { - "english_name": "Saaroa" - }, - "xmq": { - "english_name": "Kuku-Mangk" - }, - "bfg": { - "english_name": "Kayan, Busang" - }, - "mbu": { - "english_name": "Mbula-Bwazza" - }, - "ykn": { - "english_name": "Kua-nsi" - }, - "bkj": { - "english_name": "Pande" - }, - "ega": { - "english_name": "Ega" - }, - "wes": { - "english_name": "Pidgin, Cameroon" - }, - "kbu": { - "english_name": "Kabutra" - }, - "dsh": { - "english_name": "Daasanach" - }, - "wnn": { - "english_name": "Wunumara" - }, - "raz": { - "english_name": "Rahambuu" - }, - "bej": { - "english_name": "Beja" - }, - "put": { - "english_name": "Putoh" - }, - "bas": { - "english_name": "Basa (Cameroon)" - }, - "mtd": { - "english_name": "Mualang" - }, - "ihb": { - "english_name": "Iha Based Pidgin" - }, - "kcq": { - "english_name": "Kamo" - }, - "blx": { - "english_name": "Ayta, Mag-Indi" - }, - "sbi": { - "english_name": "Seti" - }, - "ojw": { - "english_name": "Ojibwa, Western" - }, - "gry": { - "english_name": "Grebo, Barclayville" - }, - "pmr": { - "english_name": "Paynamar" - }, - "nkb": { - "english_name": "Naga, Khoibu" - }, - "sba": { - "english_name": "Ngambay" - }, - "avm": { - "english_name": "Angkamuthi" - }, - "ryu": { - "english_name": "Okinawan, Central" - }, - "irk": { - "english_name": "Iraqw" - }, - "rmv": { - "english_name": "Romanova" - }, - "kxt": { - "english_name": "Koiwat" - }, - "nek": { - "english_name": "Neku" - }, - "xku": { - "english_name": "Kaamba" - }, - "szp": { - "english_name": "Suabo" - }, - "uum": { - "english_name": "Urum" - }, - "nvo": { - "english_name": "Nyokon" - }, - "gkn": { - "english_name": "Gokana" - }, - "ii": { - "english_name": "Yi, Sichuan" - }, - "xkv": { - "english_name": "Kgalagadi" - }, - "mgj": { - "english_name": "Abureni" - }, - "ig": { - "english_name": "Igbo" - }, - "ukh": { - "english_name": "Ukhwejo" - }, - "lki": { - "english_name": "Laki" - }, - "lil": { - "english_name": "Lillooet" - }, - "kxz": { - "english_name": "Kerewo" - }, - "yaw": { - "english_name": "Yawalapití" - }, - "wmh": { - "english_name": "Waima'a" - }, - "kps": { - "english_name": "Tehit" - }, - "gcr": { - "english_name": "Creole French, Guianese" - }, - "bvd": { - "english_name": "Baeggu" - }, - "bjr": { - "english_name": "Binumarien" - }, - "llx": { - "english_name": "Lauan" - }, - "kyi": { - "english_name": "Kiput" - }, - "awa": { - "english_name": "Awadhi" - }, - "mpe": { - "english_name": "Majang" - }, - "mlu": { - "english_name": "To'abaita" - }, - "bux": { - "english_name": "Boghom" - }, - "ong": { - "english_name": "Olo" - }, - "mbj": { - "english_name": "Nadëb" - }, - "yub": { - "english_name": "Yugambal" - }, - "mrl": { - "english_name": "Mortlockese" - }, - "tav": { - "english_name": "Tatuyo" - }, - "umd": { - "english_name": "Umbindhamu" - }, - "ncd": { - "english_name": "Nachering" - }, - "les": { - "english_name": "Lese" - }, - "yet": { - "english_name": "Yetfa" - }, - "agm": { - "english_name": "Angaataha" - }, - "the": { - "english_name": "Tharu, Chitwania" - }, - "lix": { - "english_name": "Liabuku" - }, - "qvp": { - "english_name": "Quechua, Pacaraos" - }, - "eno": { - "english_name": "Enggano" - }, - "pcn": { - "english_name": "Piti" - }, - "gyg": { - "english_name": "Gbayi" - }, - "gok": { - "english_name": "Gowli" - }, - "bpo": { - "english_name": "Anasi" - }, - "mwm": { - "english_name": "Sar" - }, - "ptu": { - "english_name": "Bambam" - }, - "meu": { - "english_name": "Motu" - }, - "gvs": { - "english_name": "Gumawana" - }, - "ckn": { - "english_name": "Chin, Kaang" - }, - "nrl": { - "english_name": "Ngarluma" - }, - "mqj": { - "english_name": "Mamasa" - }, - "mea": { - "english_name": "Menka" - }, - "kzf": { - "english_name": "Kaili, Da'a" - }, - "lla": { - "english_name": "Lala-Roba" - }, - "wae": { - "english_name": "Walser" - }, - "nny": { - "english_name": "Nyangga" - }, - "kpf": { - "english_name": "Komba" - }, - "wut": { - "english_name": "Wutung" - }, - "aii": { - "english_name": "Neo-Aramaic, Assyrian" - }, - "urv": { - "english_name": "Uruava" - }, - "six": { - "english_name": "Sumau" - }, - "ngo": { - "english_name": "Ngoni" - }, - "nod": { - "english_name": "Thai, Northern" - }, - "mdg": { - "english_name": "Massalat" - }, - "lew": { - "english_name": "Kaili, Ledo" - }, - "lzl": { - "english_name": "Litzlitz" - }, - "kld": { - "english_name": "Gamilaraay" - }, - "ksg": { - "english_name": "Kusaghe" - }, - "qup": { - "english_name": "Quechua, Southern Pastaza" - }, - "wud": { - "english_name": "Wudu" - }, - "pbp": { - "english_name": "Badyara" - }, - "ohu": { - "english_name": "Hungarian, Old" - }, - "say": { - "english_name": "Saya" - }, - "nse": { - "english_name": "Nsenga" - }, - "mlw": { - "english_name": "Moloko" - }, - "ktp": { - "english_name": "Kaduo" - }, - "zum": { - "english_name": "Kumzari" - }, - "urf": { - "english_name": "Uradhi" - }, - "ako": { - "english_name": "Akurio" - }, - "pny": { - "english_name": "Pinyin" - }, - "kxn": { - "english_name": "Melanau, Kanowit-Tanjong" - }, - "msr": { - "english_name": "Mongolian Sign Language" - }, - "bgt": { - "english_name": "Bughotu" - }, - "aho": { - "english_name": "Ahom" - }, - "rys": { - "english_name": "Yaeyama" - }, - "bot": { - "english_name": "Bongo" - }, - "gus": { - "english_name": "Guinean Sign Language" - }, - "ssj": { - "english_name": "Sausi" - }, - "kqo": { - "english_name": "Krahn, Eastern" - }, - "mwi": { - "english_name": "Labo" - }, - "faf": { - "english_name": "Fagani" - }, - "bdx": { - "english_name": "Budong-Budong" - }, - "mnd": { - "english_name": "Mondé" - }, - "neb": { - "english_name": "Toura (Côte d'Ivoire)" - }, - "hmf": { - "english_name": "Hmong Don" - }, - "agk": { - "english_name": "Agta, Isarog" - }, - "nts": { - "english_name": "Natagaimas" - }, - "mkn": { - "english_name": "Malay, Kupang" - }, - "nty": { - "english_name": "Mantsi" - }, - "zpf": { - "english_name": "Zapotec, San Pedro Quiatoni" - }, - "ers": { - "english_name": "Ersu" - }, - "cle": { - "english_name": "Chinantec, Lealao" - }, - "xhc": { - "english_name": "Hunnic" - }, - "xpy": { - "english_name": "Puyo" - }, - "fia": { - "english_name": "Nobiin" - }, - "yko": { - "english_name": "Yasa" - }, - "nug": { - "english_name": "Nungali" - }, - "tof": { - "english_name": "Gizrra" - }, - "mzo": { - "english_name": "Matipuhy" - }, - "sln": { - "english_name": "Salinan" - }, - "sjm": { - "english_name": "Mapun" - }, - "ngw": { - "english_name": "Ngwaba" - }, - "zmy": { - "english_name": "Mariyedi" - }, - "gbl": { - "english_name": "Gamit" - }, - "lad": { - "english_name": "Ladino" - }, - "bhe": { - "english_name": "Bhaya" - }, - "xpe": { - "english_name": "Kpelle, Liberia" - }, - "tg": { - "english_name": "Tajik" - }, - "xpc": { - "english_name": "Pecheneg" - }, - "chj": { - "english_name": "Chinantec, Ojitlán" - }, - "kfr": { - "english_name": "Kachchi" - }, - "ero": { - "english_name": "Horpa" - }, - "mrs": { - "english_name": "Maragus" - }, - "ntu": { - "english_name": "Natügu" - }, - "abg": { - "english_name": "Abaga" - }, - "pon": { - "english_name": "Pohnpeian" - }, - "mzc": { - "english_name": "Madagascar Sign Language" - }, - "pre": { - "english_name": "Principense" - }, - "dtr": { - "english_name": "Lotud" - }, - "lun": { - "english_name": "Lunda" - }, - "bpg": { - "english_name": "Bonggo" - }, - "bee": { - "english_name": "Byangsi" - }, - "oum": { - "english_name": "Ouma" - }, - "dir": { - "english_name": "Dirim" - }, - "sxu": { - "english_name": "Saxon, Upper" - }, - "kfq": { - "english_name": "Korku" - }, - "ald": { - "english_name": "Alladian" - }, - "kkc": { - "english_name": "Odoodee" - }, - "kza": { - "english_name": "Karaboro, Western" - }, - "rmi": { - "english_name": "Lomavren" - }, - "pwo": { - "english_name": "Karen, Pwo Western" - }, - "krf": { - "english_name": "Koro (Vanuatu)" - }, - "kky": { - "english_name": "Guguyimidjir" - }, - "hz": { - "english_name": "Herero" - }, - "snz": { - "english_name": "Sinsauru" - }, - "ecr": { - "english_name": "Eteocretan" - }, - "nas": { - "english_name": "Naasioi" - }, - "kyj": { - "english_name": "Karao" - }, - "tge": { - "english_name": "Tamang, Eastern Gorkha" - }, - "nou": { - "english_name": "Ewage-Notu" - }, - "ixl": { - "english_name": "Ixil" - }, - "llq": { - "english_name": "Lolak" - }, - "dtt": { - "english_name": "Dogon, Toro Tegu" - }, - "hms": { - "english_name": "Miao, Southern Qiandong" - }, - "lrg": { - "english_name": "Laragia" - }, - "nbv": { - "english_name": "Ngamambo" - }, - "skj": { - "english_name": "Seke (Nepal)" - }, - "frq": { - "english_name": "Forak" - }, - "kqs": { - "english_name": "Kissi, Northern" - }, - "fan": { - "english_name": "Fang (Equatorial Guinea)" - }, - "nhf": { - "english_name": "Nhuwala" - }, - "eth": { - "english_name": "Ethiopian Sign Language" - }, - "swm": { - "english_name": "Samosa" - }, - "ywl": { - "english_name": "Lalu, Western" - }, - "mpt": { - "english_name": "Mian" - }, - "dv": { - "english_name": "Dhivehi" - }, - "orw": { - "english_name": "Oro Win" - }, - "mlh": { - "english_name": "Mape" - }, - "xcu": { - "english_name": "Curonian" - }, - "nin": { - "english_name": "Ninzo" - }, - "cen": { - "english_name": "Cen" - }, - "dam": { - "english_name": "Damakawa" - }, - "jrt": { - "english_name": "Jorto" - }, - "wok": { - "english_name": "Longto" - }, - "mmw": { - "english_name": "Emae" - }, - "bfu": { - "english_name": "Gahri" - }, - "beh": { - "english_name": "Biali" - }, - "kbj": { - "english_name": "Kari" - }, - "ksu": { - "english_name": "Khamyang" - }, - "mxp": { - "english_name": "Mixe, Tlahuitoltepec" - }, - "ygp": { - "english_name": "Gepo" - }, - "he": { - "english_name": "Hebrew", - "name": "עברית" - }, - "inh": { - "english_name": "Ingush" - }, - "phk": { - "english_name": "Phake" - }, - "sgc": { - "english_name": "Kipsigis" - }, - "noi": { - "english_name": "Noiri" - }, - "xbm": { - "english_name": "Breton, Middle" - }, - "krn": { - "english_name": "Sapo" - }, - "pbo": { - "english_name": "Papel" - }, - "nli": { - "english_name": "Grangali" - }, - "frm": { - "english_name": "French, Middle (ca. 1400-1600)" - }, - "urr": { - "english_name": "Lehalurup" - }, - "zkg": { - "english_name": "Koguryo" - }, - "xpu": { - "english_name": "Punic" - }, - "pie": { - "english_name": "Piro" - }, - "pfe": { - "english_name": "Peere" - }, - "ral": { - "english_name": "Ralte" - }, - "luj": { - "english_name": "Luna" - }, - "wiy": { - "english_name": "Wiyot" - }, - "tpo": { - "english_name": "Tai Pao" - }, - "sjl": { - "english_name": "Sajalong" - }, - "nix": { - "english_name": "Hema" - }, - "axg": { - "english_name": "Arára, Mato Grosso" - }, - "kve": { - "english_name": "Kalabakan" - }, - "lor": { - "english_name": "Téén" - }, - "goq": { - "english_name": "Gorap" - }, - "ted": { - "english_name": "Krumen, Tepo" - }, - "ddj": { - "english_name": "Jaru" - }, - "ayy": { - "english_name": "Ayta, Tayabas" - }, - "tno": { - "english_name": "Toromono" - }, - "bkp": { - "english_name": "Boko (Democratic Republic of Congo)" - }, - "mqi": { - "english_name": "Mariri" - }, - "kdp": { - "english_name": "Kaningdon-Nindem" - }, - "pac": { - "english_name": "Pacoh" - }, - "cfg": { - "english_name": "Como Karim" - }, - "huc": { - "english_name": "=/Hua" - }, - "mgk": { - "english_name": "Mawes" - }, - "xtl": { - "english_name": "Mixtec, Tijaltepec" - }, - "bjz": { - "english_name": "Baruga" - }, - "xkx": { - "english_name": "Karore" - }, - "svr": { - "english_name": "Savara" - }, - "mwe": { - "english_name": "Mwera (Chimwera)" - }, - "dji": { - "english_name": "Djinang" - }, - "kl": { - "english_name": "Kalaallisut" - }, - "kjs": { - "english_name": "Kewa, East" - }, - "nki": { - "english_name": "Naga, Thangal" - }, - "twb": { - "english_name": "Tawbuid, Western" - }, - "sqq": { - "english_name": "Sou" - }, - "nso": { - "english_name": "Pedi", - "name": "Pedi" - }, - "kzb": { - "english_name": "Kaibobo" - }, - "lto": { - "english_name": "Tsotso" - }, - "weu": { - "english_name": "Chin, Rawngtu" - }, - "bft": { - "english_name": "Balti" - }, - "lax": { - "english_name": "Tiwa" - }, - "jgb": { - "english_name": "Ngbee" - }, - "hbb": { - "english_name": "Huba" - }, - "yra": { - "english_name": "Yerakai" - }, - "rac": { - "english_name": "Rasawa" - }, - "ctg": { - "english_name": "Chittagonian" - }, - "tvl": { - "english_name": "Tuvalu" - }, - "kpt": { - "english_name": "Karata" - }, - "bhv": { - "english_name": "Bahau" - }, - "pbs": { - "english_name": "Pame, Central" - }, - "lce": { - "english_name": "Loncong" - }, - "myy": { - "english_name": "Macuna" - }, - "awr": { - "english_name": "Awera" - }, - "brv": { - "english_name": "Bru, Western" - }, - "bio": { - "english_name": "Nai" - }, - "shd": { - "english_name": "Kundal Shahi" - }, - "zmf": { - "english_name": "Mfinu" - }, - "aoa": { - "english_name": "Angolar" - }, - "ats": { - "english_name": "Gros Ventre" - }, - "doz": { - "english_name": "Dorze" - }, - "acn": { - "english_name": "Achang" - }, - "smn": { - "english_name": "Sami, Inari" - }, - "pwb": { - "english_name": "Panawa" - }, - "xfa": { - "english_name": "Faliscan" - }, - "tjm": { - "english_name": "Timucua" - }, - "wtk": { - "english_name": "Watakataui" - }, - "bzf": { - "english_name": "Boikin" - }, - "sfb": { - "english_name": "Langue des signes de Belgique Francophone" - }, - "clw": { - "english_name": "Chulym" - }, - "mum": { - "english_name": "Maiwala" - }, - "ksa": { - "english_name": "Shuwa-Zamani" - }, - "bcj": { - "english_name": "Bardi" - }, - "pto": { - "english_name": "Zo'é" - }, - "jgk": { - "english_name": "Gwak" - }, - "ncu": { - "english_name": "Chumburung" - }, - "usi": { - "english_name": "Usui" - }, - "nhd": { - "english_name": "Chiripá" - }, - "wiv": { - "english_name": "Vitu" - }, - "mkb": { - "english_name": "Mal Paharia" - }, - "atm": { - "english_name": "Ata" - }, - "wrw": { - "english_name": "Gugu Warra" - }, - "tkt": { - "english_name": "Tharu, Kathoriya" - }, - "msk": { - "english_name": "Mansaka" - }, - "oke": { - "english_name": "Okpe (Southwestern Edo)" - }, - "nun": { - "english_name": "Anong" - }, - "ajp": { - "english_name": "Arabic, South Levantine" - }, - "bov": { - "english_name": "Tuwuli" - }, - "xub": { - "english_name": "Kurumba, Betta" - }, - "yby": { - "english_name": "Yaweyuha" - }, - "toj": { - "english_name": "Tojolabal" - }, - "nyf": { - "english_name": "Giryama" - }, - "xhv": { - "english_name": "Khua" - }, - "koo": { - "english_name": "Konzo" - }, - "nhv": { - "english_name": "Nahuatl, Temascaltepec" - }, - "jrb": { - "english_name": "Judeo-Arabic" - }, - "bgq": { - "english_name": "Bagri" - }, - "quc": { - "english_name": "K'iche'" - }, - "kqj": { - "english_name": "Koromira" - }, - "ved": { - "english_name": "Veddah" - }, - "mwa": { - "english_name": "Mwatebu" - }, - "mxz": { - "english_name": "Masela, Central" - }, - "ojb": { - "english_name": "Ojibwa, Northwestern" - }, - "dmu": { - "english_name": "Dubu" - }, - "zkd": { - "english_name": "Kadu" - }, - "vas": { - "english_name": "Vasavi" - }, - "pom": { - "english_name": "Pomo, Southeastern" - }, - "cte": { - "english_name": "Chinantec, Tepinapa" - }, - "aby": { - "english_name": "Aneme Wake" - }, - "mkk": { - "english_name": "Byep" - }, - "dak": { - "english_name": "Dakota" - }, - "swx": { - "english_name": "Suruahá" - }, - "xas": { - "english_name": "Kamas" - }, - "rei": { - "english_name": "Reli" - }, - "taj": { - "english_name": "Tamang, Eastern" - }, - "zma": { - "english_name": "Manda (Australia)" - }, - "nri": { - "english_name": "Naga, Chokri" - }, - "sqt": { - "english_name": "Soqotri" - }, - "gag": { - "english_name": "Gagauz" - }, - "oda": { - "english_name": "Odut" - }, - "lsl": { - "english_name": "Latvian Sign Language" - }, - "bzn": { - "english_name": "Boano (Maluku)" - }, - "blb": { - "english_name": "Bilua" - }, - "fuj": { - "english_name": "Ko" - }, - "mkg": { - "english_name": "Mak (China)" - }, - "yea": { - "english_name": "Ravula" - }, - "ybe": { - "english_name": "Yugur, West" - }, - "czn": { - "english_name": "Chatino, Zenzontepec" - }, - "qxp": { - "english_name": "Quechua, Puno" - }, - "mrv": { - "english_name": "Mangareva" - }, - "bfj": { - "english_name": "Bafanji" - }, - "bkr": { - "english_name": "Bakumpai" - }, - "bwc": { - "english_name": "Bwile" - }, - "dgt": { - "english_name": "Ndra'ngith" - }, - "kbz": { - "english_name": "Duhwa" - }, - "mts": { - "english_name": "Yora" - }, - "vrs": { - "english_name": "Varisi" - }, - "gqi": { - "english_name": "Guiqiong" - }, - "rn": { - "english_name": "Rundi" - }, - "oka": { - "english_name": "Okanagan" - }, - "jmc": { - "english_name": "Machame" - }, - "lur": { - "english_name": "Laura" - }, - "bcb": { - "english_name": "Bainouk-Samik" - }, - "pui": { - "english_name": "Puinave" - }, - "nnm": { - "english_name": "Namia" - }, - "kov": { - "english_name": "Kudu-Camo" - }, - "ycp": { - "english_name": "Chepya" - }, - "yah": { - "english_name": "Yazgulyam" - }, - "ifm": { - "english_name": "Teke-Fuumu" - }, - "agx": { - "english_name": "Aghul" - }, - "omo": { - "english_name": "Utarmbung" - }, - "nnc": { - "english_name": "Nancere" - }, - "bys": { - "english_name": "Burak" - }, - "str": { - "english_name": "Salish, Straits" - }, - "oco": { - "english_name": "Cornish, Old" - }, - "prn": { - "english_name": "Prasuni" - }, - "wmb": { - "english_name": "Wambaya" - }, - "cdz": { - "english_name": "Koda" - }, - "mif": { - "english_name": "Mofu-Gudur" - }, - "bta": { - "english_name": "Bata" - }, - "lpa": { - "english_name": "Lelepa" - }, - "csj": { - "english_name": "Chin, Songlai" - }, - "kum": { - "english_name": "Kumyk" - }, - "app": { - "english_name": "Apma" - }, - "kse": { - "english_name": "Kuni" - }, - "mag": { - "english_name": "Magahi" - }, - "yua": { - "english_name": "Yucateco" - }, - "sbd": { - "english_name": "Samo, Southern" - }, - "mpb": { - "english_name": "Mullukmulluk" - }, - "xwr": { - "english_name": "Kwerba Mamberamo" - }, - "ahr": { - "english_name": "Ahirani" - }, - "rmp": { - "english_name": "Rempi" - }, - "veo": { - "english_name": "Ventureño" - }, - "eit": { - "english_name": "Eitiep" - }, - "apy": { - "english_name": "Apalaí" - }, - "pbf": { - "english_name": "Popoloca, Coyotepec" - }, - "tbz": { - "english_name": "Ditammari" - }, - "rim": { - "english_name": "Nyaturu" - }, - "mpq": { - "english_name": "Matís" - }, - "yda": { - "english_name": "Yanda" - }, - "ist": { - "english_name": "Istriot" - }, - "mxt": { - "english_name": "Mixtec, Jamiltepec" - }, - "swg": { - "english_name": "Swabian" - }, - "bwd": { - "english_name": "Bwaidoka" - }, - "zgm": { - "english_name": "Zhuang, Minz" - }, - "ysp": { - "english_name": "Lolopo, Southern" - }, - "ksc": { - "english_name": "Kalinga, Southern" - }, - "xkh": { - "english_name": "Karahawyana" - }, - "tfo": { - "english_name": "Tefaro" - }, - "rmu": { - "english_name": "Romani, Tavringer" - }, - "xjb": { - "english_name": "Minjungbal" - }, - "tbd": { - "english_name": "Kaki Ae" - }, - "kyb": { - "english_name": "Kalinga, Butbut" - }, - "doc": { - "english_name": "Dong, Northern" - }, - "rsi": { - "english_name": "Rennellese Sign Language" - }, - "otn": { - "english_name": "Otomi, Tenango" - }, - "nwg": { - "english_name": "Ngayawung" - }, - "xdy": { - "english_name": "Dayak, Malayic" - }, - "njx": { - "english_name": "Kunyi" - }, - "sxc": { - "english_name": "Sicanian" - }, - "aoe": { - "english_name": "Angal Enen" - }, - "gdh": { - "english_name": "Gadjerawang" - }, - "tn": { - "english_name": "Tswana" - }, - "pnh": { - "english_name": "Penrhyn" - }, - "mvv": { - "english_name": "Murut, Tagal" - }, - "kvf": { - "english_name": "Kabalai" - }, - "etb": { - "english_name": "Etebi" - }, - "sel": { - "english_name": "Selkup" - }, - "tcu": { - "english_name": "Tarahumara, Southeastern" - }, - "bjp": { - "english_name": "Fanamaket" - }, - "aft": { - "english_name": "Afitti" - }, - "kje": { - "english_name": "Kisar" - }, - "xud": { - "english_name": "Umiida" - }, - "yac": { - "english_name": "Yali, Pass Valley" - }, - "amz": { - "english_name": "Atampaya" - }, - "ekk": { - "english_name": "Estonian, Standard" - }, - "npl": { - "english_name": "Nahuatl, Southeastern Puebla" - }, - "bjy": { - "english_name": "Bayali" - }, - "xai": { - "english_name": "Kaimbé" - }, - "mxg": { - "english_name": "Mbangala" - }, - "jac": { - "english_name": "Popti'" - }, - "luu": { - "english_name": "Lumba-Yakkha" - }, - "cko": { - "english_name": "Anufo" - }, - "kxl": { - "english_name": "Kurux, Nepali" - }, - "mtt": { - "english_name": "Mota" - }, - "tgp": { - "english_name": "Tangoa" - }, - "oti": { - "english_name": "Oti" - }, - "bqq": { - "english_name": "Biritai" - }, - "sur": { - "english_name": "Mwaghavul" - }, - "nus": { - "english_name": "Nuer" - }, - "miu": { - "english_name": "Mixtec, Cacaloxtepec" - }, - "gel": { - "english_name": "ut-Ma'in" - }, - "yij": { - "english_name": "Yindjibarndi" - }, - "ypo": { - "english_name": "Phola, Alo" - }, - "mxj": { - "english_name": "Miju-Mishmi" - }, - "jni": { - "english_name": "Janji" - }, - "mwv": { - "english_name": "Mentawai" - }, - "ncb": { - "english_name": "Nicobarese, Central" - }, - "wwr": { - "english_name": "Warrwa" - }, - "scg": { - "english_name": "Sanggau" - }, - "ncm": { - "english_name": "Nambo" - }, - "ari": { - "english_name": "Arikara" - }, - "lmo": { - "english_name": "Lombard" - }, - "ibl": { - "english_name": "Ibaloi" - }, - "yil": { - "english_name": "Yindjilandji" - }, - "tls": { - "english_name": "Tambotalo" - }, - "lcm": { - "english_name": "Tungag" - }, - "xeg": { - "english_name": "//Xegwi" - }, - "zak": { - "english_name": "Zanaki" - }, - "izz": { - "english_name": "Izii" - }, - "wnm": { - "english_name": "Wanggamala" - }, - "mda": { - "english_name": "Mada (Nigeria)" - }, - "nuu": { - "english_name": "Ngbundu" - }, - "sri": { - "english_name": "Siriano" - }, - "ahn": { - "english_name": "Àhàn" - }, - "myb": { - "english_name": "Mbay" - }, - "acs": { - "english_name": "Acroá" - }, - "bld": { - "english_name": "Bolango" - }, - "boi": { - "english_name": "Barbareño" - }, - "nef": { - "english_name": "Nefamese" - }, - "cu": { - "english_name": "Slavic, Church" - }, - "kpa": { - "english_name": "Kutto" - }, - "kfj": { - "english_name": "Kemiehua" - }, - "nyr": { - "english_name": "Nyiha (Malawi)" - }, - "tou": { - "english_name": "Tho" - }, - "ssx": { - "english_name": "Samberigi" - }, - "myh": { - "english_name": "Makah" - }, - "vsl": { - "english_name": "Venezuelan Sign Language" - }, - "atq": { - "english_name": "Aralle-Tabulahan" - }, - "kuc": { - "english_name": "Kwinsu" - }, - "pid": { - "english_name": "Piaroa" - }, - "emy": { - "english_name": "Mayan, Epigraphic" - }, - "kxx": { - "english_name": "Likuba" - }, - "hik": { - "english_name": "Seit-Kaitetu" - }, - "kmp": { - "english_name": "Gimme" - }, - "ljl": { - "english_name": "Li'o" - }, - "syi": { - "english_name": "Seki" - }, - "bxv": { - "english_name": "Berakou" - }, - "cjs": { - "english_name": "Shor" - }, - "hhr": { - "english_name": "Kerak" - }, - "apl": { - "english_name": "Apache, Lipan" - }, - "vmi": { - "english_name": "Miwa" - }, - "oia": { - "english_name": "Oirata" - }, - "ihp": { - "english_name": "Iha" - }, - "ssf": { - "english_name": "Thao" - }, - "gn": { - "english_name": "Guarani" - }, - "yiq": { - "english_name": "Miqie" - }, - "cdy": { - "english_name": "Chadong" - }, - "hbn": { - "english_name": "Heiban" - }, - "efi": { - "english_name": "Efik" - }, - "new": { - "english_name": "Newari" - }, - "tlv": { - "english_name": "Taliabu" - }, - "zka": { - "english_name": "Kaimbulawa" - }, - "sbk": { - "english_name": "Safwa" - }, - "dtd": { - "english_name": "Ditidaht" - }, - "ggg": { - "english_name": "Gurgula" - }, - "ncg": { - "english_name": "Nisga'a" - }, - "pgl": { - "english_name": "Irish, Primitive" - }, - "tsz": { - "english_name": "Purepecha" - }, - "tlf": { - "english_name": "Telefol" - }, - "nke": { - "english_name": "Duke" - }, - "daw": { - "english_name": "Davawenyo" - }, - "xrg": { - "english_name": "Minang" - }, - "nco": { - "english_name": "Sibe" - }, - "jui": { - "english_name": "Ngadjuri" - }, - "ng": { - "english_name": "Ndonga" - }, - "zoh": { - "english_name": "Zoque, Chimalapa" - }, - "mjg": { - "english_name": "Tu" - }, - "ur": { - "english_name": "Urdu" - }, - "kli": { - "english_name": "Kalumpang" - }, - "atz": { - "english_name": "Arta" - }, - "cic": { - "english_name": "Chickasaw" - }, - "lmb": { - "english_name": "Merei" - }, - "ecs": { - "english_name": "Ecuadorian Sign Language" - }, - "ywq": { - "english_name": "Yi, Wuding-Luquan" - }, - "lri": { - "english_name": "Marachi" - }, - "xvs": { - "english_name": "Vestinian" - }, - "mwx": { - "english_name": "Mediak" - }, - "haa": { - "english_name": "Han" - }, - "iru": { - "english_name": "Irula" - }, - "gbu": { - "english_name": "Gagadu" - }, - "bzd": { - "english_name": "Bribri" - }, - "xip": { - "english_name": "Xipináwa" - }, - "jnj": { - "english_name": "Yemsa" - }, - "bmt": { - "english_name": "Biao Mon" - }, - "tli": { - "english_name": "Tlingit" - }, - "pcp": { - "english_name": "Pacahuara" - }, - "rma": { - "english_name": "Rama" - }, - "kdf": { - "english_name": "Mamusi" - }, - "bga": { - "english_name": "Gwamhi-Wuri" - }, - "jns": { - "english_name": "Jaunsari" - }, - "apx": { - "english_name": "Aputai" - }, - "dbg": { - "english_name": "Dogon, Dogul Dom" - }, - "nii": { - "english_name": "Nii" - }, - "aip": { - "english_name": "Burumakok" - }, - "swk": { - "english_name": "Sena, Malawi" - }, - "koc": { - "english_name": "Kpati" - }, - "clk": { - "english_name": "Idu-Mishmi" - }, - "lcd": { - "english_name": "Lola" - }, - "msz": { - "english_name": "Momare" - }, - "baf": { - "english_name": "Nubaca" - }, - "too": { - "english_name": "Totonac, Xicotepec De Juárez" - }, - "gej": { - "english_name": "Gen" - }, - "tcw": { - "english_name": "Totonac, Tecpatlán" - }, - "xns": { - "english_name": "Kanashi" - }, - "dje": { - "english_name": "Zarma" - }, - "skb": { - "english_name": "Saek" - }, - "erg": { - "english_name": "Sie" - }, - "xod": { - "english_name": "Kokoda" - }, - "abv": { - "english_name": "Arabic, Baharna" - }, - "iqw": { - "english_name": "Ikwo" - }, - "nmu": { - "english_name": "Maidu, Northeast" - }, - "pkc": { - "english_name": "Paekche" - }, - "nop": { - "english_name": "Numanggang" - }, - "mkl": { - "english_name": "Mokole" - }, - "blc": { - "english_name": "Bella Coola" - }, - "bgu": { - "english_name": "Mbongno" - }, - "mqm": { - "english_name": "Marquesan, South" - }, - "gwg": { - "english_name": "Moo" - }, - "kzy": { - "english_name": "Kango (Tshopo District)" - }, - "ywr": { - "english_name": "Yawuru" - }, - "osc": { - "english_name": "Oscan" - }, - "khy": { - "english_name": "Kele (Democratic Republic of Congo)" - }, - "kef": { - "english_name": "Kpessi" - }, - "kwv": { - "english_name": "Sara Kaba Náà" - }, - "svx": { - "english_name": "Skalvian" - }, - "rwm": { - "english_name": "Amba (Uganda)" - }, - "sdf": { - "english_name": "Sarli" - }, - "wtm": { - "english_name": "Mewati" - }, - "ikt": { - "english_name": "Inuinnaqtun" - }, - "pdu": { - "english_name": "Kayan" - }, - "fcs": { - "english_name": "Quebec Sign Language" - }, - "ott": { - "english_name": "Otomi, Temoaya" - }, - "nyn": { - "english_name": "Nyankole" - }, - "scu": { - "english_name": "Shumcho" - }, - "pwg": { - "english_name": "Gapapaiwa" - }, - "wbp": { - "english_name": "Warlpiri" - }, - "pmk": { - "english_name": "Pamlico" - }, - "olr": { - "english_name": "Olrat" - }, - "huj": { - "english_name": "Hmong, Northern Guiyang" - }, - "cek": { - "english_name": "Chin, Eastern Khumi" - }, - "ena": { - "english_name": "Apali" - }, - "txn": { - "english_name": "Tarangan, West" - }, - "kng": { - "english_name": "Koongo" - }, - "njs": { - "english_name": "Nisa" - }, - "mes": { - "english_name": "Masmaje" - }, - "sth": { - "english_name": "Shelta" - }, - "pia": { - "english_name": "Pima Bajo" - }, - "zmn": { - "english_name": "Mbangwe" - }, - "mvn": { - "english_name": "Minaveha" - }, - "tcb": { - "english_name": "Tanacross" - }, - "mcm": { - "english_name": "Creole Portuguese, Malaccan" - }, - "umr": { - "english_name": "Umbugarla" - }, - "msv": { - "english_name": "Maslam" - }, - "xul": { - "english_name": "Ngunawal" - }, - "dop": { - "english_name": "Lukpa" - }, - "txs": { - "english_name": "Tonsea" - }, - "onp": { - "english_name": "Sartang" - }, - "yzk": { - "english_name": "Zokhuo" - }, - "ank": { - "english_name": "Goemai" - } + "aaa": { + "english_name": "Ghotuo" }, - "yahoo": [ - "ar", - "bg", - "cs", - "da", - "de", - "el", - "en", - "es", - "et", - "fi", - "fr", - "he", - "hr", - "hu", - "it", - "ja", - "ko", - "lt", - "lv", - "nl", - "no", - "pl", - "pt", - "ro", - "ru", - "sk", - "sl", - "sv", - "th", - "tr", - "zh-CHS", - "zh-CHT" - ], - "swisscows": [], - "wikipedia": { - "nl": { - "articles": 1954031, - "english_name": "Dutch", - "name": "Nederlands" - }, - "ceb": { - "articles": 5376890, - "english_name": "Cebuano", - "name": "Sinugboanong Binisaya" - }, - "jam": { - "articles": 1632, - "english_name": "Jamaican Patois", - "name": "Jumiekan Kryuol" - }, - "crh": { - "articles": 6172, - "english_name": "Crimean Tatar", - "name": "Qırımtatarca" - }, - "st": { - "articles": 544, - "english_name": "Sesotho", - "name": "Sesotho" - }, - "id": { - "articles": 449446, - "english_name": "Indonesian", - "name": "Bahasa Indonesia" - }, - "szl": { - "articles": 7812, - "english_name": "Silesian", - "name": "Ślůnski" - }, - "zh-yue": { - "articles": 70490, - "english_name": "Cantonese", - "name": "粵語" - }, - "ca": { - "articles": 599790, - "english_name": "Catalan", - "name": "Català" - }, - "ab": { - "articles": 3452, - "english_name": "Abkhazian", - "name": "Аҧсуа" - }, - "lad": { - "articles": 3828, - "english_name": "Ladino", - "name": "Dzhudezmo" - }, - "rue": { - "articles": 6891, - "english_name": "Rusyn", - "name": "Русиньскый" - }, - "om": { - "articles": 775, - "english_name": "Oromo", - "name": "Oromoo" - }, - "azb": { - "articles": 118928, - "english_name": "South Azerbaijani", - "name": "تۆرکجه" - }, - "sr": { - "articles": 614180, - "english_name": "Serbian", - "name": "Српски / Srpski" - }, - "tg": { - "articles": 96078, - "english_name": "Tajik", - "name": "Тоҷикӣ" - }, - "ee": { - "articles": 350, - "english_name": "Ewe", - "name": "Eʋegbe" - }, - "hsb": { - "articles": 13357, - "english_name": "Upper Sorbian", - "name": "Hornjoserbsce" - }, - "pag": { - "articles": 2521, - "english_name": "Pangasinan", - "name": "Pangasinan" - }, - "tyv": { - "articles": 1738, - "english_name": "Tuvan", - "name": "Тыва" - }, - "got": { - "articles": 588, - "english_name": "Gothic", - "name": "𐌲𐌿𐍄𐌹𐍃𐌺" - }, - "ss": { - "articles": 450, - "english_name": "Swati", - "name": "SiSwati" - }, - "stq": { - "articles": 3998, - "english_name": "Saterland Frisian", - "name": "Seeltersk" - }, - "is": { - "articles": 46096, - "english_name": "Icelandic", - "name": "Íslenska" - }, - "az": { - "articles": 141672, - "english_name": "Azerbaijani", - "name": "Azərbaycanca" - }, - "vec": { - "articles": 11266, - "english_name": "Venetian", - "name": "Vèneto" - }, - "na": { - "articles": 1305, - "english_name": "Nauruan", - "name": "dorerin Naoero" - }, - "an": { - "articles": 34148, - "english_name": "Aragonese", - "name": "Aragonés" - }, - "tk": { - "articles": 5514, - "english_name": "Turkmen", - "name": "Türkmen" - }, - "zea": { - "articles": 4580, - "english_name": "Zeelandic", - "name": "Zeêuws" - }, - "la": { - "articles": 129779, - "english_name": "Latin", - "name": "Latina" - }, - "kv": { - "articles": 5308, - "english_name": "Komi", - "name": "Коми" - }, - "vo": { - "articles": 122174, - "english_name": "Volapük", - "name": "Volapük" - }, - "el": { - "articles": 157114, - "english_name": "Greek", - "name": "Ελληνικά" - }, - "hu": { - "articles": 442291, - "english_name": "Hungarian", - "name": "Magyar" - }, - "bi": { - "articles": 1179, - "english_name": "Bislama", - "name": "Bislama" - }, - "fr": { - "articles": 2070378, - "english_name": "French", - "name": "Français" - }, - "th": { - "articles": 128977, - "english_name": "Thai", - "name": "ไทย" - }, - "zh": { - "articles": 1038913, - "english_name": "Chinese", - "name": "中文" - }, - "de": { - "articles": 2256718, - "english_name": "German", - "name": "Deutsch" - }, - "pms": { - "articles": 64391, - "english_name": "Piedmontese", - "name": "Piemontèis" - }, - "gn": { - "articles": 3637, - "english_name": "Guarani", - "name": "Avañe'ẽ" - }, - "lo": { - "articles": 3101, - "english_name": "Lao", - "name": "ລາວ" - }, - "bxr": { - "articles": 2124, - "english_name": "Buryat", - "name": "Буряад" - }, - "ast": { - "articles": 99530, - "english_name": "Asturian", - "name": "Asturianu" - }, - "wo": { - "articles": 1177, - "english_name": "Wolof", - "name": "Wolof" - }, - "pap": { - "articles": 1953, - "english_name": "Papiamentu", - "name": "Papiamentu" - }, - "fa": { - "articles": 655431, - "english_name": "Persian", - "name": "فارسی" - }, - "roa-tara": { - "articles": 9243, - "english_name": "Tarantino", - "name": "Tarandíne" - }, - "af": { - "articles": 68807, - "english_name": "Afrikaans", - "name": "Afrikaans" - }, - "lbe": { - "articles": 1216, - "english_name": "Lak", - "name": "Лакку" - }, - "frp": { - "articles": 3254, - "english_name": "Franco-Provençal", - "name": "Arpitan" - }, - "mt": { - "articles": 3336, - "english_name": "Maltese", - "name": "Malti" - }, - "bcl": { - "articles": 8664, - "english_name": "Central Bicolano", - "name": "Bikol" - }, - "bh": { - "articles": 6686, - "english_name": "Bihari", - "name": "भोजपुरी" - }, - "csb": { - "articles": 5258, - "english_name": "Kashubian", - "name": "Kaszëbsczi" - }, - "scn": { - "articles": 26060, - "english_name": "Sicilian", - "name": "Sicilianu" - }, - "sw": { - "articles": 47744, - "english_name": "Swahili", - "name": "Kiswahili" - }, - "kw": { - "articles": 3839, - "english_name": "Cornish", - "name": "Kernewek/Karnuack" - }, - "lrc": { - "articles": 5357, - "english_name": "Northern Luri", - "name": "لۊری شومالی" - }, - "wa": { - "articles": 14790, - "english_name": "Walloon", - "name": "Walon" - }, - "arz": { - "articles": 20166, - "english_name": "Egyptian Arabic", - "name": "مصرى (Maṣri)" - }, - "pfl": { - "articles": 2502, - "english_name": "Palatinate German", - "name": "Pälzisch" - }, - "tt": { - "articles": 82594, - "english_name": "Tatar", - "name": "Tatarça / Татарча" - }, - "ks": { - "articles": 324, - "english_name": "Kashmiri", - "name": "कश्मीरी / كشميري" - }, - "srn": { - "articles": 1061, - "english_name": "Sranan", - "name": "Sranantongo" - }, - "lfn": { - "articles": 3083, - "english_name": "Lingua Franca Nova", - "name": "Lingua franca nova" - }, - "kbd": { - "articles": 1578, - "english_name": "Kabardian Circassian", - "name": "Адыгэбзэ (Adighabze)" - }, - "simple": { - "articles": 141947, - "english_name": "Simple English", - "name": "Simple English" - }, - "sc": { - "articles": 5907, - "english_name": "Sardinian", - "name": "Sardu" - }, - "ta": { - "articles": 119140, - "english_name": "Tamil", - "name": "தமிழ்" - }, - "lg": { - "articles": 1155, - "english_name": "Luganda", - "name": "Luganda" - }, - "ckb": { - "articles": 22870, - "english_name": "Sorani", - "name": "Soranî / کوردی" - }, - "ht": { - "articles": 54219, - "english_name": "Haitian", - "name": "Krèyol ayisyen" - }, - "ve": { - "articles": 265, - "english_name": "Venda", - "name": "Tshivenda" - }, - "nds": { - "articles": 41178, - "english_name": "Low Saxon", - "name": "Plattdüütsch" - }, - "km": { - "articles": 7105, - "english_name": "Khmer", - "name": "ភាសាខ្មែរ" - }, - "ay": { - "articles": 4402, - "english_name": "Aymara", - "name": "Aymar" - }, - "mg": { - "articles": 90635, - "english_name": "Malagasy", - "name": "Malagasy" - }, - "frr": { - "articles": 8460, - "english_name": "North Frisian", - "name": "Nordfriisk" - }, - "zh-classical": { - "articles": 8663, - "english_name": "Classical Chinese", - "name": "古文 / 文言文" - }, - "ny": { - "articles": 487, - "english_name": "Chichewa", - "name": "Chichewa" - }, - "eo": { - "articles": 253490, - "english_name": "Esperanto", - "name": "Esperanto" - }, - "dty": { - "articles": 2967, - "english_name": "Doteli", - "name": "डोटेली" - }, - "ki": { - "articles": 1358, - "english_name": "Kikuyu", - "name": "Gĩkũyũ" - }, - "ko": { - "articles": 438644, - "english_name": "Korean", - "name": "한국어" - }, - "ig": { - "articles": 1376, - "english_name": "Igbo", - "name": "Igbo" - }, - "sah": { - "articles": 11943, - "english_name": "Sakha", - "name": "Саха тыла (Saxa Tyla)" - }, - "ar": { - "articles": 656175, - "english_name": "Arabic", - "name": "العربية" - }, - "mk": { - "articles": 98050, - "english_name": "Macedonian", - "name": "Македонски" - }, - "ff": { - "articles": 228, - "english_name": "Fula", - "name": "Fulfulde" - }, - "he": { - "articles": 236237, - "english_name": "Hebrew", - "name": "עברית" - }, - "inh": { - "articles": 791, - "english_name": "Ingush", - "name": "Гӏалгӏай" - }, - "av": { - "articles": 2309, - "english_name": "Avar", - "name": "Авар" - }, - "mai": { - "articles": 13164, - "english_name": "Maithili", - "name": "मैथिली" - }, - "zu": { - "articles": 1050, - "english_name": "Zulu", - "name": "isiZulu" - }, - "eml": { - "articles": 11866, - "english_name": "Emilian-Romagnol", - "name": "Emiliàn e rumagnòl" - }, - "ti": { - "articles": 168, - "english_name": "Tigrinya", - "name": "ትግርኛ" - }, - "lmo": { - "articles": 38071, - "english_name": "Lombard", - "name": "Lumbaart" - }, - "et": { - "articles": 185271, - "english_name": "Estonian", - "name": "Eesti" - }, - "myv": { - "articles": 5415, - "english_name": "Erzya", - "name": "Эрзянь (Erzjanj Kelj)" - }, - "si": { - "articles": 14918, - "english_name": "Sinhalese", - "name": "සිංහල" - }, - "ln": { - "articles": 3049, - "english_name": "Lingala", - "name": "Lingala" - }, - "shn": { - "articles": 3239, - "english_name": "ၽႃႇသႃႇတႆး ", - "name": "Shan" - }, - "sh": { - "articles": 447497, - "english_name": "Serbo-Croatian", - "name": "Srpskohrvatski / Српскохрватски" - }, - "it": { - "articles": 1491690, - "english_name": "Italian", - "name": "Italiano" - }, - "pam": { - "articles": 8825, - "english_name": "Kapampangan", - "name": "Kapampangan" - }, - "fy": { - "articles": 41308, - "english_name": "West Frisian", - "name": "Frysk" - }, - "ha": { - "articles": 2740, - "english_name": "Hausa", - "name": "Hausa / هَوُسَ" - }, - "diq": { - "articles": 9107, - "english_name": "Zazaki", - "name": "Zazaki" - }, - "ty": { - "articles": 1199, - "english_name": "Tahitian", - "name": "Reo Mā`ohi" - }, - "sa": { - "articles": 11357, - "english_name": "Sanskrit", - "name": "संस्कृतम्" - }, - "ku": { - "articles": 24022, - "english_name": "Kurdish", - "name": "Kurdî / كوردی" - }, - "io": { - "articles": 28134, - "english_name": "Ido", - "name": "Ido" - }, - "bjn": { - "articles": 1918, - "english_name": "Banjar", - "name": "Bahasa Banjar" - }, - "mwl": { - "articles": 3674, - "english_name": "Mirandese", - "name": "Mirandés" - }, - "se": { - "articles": 7464, - "english_name": "Northern Sami", - "name": "Sámegiella" - }, - "tet": { - "articles": 1440, - "english_name": "Tetum", - "name": "Tetun" - }, - "gom": { - "articles": 3598, - "english_name": "Goan Konkani", - "name": "गोंयची कोंकणी / Gõychi Konknni" - }, - "lij": { - "articles": 3456, - "english_name": "Ligurian", - "name": "Líguru" - }, - "ga": { - "articles": 49639, - "english_name": "Irish", - "name": "Gaeilge" - }, - "roa-rup": { - "articles": 1216, - "english_name": "Aromanian", - "name": "Armãneashce" - }, - "pdc": { - "articles": 1858, - "english_name": "Pennsylvania German", - "name": "Deitsch" - }, - "cs": { - "articles": 419392, - "english_name": "Czech", - "name": "Čeština" - }, - "uz": { - "articles": 130227, - "english_name": "Uzbek", - "name": "O‘zbek" - }, - "ch": { - "articles": 472, - "english_name": "Chamorro", - "name": "Chamoru" - }, - "rn": { - "articles": 609, - "english_name": "Kirundi", - "name": "Kirundi" - }, - "or": { - "articles": 14550, - "english_name": "Oriya", - "name": "ଓଡ଼ିଆ" - }, - "gl": { - "articles": 153607, - "english_name": "Galician", - "name": "Galego" - }, - "atj": { - "articles": 626, - "english_name": "Atikamekw", - "name": "Atikamekw" - }, - "pi": { - "articles": 2535, - "english_name": "Pali", - "name": "पाऴि" - }, - "fur": { - "articles": 3289, - "english_name": "Friulian", - "name": "Furlan" - }, - "li": { - "articles": 12316, - "english_name": "Limburgish", - "name": "Limburgs" - }, - "yi": { - "articles": 14571, - "english_name": "Yiddish", - "name": "ייִדיש" - }, - "lv": { - "articles": 90266, - "english_name": "Latvian", - "name": "Latviešu" - }, - "ro": { - "articles": 390804, - "english_name": "Romanian", - "name": "Română" - }, - "bm": { - "articles": 651, - "english_name": "Bambara", - "name": "Bamanankan" - }, - "ja": { - "articles": 1134685, - "english_name": "Japanese", - "name": "日本語" - }, - "cy": { - "articles": 102137, - "english_name": "Welsh", - "name": "Cymraeg" - }, - "wuu": { - "articles": 16289, - "english_name": "Wu", - "name": "吴语" - }, - "cv": { - "articles": 41622, - "english_name": "Chuvash", - "name": "Чăваш" - }, - "ady": { - "articles": 411, - "english_name": "Adyghe", - "name": "Адыгэбзэ" - }, - "min": { - "articles": 222492, - "english_name": "Minangkabau", - "name": "Minangkabau" - }, - "be-tarask": { - "articles": 65655, - "english_name": "Belarusian (Taraškievica)", - "name": "Беларуская (тарашкевіца)" - }, - "kl": { - "articles": 1663, - "english_name": "Greenlandic", - "name": "Kalaallisut" - }, - "am": { - "articles": 14482, - "english_name": "Amharic", - "name": "አማርኛ" - }, - "ie": { - "articles": 4303, - "english_name": "Interlingue", - "name": "Interlingue" - }, - "sn": { - "articles": 4227, - "english_name": "Shona", - "name": "chiShona" - }, - "pnb": { - "articles": 47107, - "english_name": "Western Punjabi", - "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)" - }, - "sm": { - "articles": 801, - "english_name": "Samoan", - "name": "Gagana Samoa" - }, - "hak": { - "articles": 8894, - "english_name": "Hakka", - "name": "Hak-kâ-fa / 客家話" - }, - "nso": { - "articles": 8094, - "english_name": "Northern Sotho", - "name": "Sepedi" - }, - "fj": { - "articles": 425, - "english_name": "Fijian", - "name": "Na Vosa Vakaviti" - }, - "da": { - "articles": 242006, - "english_name": "Danish", - "name": "Dansk" - }, - "ky": { - "articles": 79376, - "english_name": "Kirghiz", - "name": "Кыргызча" - }, - "to": { - "articles": 1693, - "english_name": "Tongan", - "name": "faka Tonga" - }, - "udm": { - "articles": 4565, - "english_name": "Udmurt", - "name": "Удмурт кыл" - }, - "nds-nl": { - "articles": 6812, - "english_name": "Dutch Low Saxon", - "name": "Nedersaksisch" - }, - "kaa": { - "articles": 1910, - "english_name": "Karakalpak", - "name": "Qaraqalpaqsha" - }, - "as": { - "articles": 5141, - "english_name": "Assamese", - "name": "অসমীয়া" - }, - "sg": { - "articles": 258, - "english_name": "Sango", - "name": "Sängö" - }, - "ik": { - "articles": 262, - "english_name": "Inupiak", - "name": "Iñupiak" - }, - "gd": { - "articles": 14774, - "english_name": "Scottish Gaelic", - "name": "Gàidhlig" - }, - "tpi": { - "articles": 1486, - "english_name": "Tok Pisin", - "name": "Tok Pisin" - }, - "lez": { - "articles": 3963, - "english_name": "Lezgian", - "name": "Лезги чІал (Lezgi č’al)" - }, - "new": { - "articles": 72212, - "english_name": "Newar", - "name": "नेपाल भाषा" - }, - "kg": { - "articles": 1184, - "english_name": "Kongo", - "name": "KiKongo" - }, - "cdo": { - "articles": 14111, - "english_name": "Min Dong", - "name": "Mìng-dĕ̤ng-ngṳ̄" - }, - "oc": { - "articles": 85227, - "english_name": "Occitan", - "name": "Occitan" - }, - "nap": { - "articles": 14576, - "english_name": "Neapolitan", - "name": "Nnapulitano" - }, - "be": { - "articles": 160751, - "english_name": "Belarusian", - "name": "Беларуская" - }, - "kk": { - "articles": 223486, - "english_name": "Kazakh", - "name": "Қазақша" - }, - "bs": { - "articles": 79235, - "english_name": "Bosnian", - "name": "Bosanski" - }, - "bug": { - "articles": 14121, - "english_name": "Buginese", - "name": "Basa Ugi" - }, - "sq": { - "articles": 75615, - "english_name": "Albanian", - "name": "Shqip" - }, - "mhr": { - "articles": 10046, - "english_name": "Meadow Mari", - "name": "Олык Марий (Olyk Marij)" - }, - "eu": { - "articles": 309974, - "english_name": "Basque", - "name": "Euskara" - }, - "ka": { - "articles": 126147, - "english_name": "Georgian", - "name": "ქართული" - }, - "ba": { - "articles": 46046, - "english_name": "Bashkir", - "name": "Башҡорт" - }, - "hi": { - "articles": 128996, - "english_name": "Hindi", - "name": "हिन्दी" - }, - "rw": { - "articles": 1822, - "english_name": "Kinyarwanda", - "name": "Ikinyarwanda" - }, - "pnt": { - "articles": 462, - "english_name": "Pontic", - "name": "Ποντιακά" - }, - "kab": { - "articles": 2860, - "english_name": "Kabyle", - "name": "Taqbaylit" - }, - "nv": { - "articles": 6991, - "english_name": "Navajo", - "name": "Diné bizaad" - }, - "mrj": { - "articles": 10269, - "english_name": "Hill Mari", - "name": "Кырык Мары (Kyryk Mary)" - }, - "mn": { - "articles": 18356, - "english_name": "Mongolian", - "name": "Монгол" - }, - "ang": { - "articles": 3077, - "english_name": "Anglo-Saxon", - "name": "Englisc" - }, - "tw": { - "articles": 657, - "english_name": "Twi", - "name": "Twi" - }, - "ur": { - "articles": 142712, - "english_name": "Urdu", - "name": "اردو" - }, - "tn": { - "articles": 640, - "english_name": "Tswana", - "name": "Setswana" - }, - "krc": { - "articles": 2028, - "english_name": "Karachay-Balkar", - "name": "Къарачай-Малкъар (Qarachay-Malqar)" - }, - "sk": { - "articles": 228015, - "english_name": "Slovak", - "name": "Slovenčina" - }, - "sv": { - "articles": 3760984, - "english_name": "Swedish", - "name": "Svenska" - }, - "pl": { - "articles": 1314525, - "english_name": "Polish", - "name": "Polski" - }, - "uk": { - "articles": 878251, - "english_name": "Ukrainian", - "name": "Українська" - }, - "pt": { - "articles": 1014081, - "english_name": "Portuguese", - "name": "Português" - }, - "xal": { - "articles": 2075, - "english_name": "Kalmyk", - "name": "Хальмг" - }, - "nn": { - "articles": 141839, - "english_name": "Norwegian (Nynorsk)", - "name": "Nynorsk" - }, - "fo": { - "articles": 12891, - "english_name": "Faroese", - "name": "Føroyskt" - }, - "gor": { - "articles": 1926, - "english_name": "Gorontalo", - "name": "Hulontalo" - }, - "te": { - "articles": 69978, - "english_name": "Telugu", - "name": "తెలుగు" - }, - "lb": { - "articles": 55377, - "english_name": "Luxembourgish", - "name": "Lëtzebuergesch" - }, - "chy": { - "articles": 611, - "english_name": "Cheyenne", - "name": "Tsetsêhestâhese" - }, - "bn": { - "articles": 63523, - "english_name": "Bengali", - "name": "বাংলা" - }, - "hy": { - "articles": 250045, - "english_name": "Armenian", - "name": "Հայերեն" - }, - "ug": { - "articles": 4104, - "english_name": "Uyghur", - "name": "ئۇيغۇر تىلى" - }, - "bg": { - "articles": 248452, - "english_name": "Bulgarian", - "name": "Български" - }, - "arc": { - "articles": 1628, - "english_name": "Aramaic", - "name": "ܐܪܡܝܐ" - }, - "hr": { - "articles": 201383, - "english_name": "Croatian", - "name": "Hrvatski" - }, - "ml": { - "articles": 61227, - "english_name": "Malayalam", - "name": "മലയാളം" - }, - "so": { - "articles": 5530, - "english_name": "Somali", - "name": "Soomaali" - }, - "bpy": { - "articles": 25081, - "english_name": "Bishnupriya Manipuri", - "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী" - }, - "tr": { - "articles": 321169, - "english_name": "Turkish", - "name": "Türkçe" - }, - "mr": { - "articles": 52667, - "english_name": "Marathi", - "name": "मराठी" - }, - "ce": { - "articles": 208906, - "english_name": "Chechen", - "name": "Нохчийн" - }, - "yo": { - "articles": 31774, - "english_name": "Yoruba", - "name": "Yorùbá" - }, - "no": { - "articles": 500849, - "english_name": "Norwegian (Bokmål)", - "name": "Norsk (Bokmål)" - }, - "fi": { - "articles": 449407, - "english_name": "Finnish", - "name": "Suomi" - }, - "nah": { - "articles": 6925, - "english_name": "Nahuatl", - "name": "Nāhuatl" - }, - "ia": { - "articles": 21225, - "english_name": "Interlingua", - "name": "Interlingua" - }, - "tl": { - "articles": 77677, - "english_name": "Tagalog", - "name": "Tagalog" - }, - "vep": { - "articles": 5880, - "english_name": "Vepsian", - "name": "Vepsän" - }, - "ne": { - "articles": 31633, - "english_name": "Nepali", - "name": "नेपाली" - }, - "cr": { - "articles": 103, - "english_name": "Cree", - "name": "Nehiyaw" - }, - "gv": { - "articles": 4968, - "english_name": "Manx", - "name": "Gaelg" - }, - "hif": { - "articles": 9756, - "english_name": "Fiji Hindi", - "name": "Fiji Hindi" - }, - "ksh": { - "articles": 2842, - "english_name": "Ripuarian", - "name": "Ripoarisch" - }, - "jbo": { - "articles": 1233, - "english_name": "Lojban", - "name": "Lojban" - }, - "ilo": { - "articles": 11592, - "english_name": "Ilokano", - "name": "Ilokano" - }, - "ltg": { - "articles": 815, - "english_name": "Latgalian", - "name": "Latgaļu" - }, - "dv": { - "articles": 3024, - "english_name": "Divehi", - "name": "ދިވެހިބަސް" - }, - "vls": { - "articles": 6703, - "english_name": "West Flemish", - "name": "West-Vlams" - }, - "co": { - "articles": 5643, - "english_name": "Corsican", - "name": "Corsu" - }, - "bat-smg": { - "articles": 16427, - "english_name": "Samogitian", - "name": "Žemaitėška" - }, - "zh-min-nan": { - "articles": 227702, - "english_name": "Min Nan", - "name": "Bân-lâm-gú" - }, - "glk": { - "articles": 5666, - "english_name": "Gilaki", - "name": "گیلکی" - }, - "bo": { - "articles": 5827, - "english_name": "Tibetan", - "name": "བོད་སྐད" - }, - "sl": { - "articles": 163198, - "english_name": "Slovenian", - "name": "Slovenščina" - }, - "os": { - "articles": 11225, - "english_name": "Ossetian", - "name": "Иронау" - }, - "sat": { - "articles": 532, - "english_name": "Santali", - "name": "ᱥᱟᱱᱛᱟᱲᱤ" - }, - "qu": { - "articles": 20900, - "english_name": "Quechua", - "name": "Runa Simi" - }, - "za": { - "articles": 1867, - "english_name": "Zhuang", - "name": "Cuengh" - }, - "tcy": { - "articles": 994, - "english_name": "Tulu", - "name": "ತುಳು" - }, - "ps": { - "articles": 9702, - "english_name": "Pashto", - "name": "پښتو" - }, - "pih": { - "articles": 681, - "english_name": "Norfolk", - "name": "Norfuk" - }, - "cbk-zam": { - "articles": 3000, - "english_name": "Zamboanga Chavacano", - "name": "Chavacano de Zamboanga" - }, - "mdf": { - "articles": 1188, - "english_name": "Moksha", - "name": "Мокшень (Mokshanj Kälj)" - }, - "mi": { - "articles": 7145, - "english_name": "Maori", - "name": "Māori" - }, - "sco": { - "articles": 53388, - "english_name": "Scots", - "name": "Scots" - }, - "dsb": { - "articles": 3210, - "english_name": "Lower Sorbian", - "name": "Dolnoserbski" - }, - "gag": { - "articles": 2763, - "english_name": "Gagauz", - "name": "Gagauz" - }, - "haw": { - "articles": 3234, - "english_name": "Hawaiian", - "name": "Hawai`i" - }, - "rm": { - "articles": 3564, - "english_name": "Romansh", - "name": "Rumantsch" - }, - "bar": { - "articles": 27285, - "english_name": "Bavarian", - "name": "Boarisch" - }, - "kn": { - "articles": 24065, - "english_name": "Kannada", - "name": "ಕನ್ನಡ" - }, - "olo": { - "articles": 2812, - "english_name": "Livvi-Karelian", - "name": "Karjalan" - }, - "als": { - "articles": 25337, - "english_name": "Alemannic", - "name": "Alemannisch" - }, - "kbp": { - "articles": 1479, - "english_name": "Kabiye", - "name": "Kabɩyɛ" - }, - "map-bms": { - "articles": 13336, - "english_name": "Banyumasan", - "name": "Basa Banyumasan" - }, - "koi": { - "articles": 3451, - "english_name": "Komi-Permyak", - "name": "Перем Коми (Perem Komi)" - }, - "pcd": { - "articles": 4258, - "english_name": "Picard", - "name": "Picard" - }, - "ru": { - "articles": 1519724, - "english_name": "Russian", - "name": "Русский" - }, - "su": { - "articles": 39840, - "english_name": "Sundanese", - "name": "Basa Sunda" - }, - "lt": { - "articles": 193352, - "english_name": "Lithuanian", - "name": "Lietuvių" - }, - "vi": { - "articles": 1198961, - "english_name": "Vietnamese", - "name": "Tiếng Việt" - }, - "ms": { - "articles": 323274, - "english_name": "Malay", - "name": "Bahasa Melayu" - }, - "my": { - "articles": 42128, - "english_name": "Burmese", - "name": "မြန်မာဘာသာ" - }, - "jv": { - "articles": 55104, - "english_name": "Javanese", - "name": "Basa Jawa" - }, - "war": { - "articles": 1263483, - "english_name": "Waray-Waray", - "name": "Winaray" - }, - "cu": { - "articles": 669, - "english_name": "Old Church Slavonic", - "name": "Словѣньскъ" - }, - "ace": { - "articles": 7602, - "english_name": "Acehnese", - "name": "Bahsa Acèh" - }, - "gan": { - "articles": 6411, - "english_name": "Gan", - "name": "贛語" - }, - "xh": { - "articles": 751, - "english_name": "Xhosa", - "name": "isiXhosa" - }, - "rmy": { - "articles": 660, - "english_name": "Romani", - "name": "romani - रोमानी" - }, - "xmf": { - "articles": 12678, - "english_name": "Mingrelian", - "name": "მარგალური (Margaluri)" - }, - "en": { - "articles": 5781855, - "english_name": "English", - "name": "English" - }, - "nov": { - "articles": 1661, - "english_name": "Novial", - "name": "Novial" - }, - "ak": { - "articles": 567, - "english_name": "Akan", - "name": "Akana" - }, - "fiu-vro": { - "articles": 5463, - "english_name": "Võro", - "name": "Võro" - }, - "mzn": { - "articles": 12786, - "english_name": "Mazandarani", - "name": "مَزِروني" - }, - "ts": { - "articles": 583, - "english_name": "Tsonga", - "name": "Xitsonga" - }, - "dz": { - "articles": 218, - "english_name": "Dzongkha", - "name": "ཇོང་ཁ" - }, - "es": { - "articles": 1497393, - "english_name": "Spanish", - "name": "Español" - }, - "gu": { - "articles": 28289, - "english_name": "Gujarati", - "name": "ગુજરાતી" - }, - "br": { - "articles": 66053, - "english_name": "Breton", - "name": "Brezhoneg" - }, - "sd": { - "articles": 11114, - "english_name": "Sindhi", - "name": "سنڌي، سندھی ، सिन्ध" - }, - "nrm": { - "articles": 4029, - "english_name": "Norman", - "name": "Nouormand/Normaund" - }, - "iu": { - "articles": 401, - "english_name": "Inuktitut", - "name": "ᐃᓄᒃᑎᑐᑦ" - }, - "tum": { - "articles": 572, - "english_name": "Tumbuka", - "name": "chiTumbuka" - }, - "chr": { - "articles": 855, - "english_name": "Cherokee", - "name": "ᏣᎳᎩ" - }, - "pa": { - "articles": 30886, - "english_name": "Punjabi", - "name": "ਪੰਜਾਬੀ" - }, - "ext": { - "articles": 3020, - "english_name": "Extremaduran", - "name": "Estremeñu" - } + "aab": { + "english_name": "Alumu-Tesu" }, - "qwant images": [ - "bg-BG", - "br-FR", - "ca-AD", - "ca-ES", - "ca-FR", - "co-FR", - "cs-CZ", - "cy-GB", - "da-DK", - "de-AT", - "de-CH", - "de-DE", - "el-GR", - "en-AU", - "en-CA", - "en-GB", - "en-IE", - "en-IN", - "en-MY", - "en-NZ", - "en-PH", - "en-SG", - "en-US", - "es-AD", - "es-AR", - "es-CL", - "es-ES", - "es-MX", - "et-EE", - "eu-ES", - "eu-FR", - "fi-FI", - "fr-AD", - "fr-BE", - "fr-CA", - "fr-CH", - "fr-FR", - "gd-GB", - "he-IL", - "hu-HU", - "it-CH", - "it-IT", - "ja-JP", - "ko-KR", - "ms-MY", - "nl-BE", - "nl-NL", - "no-NO", - "pl-PL", - "pt-AD", - "pt-BR", - "pt-PT", - "ro-RO", - "ru-RU", - "sv-SE", - "th-TH", - "tr-TR" - ], - "google": { - "nl": { - "name": "Nederlands" - }, - "eo": { - "name": "Esperanto" - }, - "ko": { - "name": "한국어" - }, - "id": { - "name": "Indonesia" - }, - "ca": { - "name": "Català" - }, - "ar": { - "name": "العربية" - }, - "sl": { - "name": "Slovenščina" - }, - "sr": { - "name": "Српски" - }, - "sv": { - "name": "Svenska" - }, - "be": { - "name": "Беларуская" - }, - "et": { - "name": "Eesti" - }, - "sw": { - "name": "Kiswahili" - }, - "is": { - "name": "Íslenska" - }, - "it": { - "name": "Italiano" - }, - "hi": { - "name": "हिन्दी" - }, - "pl": { - "name": "Polski" - }, - "el": { - "name": "Ελληνικά" - }, - "hu": { - "name": "Magyar" - }, - "fr": { - "name": "Français" - }, - "th": { - "name": "ไทย" - }, - "tl": { - "name": "Filipino" - }, - "de": { - "name": "Deutsch" - }, - "ru": { - "name": "Русский" - }, - "sk": { - "name": "Slovenčina" - }, - "lt": { - "name": "Lietuvių" - }, - "vi": { - "name": "Tiếng Việt" - }, - "uk": { - "name": "Українська" - }, - "pt": { - "name": "Português" - }, - "zh-TW": { - "name": "中文 (繁體)" - }, - "cs": { - "name": "Čeština" - }, - "fa": { - "name": "فارسی" - }, - "af": { - "name": "Afrikaans" - }, - "hy": { - "name": "Հայերեն" - }, - "bg": { - "name": "Български" - }, - "hr": { - "name": "Hrvatski" - }, - "en": { - "name": "English" - }, - "tr": { - "name": "Türkçe" - }, - "lv": { - "name": "Latviešu" - }, - "ro": { - "name": "Română" - }, - "zh-CN": { - "name": "中文 (简体)" - }, - "ja": { - "name": "日本語" - }, - "iw": { - "name": "עברית" - }, - "es": { - "name": "Español" - }, - "fi": { - "name": "Suomi" - }, - "no": { - "name": "Norsk" - }, - "da": { - "name": "Dansk" - } + "aac": { + "english_name": "Ari" }, - "wikidata": { - "nl": { - "articles": 1954031, - "english_name": "Dutch", - "name": "Nederlands" - }, - "ceb": { - "articles": 5376890, - "english_name": "Cebuano", - "name": "Sinugboanong Binisaya" - }, - "jam": { - "articles": 1632, - "english_name": "Jamaican Patois", - "name": "Jumiekan Kryuol" - }, - "crh": { - "articles": 6172, - "english_name": "Crimean Tatar", - "name": "Qırımtatarca" - }, - "st": { - "articles": 544, - "english_name": "Sesotho", - "name": "Sesotho" - }, - "id": { - "articles": 449446, - "english_name": "Indonesian", - "name": "Bahasa Indonesia" - }, - "szl": { - "articles": 7812, - "english_name": "Silesian", - "name": "Ślůnski" - }, - "zh-yue": { - "articles": 70490, - "english_name": "Cantonese", - "name": "粵語" - }, - "ca": { - "articles": 599790, - "english_name": "Catalan", - "name": "Català" - }, - "ab": { - "articles": 3452, - "english_name": "Abkhazian", - "name": "Аҧсуа" - }, - "lad": { - "articles": 3828, - "english_name": "Ladino", - "name": "Dzhudezmo" - }, - "rue": { - "articles": 6891, - "english_name": "Rusyn", - "name": "Русиньскый" - }, - "om": { - "articles": 775, - "english_name": "Oromo", - "name": "Oromoo" - }, - "azb": { - "articles": 118928, - "english_name": "South Azerbaijani", - "name": "تۆرکجه" - }, - "sr": { - "articles": 614180, - "english_name": "Serbian", - "name": "Српски / Srpski" - }, - "tg": { - "articles": 96078, - "english_name": "Tajik", - "name": "Тоҷикӣ" - }, - "ee": { - "articles": 350, - "english_name": "Ewe", - "name": "Eʋegbe" - }, - "hsb": { - "articles": 13357, - "english_name": "Upper Sorbian", - "name": "Hornjoserbsce" - }, - "pag": { - "articles": 2521, - "english_name": "Pangasinan", - "name": "Pangasinan" - }, - "tyv": { - "articles": 1738, - "english_name": "Tuvan", - "name": "Тыва" - }, - "got": { - "articles": 588, - "english_name": "Gothic", - "name": "𐌲𐌿𐍄𐌹𐍃𐌺" - }, - "ss": { - "articles": 450, - "english_name": "Swati", - "name": "SiSwati" - }, - "stq": { - "articles": 3998, - "english_name": "Saterland Frisian", - "name": "Seeltersk" - }, - "is": { - "articles": 46096, - "english_name": "Icelandic", - "name": "Íslenska" - }, - "az": { - "articles": 141672, - "english_name": "Azerbaijani", - "name": "Azərbaycanca" - }, - "vec": { - "articles": 11266, - "english_name": "Venetian", - "name": "Vèneto" - }, - "na": { - "articles": 1305, - "english_name": "Nauruan", - "name": "dorerin Naoero" - }, - "an": { - "articles": 34148, - "english_name": "Aragonese", - "name": "Aragonés" - }, - "tk": { - "articles": 5514, - "english_name": "Turkmen", - "name": "Türkmen" - }, - "zea": { - "articles": 4580, - "english_name": "Zeelandic", - "name": "Zeêuws" - }, - "la": { - "articles": 129779, - "english_name": "Latin", - "name": "Latina" - }, - "kv": { - "articles": 5308, - "english_name": "Komi", - "name": "Коми" - }, - "vo": { - "articles": 122174, - "english_name": "Volapük", - "name": "Volapük" - }, - "el": { - "articles": 157114, - "english_name": "Greek", - "name": "Ελληνικά" - }, - "hu": { - "articles": 442291, - "english_name": "Hungarian", - "name": "Magyar" - }, - "bi": { - "articles": 1179, - "english_name": "Bislama", - "name": "Bislama" - }, - "fr": { - "articles": 2070378, - "english_name": "French", - "name": "Français" - }, - "th": { - "articles": 128977, - "english_name": "Thai", - "name": "ไทย" - }, - "zh": { - "articles": 1038913, - "english_name": "Chinese", - "name": "中文" - }, - "de": { - "articles": 2256718, - "english_name": "German", - "name": "Deutsch" - }, - "pms": { - "articles": 64391, - "english_name": "Piedmontese", - "name": "Piemontèis" - }, - "gn": { - "articles": 3637, - "english_name": "Guarani", - "name": "Avañe'ẽ" - }, - "lo": { - "articles": 3101, - "english_name": "Lao", - "name": "ລາວ" - }, - "bxr": { - "articles": 2124, - "english_name": "Buryat", - "name": "Буряад" - }, - "ast": { - "articles": 99530, - "english_name": "Asturian", - "name": "Asturianu" - }, - "wo": { - "articles": 1177, - "english_name": "Wolof", - "name": "Wolof" - }, - "pap": { - "articles": 1953, - "english_name": "Papiamentu", - "name": "Papiamentu" - }, - "fa": { - "articles": 655431, - "english_name": "Persian", - "name": "فارسی" - }, - "roa-tara": { - "articles": 9243, - "english_name": "Tarantino", - "name": "Tarandíne" - }, - "af": { - "articles": 68807, - "english_name": "Afrikaans", - "name": "Afrikaans" - }, - "lbe": { - "articles": 1216, - "english_name": "Lak", - "name": "Лакку" - }, - "frp": { - "articles": 3254, - "english_name": "Franco-Provençal", - "name": "Arpitan" - }, - "mt": { - "articles": 3336, - "english_name": "Maltese", - "name": "Malti" - }, - "bcl": { - "articles": 8664, - "english_name": "Central Bicolano", - "name": "Bikol" - }, - "bh": { - "articles": 6686, - "english_name": "Bihari", - "name": "भोजपुरी" - }, - "csb": { - "articles": 5258, - "english_name": "Kashubian", - "name": "Kaszëbsczi" - }, - "scn": { - "articles": 26060, - "english_name": "Sicilian", - "name": "Sicilianu" - }, - "sw": { - "articles": 47744, - "english_name": "Swahili", - "name": "Kiswahili" - }, - "kw": { - "articles": 3839, - "english_name": "Cornish", - "name": "Kernewek/Karnuack" - }, - "lrc": { - "articles": 5357, - "english_name": "Northern Luri", - "name": "لۊری شومالی" - }, - "wa": { - "articles": 14790, - "english_name": "Walloon", - "name": "Walon" - }, - "arz": { - "articles": 20166, - "english_name": "Egyptian Arabic", - "name": "مصرى (Maṣri)" - }, - "pfl": { - "articles": 2502, - "english_name": "Palatinate German", - "name": "Pälzisch" - }, - "tt": { - "articles": 82594, - "english_name": "Tatar", - "name": "Tatarça / Татарча" - }, - "ks": { - "articles": 324, - "english_name": "Kashmiri", - "name": "कश्मीरी / كشميري" - }, - "srn": { - "articles": 1061, - "english_name": "Sranan", - "name": "Sranantongo" - }, - "lfn": { - "articles": 3083, - "english_name": "Lingua Franca Nova", - "name": "Lingua franca nova" - }, - "kbd": { - "articles": 1578, - "english_name": "Kabardian Circassian", - "name": "Адыгэбзэ (Adighabze)" - }, - "simple": { - "articles": 141947, - "english_name": "Simple English", - "name": "Simple English" - }, - "sc": { - "articles": 5907, - "english_name": "Sardinian", - "name": "Sardu" - }, - "ta": { - "articles": 119140, - "english_name": "Tamil", - "name": "தமிழ்" - }, - "lg": { - "articles": 1155, - "english_name": "Luganda", - "name": "Luganda" - }, - "ckb": { - "articles": 22870, - "english_name": "Sorani", - "name": "Soranî / کوردی" - }, - "ht": { - "articles": 54219, - "english_name": "Haitian", - "name": "Krèyol ayisyen" - }, - "ve": { - "articles": 265, - "english_name": "Venda", - "name": "Tshivenda" - }, - "nds": { - "articles": 41178, - "english_name": "Low Saxon", - "name": "Plattdüütsch" - }, - "km": { - "articles": 7105, - "english_name": "Khmer", - "name": "ភាសាខ្មែរ" - }, - "ay": { - "articles": 4402, - "english_name": "Aymara", - "name": "Aymar" - }, - "mg": { - "articles": 90635, - "english_name": "Malagasy", - "name": "Malagasy" - }, - "frr": { - "articles": 8460, - "english_name": "North Frisian", - "name": "Nordfriisk" - }, - "zh-classical": { - "articles": 8663, - "english_name": "Classical Chinese", - "name": "古文 / 文言文" - }, - "ny": { - "articles": 487, - "english_name": "Chichewa", - "name": "Chichewa" - }, - "eo": { - "articles": 253490, - "english_name": "Esperanto", - "name": "Esperanto" - }, - "dty": { - "articles": 2967, - "english_name": "Doteli", - "name": "डोटेली" - }, - "ki": { - "articles": 1358, - "english_name": "Kikuyu", - "name": "Gĩkũyũ" - }, - "ko": { - "articles": 438644, - "english_name": "Korean", - "name": "한국어" - }, - "ig": { - "articles": 1376, - "english_name": "Igbo", - "name": "Igbo" - }, - "sah": { - "articles": 11943, - "english_name": "Sakha", - "name": "Саха тыла (Saxa Tyla)" - }, - "ar": { - "articles": 656175, - "english_name": "Arabic", - "name": "العربية" - }, - "mk": { - "articles": 98050, - "english_name": "Macedonian", - "name": "Македонски" - }, - "ff": { - "articles": 228, - "english_name": "Fula", - "name": "Fulfulde" - }, - "he": { - "articles": 236237, - "english_name": "Hebrew", - "name": "עברית" - }, - "inh": { - "articles": 791, - "english_name": "Ingush", - "name": "Гӏалгӏай" - }, - "av": { - "articles": 2309, - "english_name": "Avar", - "name": "Авар" - }, - "mai": { - "articles": 13164, - "english_name": "Maithili", - "name": "मैथिली" - }, - "zu": { - "articles": 1050, - "english_name": "Zulu", - "name": "isiZulu" - }, - "eml": { - "articles": 11866, - "english_name": "Emilian-Romagnol", - "name": "Emiliàn e rumagnòl" - }, - "ti": { - "articles": 168, - "english_name": "Tigrinya", - "name": "ትግርኛ" - }, - "lmo": { - "articles": 38071, - "english_name": "Lombard", - "name": "Lumbaart" - }, - "et": { - "articles": 185271, - "english_name": "Estonian", - "name": "Eesti" - }, - "myv": { - "articles": 5415, - "english_name": "Erzya", - "name": "Эрзянь (Erzjanj Kelj)" - }, - "si": { - "articles": 14918, - "english_name": "Sinhalese", - "name": "සිංහල" - }, - "ln": { - "articles": 3049, - "english_name": "Lingala", - "name": "Lingala" - }, - "shn": { - "articles": 3239, - "english_name": "ၽႃႇသႃႇတႆး ", - "name": "Shan" - }, - "sh": { - "articles": 447497, - "english_name": "Serbo-Croatian", - "name": "Srpskohrvatski / Српскохрватски" - }, - "it": { - "articles": 1491690, - "english_name": "Italian", - "name": "Italiano" - }, - "pam": { - "articles": 8825, - "english_name": "Kapampangan", - "name": "Kapampangan" - }, - "fy": { - "articles": 41308, - "english_name": "West Frisian", - "name": "Frysk" - }, - "ha": { - "articles": 2740, - "english_name": "Hausa", - "name": "Hausa / هَوُسَ" - }, - "diq": { - "articles": 9107, - "english_name": "Zazaki", - "name": "Zazaki" - }, - "ty": { - "articles": 1199, - "english_name": "Tahitian", - "name": "Reo Mā`ohi" - }, - "sa": { - "articles": 11357, - "english_name": "Sanskrit", - "name": "संस्कृतम्" - }, - "ku": { - "articles": 24022, - "english_name": "Kurdish", - "name": "Kurdî / كوردی" - }, - "io": { - "articles": 28134, - "english_name": "Ido", - "name": "Ido" - }, - "bjn": { - "articles": 1918, - "english_name": "Banjar", - "name": "Bahasa Banjar" - }, - "mwl": { - "articles": 3674, - "english_name": "Mirandese", - "name": "Mirandés" - }, - "se": { - "articles": 7464, - "english_name": "Northern Sami", - "name": "Sámegiella" - }, - "tet": { - "articles": 1440, - "english_name": "Tetum", - "name": "Tetun" - }, - "gom": { - "articles": 3598, - "english_name": "Goan Konkani", - "name": "गोंयची कोंकणी / Gõychi Konknni" - }, - "lij": { - "articles": 3456, - "english_name": "Ligurian", - "name": "Líguru" - }, - "ga": { - "articles": 49639, - "english_name": "Irish", - "name": "Gaeilge" - }, - "roa-rup": { - "articles": 1216, - "english_name": "Aromanian", - "name": "Armãneashce" - }, - "pdc": { - "articles": 1858, - "english_name": "Pennsylvania German", - "name": "Deitsch" - }, - "cs": { - "articles": 419392, - "english_name": "Czech", - "name": "Čeština" - }, - "uz": { - "articles": 130227, - "english_name": "Uzbek", - "name": "O‘zbek" - }, - "ch": { - "articles": 472, - "english_name": "Chamorro", - "name": "Chamoru" - }, - "rn": { - "articles": 609, - "english_name": "Kirundi", - "name": "Kirundi" - }, - "or": { - "articles": 14550, - "english_name": "Oriya", - "name": "ଓଡ଼ିଆ" - }, - "gl": { - "articles": 153607, - "english_name": "Galician", - "name": "Galego" - }, - "atj": { - "articles": 626, - "english_name": "Atikamekw", - "name": "Atikamekw" - }, - "pi": { - "articles": 2535, - "english_name": "Pali", - "name": "पाऴि" - }, - "fur": { - "articles": 3289, - "english_name": "Friulian", - "name": "Furlan" - }, - "li": { - "articles": 12316, - "english_name": "Limburgish", - "name": "Limburgs" - }, - "yi": { - "articles": 14571, - "english_name": "Yiddish", - "name": "ייִדיש" - }, - "lv": { - "articles": 90266, - "english_name": "Latvian", - "name": "Latviešu" - }, - "ro": { - "articles": 390804, - "english_name": "Romanian", - "name": "Română" - }, - "bm": { - "articles": 651, - "english_name": "Bambara", - "name": "Bamanankan" - }, - "ja": { - "articles": 1134685, - "english_name": "Japanese", - "name": "日本語" - }, - "cy": { - "articles": 102137, - "english_name": "Welsh", - "name": "Cymraeg" - }, - "wuu": { - "articles": 16289, - "english_name": "Wu", - "name": "吴语" - }, - "cv": { - "articles": 41622, - "english_name": "Chuvash", - "name": "Чăваш" - }, - "ady": { - "articles": 411, - "english_name": "Adyghe", - "name": "Адыгэбзэ" - }, - "min": { - "articles": 222492, - "english_name": "Minangkabau", - "name": "Minangkabau" - }, - "be-tarask": { - "articles": 65655, - "english_name": "Belarusian (Taraškievica)", - "name": "Беларуская (тарашкевіца)" - }, - "kl": { - "articles": 1663, - "english_name": "Greenlandic", - "name": "Kalaallisut" - }, - "am": { - "articles": 14482, - "english_name": "Amharic", - "name": "አማርኛ" - }, - "ie": { - "articles": 4303, - "english_name": "Interlingue", - "name": "Interlingue" - }, - "sn": { - "articles": 4227, - "english_name": "Shona", - "name": "chiShona" - }, - "pnb": { - "articles": 47107, - "english_name": "Western Punjabi", - "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)" - }, - "sm": { - "articles": 801, - "english_name": "Samoan", - "name": "Gagana Samoa" - }, - "hak": { - "articles": 8894, - "english_name": "Hakka", - "name": "Hak-kâ-fa / 客家話" - }, - "nso": { - "articles": 8094, - "english_name": "Northern Sotho", - "name": "Sepedi" - }, - "fj": { - "articles": 425, - "english_name": "Fijian", - "name": "Na Vosa Vakaviti" - }, - "da": { - "articles": 242006, - "english_name": "Danish", - "name": "Dansk" - }, - "ky": { - "articles": 79376, - "english_name": "Kirghiz", - "name": "Кыргызча" - }, - "to": { - "articles": 1693, - "english_name": "Tongan", - "name": "faka Tonga" - }, - "udm": { - "articles": 4565, - "english_name": "Udmurt", - "name": "Удмурт кыл" - }, - "nds-nl": { - "articles": 6812, - "english_name": "Dutch Low Saxon", - "name": "Nedersaksisch" - }, - "kaa": { - "articles": 1910, - "english_name": "Karakalpak", - "name": "Qaraqalpaqsha" - }, - "as": { - "articles": 5141, - "english_name": "Assamese", - "name": "অসমীয়া" - }, - "sg": { - "articles": 258, - "english_name": "Sango", - "name": "Sängö" - }, - "ik": { - "articles": 262, - "english_name": "Inupiak", - "name": "Iñupiak" - }, - "gd": { - "articles": 14774, - "english_name": "Scottish Gaelic", - "name": "Gàidhlig" - }, - "tpi": { - "articles": 1486, - "english_name": "Tok Pisin", - "name": "Tok Pisin" - }, - "lez": { - "articles": 3963, - "english_name": "Lezgian", - "name": "Лезги чІал (Lezgi č’al)" - }, - "new": { - "articles": 72212, - "english_name": "Newar", - "name": "नेपाल भाषा" - }, - "kg": { - "articles": 1184, - "english_name": "Kongo", - "name": "KiKongo" - }, - "cdo": { - "articles": 14111, - "english_name": "Min Dong", - "name": "Mìng-dĕ̤ng-ngṳ̄" - }, - "oc": { - "articles": 85227, - "english_name": "Occitan", - "name": "Occitan" - }, - "nap": { - "articles": 14576, - "english_name": "Neapolitan", - "name": "Nnapulitano" - }, - "be": { - "articles": 160751, - "english_name": "Belarusian", - "name": "Беларуская" - }, - "kk": { - "articles": 223486, - "english_name": "Kazakh", - "name": "Қазақша" - }, - "bs": { - "articles": 79235, - "english_name": "Bosnian", - "name": "Bosanski" - }, - "bug": { - "articles": 14121, - "english_name": "Buginese", - "name": "Basa Ugi" - }, - "sq": { - "articles": 75615, - "english_name": "Albanian", - "name": "Shqip" - }, - "mhr": { - "articles": 10046, - "english_name": "Meadow Mari", - "name": "Олык Марий (Olyk Marij)" - }, - "eu": { - "articles": 309974, - "english_name": "Basque", - "name": "Euskara" - }, - "ka": { - "articles": 126147, - "english_name": "Georgian", - "name": "ქართული" - }, - "ba": { - "articles": 46046, - "english_name": "Bashkir", - "name": "Башҡорт" - }, - "hi": { - "articles": 128996, - "english_name": "Hindi", - "name": "हिन्दी" - }, - "rw": { - "articles": 1822, - "english_name": "Kinyarwanda", - "name": "Ikinyarwanda" - }, - "pnt": { - "articles": 462, - "english_name": "Pontic", - "name": "Ποντιακά" - }, - "kab": { - "articles": 2860, - "english_name": "Kabyle", - "name": "Taqbaylit" - }, - "nv": { - "articles": 6991, - "english_name": "Navajo", - "name": "Diné bizaad" - }, - "mrj": { - "articles": 10269, - "english_name": "Hill Mari", - "name": "Кырык Мары (Kyryk Mary)" - }, - "mn": { - "articles": 18356, - "english_name": "Mongolian", - "name": "Монгол" - }, - "ang": { - "articles": 3077, - "english_name": "Anglo-Saxon", - "name": "Englisc" - }, - "tw": { - "articles": 657, - "english_name": "Twi", - "name": "Twi" - }, - "ur": { - "articles": 142712, - "english_name": "Urdu", - "name": "اردو" - }, - "tn": { - "articles": 640, - "english_name": "Tswana", - "name": "Setswana" - }, - "krc": { - "articles": 2028, - "english_name": "Karachay-Balkar", - "name": "Къарачай-Малкъар (Qarachay-Malqar)" - }, - "sk": { - "articles": 228015, - "english_name": "Slovak", - "name": "Slovenčina" - }, - "sv": { - "articles": 3760984, - "english_name": "Swedish", - "name": "Svenska" - }, - "pl": { - "articles": 1314525, - "english_name": "Polish", - "name": "Polski" - }, - "uk": { - "articles": 878251, - "english_name": "Ukrainian", - "name": "Українська" - }, - "pt": { - "articles": 1014081, - "english_name": "Portuguese", - "name": "Português" - }, - "xal": { - "articles": 2075, - "english_name": "Kalmyk", - "name": "Хальмг" - }, - "nn": { - "articles": 141839, - "english_name": "Norwegian (Nynorsk)", - "name": "Nynorsk" - }, - "fo": { - "articles": 12891, - "english_name": "Faroese", - "name": "Føroyskt" - }, - "gor": { - "articles": 1926, - "english_name": "Gorontalo", - "name": "Hulontalo" - }, - "te": { - "articles": 69978, - "english_name": "Telugu", - "name": "తెలుగు" - }, - "lb": { - "articles": 55377, - "english_name": "Luxembourgish", - "name": "Lëtzebuergesch" - }, - "chy": { - "articles": 611, - "english_name": "Cheyenne", - "name": "Tsetsêhestâhese" - }, - "bn": { - "articles": 63523, - "english_name": "Bengali", - "name": "বাংলা" - }, - "hy": { - "articles": 250045, - "english_name": "Armenian", - "name": "Հայերեն" - }, - "ug": { - "articles": 4104, - "english_name": "Uyghur", - "name": "ئۇيغۇر تىلى" - }, - "bg": { - "articles": 248452, - "english_name": "Bulgarian", - "name": "Български" - }, - "arc": { - "articles": 1628, - "english_name": "Aramaic", - "name": "ܐܪܡܝܐ" - }, - "hr": { - "articles": 201383, - "english_name": "Croatian", - "name": "Hrvatski" - }, - "ml": { - "articles": 61227, - "english_name": "Malayalam", - "name": "മലയാളം" - }, - "so": { - "articles": 5530, - "english_name": "Somali", - "name": "Soomaali" - }, - "bpy": { - "articles": 25081, - "english_name": "Bishnupriya Manipuri", - "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী" - }, - "tr": { - "articles": 321169, - "english_name": "Turkish", - "name": "Türkçe" - }, - "mr": { - "articles": 52667, - "english_name": "Marathi", - "name": "मराठी" - }, - "ce": { - "articles": 208906, - "english_name": "Chechen", - "name": "Нохчийн" - }, - "yo": { - "articles": 31774, - "english_name": "Yoruba", - "name": "Yorùbá" - }, - "no": { - "articles": 500849, - "english_name": "Norwegian (Bokmål)", - "name": "Norsk (Bokmål)" - }, - "fi": { - "articles": 449407, - "english_name": "Finnish", - "name": "Suomi" - }, - "nah": { - "articles": 6925, - "english_name": "Nahuatl", - "name": "Nāhuatl" - }, - "ia": { - "articles": 21225, - "english_name": "Interlingua", - "name": "Interlingua" - }, - "tl": { - "articles": 77677, - "english_name": "Tagalog", - "name": "Tagalog" - }, - "vep": { - "articles": 5880, - "english_name": "Vepsian", - "name": "Vepsän" - }, - "ne": { - "articles": 31633, - "english_name": "Nepali", - "name": "नेपाली" - }, - "cr": { - "articles": 103, - "english_name": "Cree", - "name": "Nehiyaw" - }, - "gv": { - "articles": 4968, - "english_name": "Manx", - "name": "Gaelg" - }, - "hif": { - "articles": 9756, - "english_name": "Fiji Hindi", - "name": "Fiji Hindi" - }, - "ksh": { - "articles": 2842, - "english_name": "Ripuarian", - "name": "Ripoarisch" - }, - "jbo": { - "articles": 1233, - "english_name": "Lojban", - "name": "Lojban" - }, - "ilo": { - "articles": 11592, - "english_name": "Ilokano", - "name": "Ilokano" - }, - "ltg": { - "articles": 815, - "english_name": "Latgalian", - "name": "Latgaļu" - }, - "dv": { - "articles": 3024, - "english_name": "Divehi", - "name": "ދިވެހިބަސް" - }, - "vls": { - "articles": 6703, - "english_name": "West Flemish", - "name": "West-Vlams" - }, - "co": { - "articles": 5643, - "english_name": "Corsican", - "name": "Corsu" - }, - "bat-smg": { - "articles": 16427, - "english_name": "Samogitian", - "name": "Žemaitėška" - }, - "zh-min-nan": { - "articles": 227702, - "english_name": "Min Nan", - "name": "Bân-lâm-gú" - }, - "glk": { - "articles": 5666, - "english_name": "Gilaki", - "name": "گیلکی" - }, - "bo": { - "articles": 5827, - "english_name": "Tibetan", - "name": "བོད་སྐད" - }, - "sl": { - "articles": 163198, - "english_name": "Slovenian", - "name": "Slovenščina" - }, - "os": { - "articles": 11225, - "english_name": "Ossetian", - "name": "Иронау" - }, - "sat": { - "articles": 532, - "english_name": "Santali", - "name": "ᱥᱟᱱᱛᱟᱲᱤ" - }, - "qu": { - "articles": 20900, - "english_name": "Quechua", - "name": "Runa Simi" - }, - "za": { - "articles": 1867, - "english_name": "Zhuang", - "name": "Cuengh" - }, - "tcy": { - "articles": 994, - "english_name": "Tulu", - "name": "ತುಳು" - }, - "ps": { - "articles": 9702, - "english_name": "Pashto", - "name": "پښتو" - }, - "pih": { - "articles": 681, - "english_name": "Norfolk", - "name": "Norfuk" - }, - "cbk-zam": { - "articles": 3000, - "english_name": "Zamboanga Chavacano", - "name": "Chavacano de Zamboanga" - }, - "mdf": { - "articles": 1188, - "english_name": "Moksha", - "name": "Мокшень (Mokshanj Kälj)" - }, - "mi": { - "articles": 7145, - "english_name": "Maori", - "name": "Māori" - }, - "sco": { - "articles": 53388, - "english_name": "Scots", - "name": "Scots" - }, - "dsb": { - "articles": 3210, - "english_name": "Lower Sorbian", - "name": "Dolnoserbski" - }, - "gag": { - "articles": 2763, - "english_name": "Gagauz", - "name": "Gagauz" - }, - "haw": { - "articles": 3234, - "english_name": "Hawaiian", - "name": "Hawai`i" - }, - "rm": { - "articles": 3564, - "english_name": "Romansh", - "name": "Rumantsch" - }, - "bar": { - "articles": 27285, - "english_name": "Bavarian", - "name": "Boarisch" - }, - "kn": { - "articles": 24065, - "english_name": "Kannada", - "name": "ಕನ್ನಡ" - }, - "olo": { - "articles": 2812, - "english_name": "Livvi-Karelian", - "name": "Karjalan" - }, - "als": { - "articles": 25337, - "english_name": "Alemannic", - "name": "Alemannisch" - }, - "kbp": { - "articles": 1479, - "english_name": "Kabiye", - "name": "Kabɩyɛ" - }, - "map-bms": { - "articles": 13336, - "english_name": "Banyumasan", - "name": "Basa Banyumasan" - }, - "koi": { - "articles": 3451, - "english_name": "Komi-Permyak", - "name": "Перем Коми (Perem Komi)" - }, - "pcd": { - "articles": 4258, - "english_name": "Picard", - "name": "Picard" - }, - "ru": { - "articles": 1519724, - "english_name": "Russian", - "name": "Русский" - }, - "su": { - "articles": 39840, - "english_name": "Sundanese", - "name": "Basa Sunda" - }, - "lt": { - "articles": 193352, - "english_name": "Lithuanian", - "name": "Lietuvių" - }, - "vi": { - "articles": 1198961, - "english_name": "Vietnamese", - "name": "Tiếng Việt" - }, - "ms": { - "articles": 323274, - "english_name": "Malay", - "name": "Bahasa Melayu" - }, - "my": { - "articles": 42128, - "english_name": "Burmese", - "name": "မြန်မာဘာသာ" - }, - "jv": { - "articles": 55104, - "english_name": "Javanese", - "name": "Basa Jawa" - }, - "war": { - "articles": 1263483, - "english_name": "Waray-Waray", - "name": "Winaray" - }, - "cu": { - "articles": 669, - "english_name": "Old Church Slavonic", - "name": "Словѣньскъ" - }, - "ace": { - "articles": 7602, - "english_name": "Acehnese", - "name": "Bahsa Acèh" - }, - "gan": { - "articles": 6411, - "english_name": "Gan", - "name": "贛語" - }, - "xh": { - "articles": 751, - "english_name": "Xhosa", - "name": "isiXhosa" - }, - "rmy": { - "articles": 660, - "english_name": "Romani", - "name": "romani - रोमानी" - }, - "xmf": { - "articles": 12678, - "english_name": "Mingrelian", - "name": "მარგალური (Margaluri)" - }, - "en": { - "articles": 5781855, - "english_name": "English", - "name": "English" - }, - "nov": { - "articles": 1661, - "english_name": "Novial", - "name": "Novial" - }, - "ak": { - "articles": 567, - "english_name": "Akan", - "name": "Akana" - }, - "fiu-vro": { - "articles": 5463, - "english_name": "Võro", - "name": "Võro" - }, - "mzn": { - "articles": 12786, - "english_name": "Mazandarani", - "name": "مَزِروني" - }, - "ts": { - "articles": 583, - "english_name": "Tsonga", - "name": "Xitsonga" - }, - "dz": { - "articles": 218, - "english_name": "Dzongkha", - "name": "ཇོང་ཁ" - }, - "es": { - "articles": 1497393, - "english_name": "Spanish", - "name": "Español" - }, - "gu": { - "articles": 28289, - "english_name": "Gujarati", - "name": "ગુજરાતી" - }, - "br": { - "articles": 66053, - "english_name": "Breton", - "name": "Brezhoneg" - }, - "sd": { - "articles": 11114, - "english_name": "Sindhi", - "name": "سنڌي، سندھی ، सिन्ध" - }, - "nrm": { - "articles": 4029, - "english_name": "Norman", - "name": "Nouormand/Normaund" - }, - "iu": { - "articles": 401, - "english_name": "Inuktitut", - "name": "ᐃᓄᒃᑎᑐᑦ" - }, - "tum": { - "articles": 572, - "english_name": "Tumbuka", - "name": "chiTumbuka" - }, - "chr": { - "articles": 855, - "english_name": "Cherokee", - "name": "ᏣᎳᎩ" - }, - "pa": { - "articles": 30886, - "english_name": "Punjabi", - "name": "ਪੰਜਾਬੀ" - }, - "ext": { - "articles": 3020, - "english_name": "Extremaduran", - "name": "Estremeñu" - } + "aad": { + "english_name": "Amal" }, - "yahoo news": [ - "ar", - "bg", - "cs", - "da", - "de", - "el", - "en", - "es", - "et", - "fi", - "fr", - "he", - "hr", - "hu", - "it", - "ja", - "ko", - "lt", - "lv", - "nl", - "no", - "pl", - "pt", - "ro", - "ru", - "sk", - "sl", - "sv", - "th", - "tr", - "zh-CHS", - "zh-CHT" - ] + "aae": { + "english_name": "Albanian, Arb\u00ebresh\u00eb" + }, + "aaf": { + "english_name": "Aranadan" + }, + "aag": { + "english_name": "Ambrak" + }, + "aah": { + "english_name": "Arapesh, Abu'" + }, + "aai": { + "english_name": "Arifama-Miniafia" + }, + "aak": { + "english_name": "Ankave" + }, + "aal": { + "english_name": "Afade" + }, + "aan": { + "english_name": "Anamb\u00e9" + }, + "aao": { + "english_name": "Arabic, Algerian Saharan" + }, + "aap": { + "english_name": "Ar\u00e1ra, Par\u00e1" + }, + "aaq": { + "english_name": "Abnaki, Eastern" + }, + "aas": { + "english_name": "Aas\u00e1x" + }, + "aat": { + "english_name": "Albanian, Arvanitika" + }, + "aau": { + "english_name": "Abau" + }, + "aaw": { + "english_name": "Solong" + }, + "aax": { + "english_name": "Mandobo Atas" + }, + "aaz": { + "english_name": "Amarasi" + }, + "ab": { + "english_name": "Abkhazian" + }, + "aba": { + "english_name": "Ab\u00e9" + }, + "abb": { + "english_name": "Bankon" + }, + "abc": { + "english_name": "Ayta, Ambala" + }, + "abd": { + "english_name": "Manide" + }, + "abe": { + "english_name": "Abnaki, Western" + }, + "abf": { + "english_name": "Abai Sungai" + }, + "abg": { + "english_name": "Abaga" + }, + "abh": { + "english_name": "Arabic, Tajiki" + }, + "abi": { + "english_name": "Abidji" + }, + "abj": { + "english_name": "Aka-Bea" + }, + "abl": { + "english_name": "Lampung Nyo" + }, + "abm": { + "english_name": "Abanyom" + }, + "abn": { + "english_name": "Abua" + }, + "abo": { + "english_name": "Abon" + }, + "abp": { + "english_name": "Ayta, Abellen" + }, + "abq": { + "english_name": "Abaza" + }, + "abr": { + "english_name": "Abron" + }, + "abs": { + "english_name": "Malay, Ambonese" + }, + "abt": { + "english_name": "Ambulas" + }, + "abu": { + "english_name": "Abure" + }, + "abv": { + "english_name": "Arabic, Baharna" + }, + "abw": { + "english_name": "Pal" + }, + "abx": { + "english_name": "Inabaknon" + }, + "aby": { + "english_name": "Aneme Wake" + }, + "abz": { + "english_name": "Abui" + }, + "aca": { + "english_name": "Achagua" + }, + "acb": { + "english_name": "\u00c1nc\u00e1" + }, + "acd": { + "english_name": "Gikyode" + }, + "ace": { + "english_name": "Achinese" + }, + "acf": { + "english_name": "Creole French, Saint Lucian" + }, + "ach": { + "english_name": "Acoli" + }, + "aci": { + "english_name": "Aka-Cari" + }, + "ack": { + "english_name": "Aka-Kora" + }, + "acl": { + "english_name": "Akar-Bale" + }, + "acm": { + "english_name": "Arabic, Mesopotamian" + }, + "acn": { + "english_name": "Achang" + }, + "acp": { + "english_name": "Acipa, Eastern" + }, + "acq": { + "english_name": "Arabic, Ta'izzi-Adeni" + }, + "acr": { + "english_name": "Achi" + }, + "acs": { + "english_name": "Acro\u00e1" + }, + "act": { + "english_name": "Achterhoeks" + }, + "acu": { + "english_name": "Achuar-Shiwiar" + }, + "acv": { + "english_name": "Achumawi" + }, + "acw": { + "english_name": "Arabic, Hijazi" + }, + "acx": { + "english_name": "Arabic, Omani" + }, + "acy": { + "english_name": "Arabic, Cypriot" + }, + "acz": { + "english_name": "Acheron" + }, + "ada": { + "english_name": "Adangme" + }, + "adb": { + "english_name": "Adabe" + }, + "add": { + "english_name": "Dzodinka" + }, + "ade": { + "english_name": "Adele" + }, + "adf": { + "english_name": "Arabic, Dhofari" + }, + "adg": { + "english_name": "Andegerebinha" + }, + "adh": { + "english_name": "Adhola" + }, + "adi": { + "english_name": "Adi" + }, + "adj": { + "english_name": "Adioukrou" + }, + "adl": { + "english_name": "Galo" + }, + "adn": { + "english_name": "Adang" + }, + "ado": { + "english_name": "Abu" + }, + "adq": { + "english_name": "Adangbe" + }, + "adr": { + "english_name": "Adonara" + }, + "ads": { + "english_name": "Adamorobe Sign Language" + }, + "adt": { + "english_name": "Adnyamathanha" + }, + "adu": { + "english_name": "Aduge" + }, + "adw": { + "english_name": "Amundava" + }, + "adx": { + "english_name": "Tibetan, Amdo" + }, + "ady": { + "english_name": "Adyghe" + }, + "adz": { + "english_name": "Adzera" + }, + "ae": { + "english_name": "Avestan" + }, + "aea": { + "english_name": "Areba" + }, + "aeb": { + "english_name": "Arabic, Tunisian" + }, + "aec": { + "english_name": "Arabic, Saidi" + }, + "aed": { + "english_name": "Argentine Sign Language" + }, + "aee": { + "english_name": "Pashayi, Northeast" + }, + "aek": { + "english_name": "Haeke" + }, + "ael": { + "english_name": "Ambele" + }, + "aem": { + "english_name": "Arem" + }, + "aen": { + "english_name": "Armenian Sign Language" + }, + "aeq": { + "english_name": "Aer" + }, + "aer": { + "english_name": "Arrernte, Eastern" + }, + "aes": { + "english_name": "Alsea" + }, + "aeu": { + "english_name": "Akeu" + }, + "aew": { + "english_name": "Ambakich" + }, + "aey": { + "english_name": "Amele" + }, + "aez": { + "english_name": "Aeka" + }, + "af": { + "english_name": "Afrikaans", + "name": "Afrikaans" + }, + "afb": { + "english_name": "Arabic, Gulf" + }, + "afd": { + "english_name": "Andai" + }, + "afe": { + "english_name": "Putukwam" + }, + "afg": { + "english_name": "Afghan Sign Language" + }, + "afh": { + "english_name": "Afrihili" + }, + "afi": { + "english_name": "Akrukay" + }, + "afk": { + "english_name": "Nanubae" + }, + "afn": { + "english_name": "Defaka" + }, + "afo": { + "english_name": "Eloyi" + }, + "afp": { + "english_name": "Tapei" + }, + "afs": { + "english_name": "Creole, Afro-Seminole" + }, + "aft": { + "english_name": "Afitti" + }, + "afu": { + "english_name": "Awutu" + }, + "afz": { + "english_name": "Obokuitai" + }, + "aga": { + "english_name": "Aguano" + }, + "agb": { + "english_name": "Legbo" + }, + "agc": { + "english_name": "Agatu" + }, + "agd": { + "english_name": "Agarabi" + }, + "age": { + "english_name": "Angal" + }, + "agf": { + "english_name": "Arguni" + }, + "agg": { + "english_name": "Angor" + }, + "agh": { + "english_name": "Ngelima" + }, + "agi": { + "english_name": "Agariya" + }, + "agj": { + "english_name": "Argobba" + }, + "agk": { + "english_name": "Agta, Isarog" + }, + "agl": { + "english_name": "Fembe" + }, + "agm": { + "english_name": "Angaataha" + }, + "agn": { + "english_name": "Agutaynen" + }, + "ago": { + "english_name": "Tainae" + }, + "agq": { + "english_name": "Aghem" + }, + "agr": { + "english_name": "Aguaruna" + }, + "ags": { + "english_name": "Esimbi" + }, + "agt": { + "english_name": "Agta, Central Cagayan" + }, + "agu": { + "english_name": "Aguacateco" + }, + "agv": { + "english_name": "Dumagat, Remontado" + }, + "agw": { + "english_name": "Kahua" + }, + "agx": { + "english_name": "Aghul" + }, + "agy": { + "english_name": "Alta, Southern" + }, + "agz": { + "english_name": "Agta, Mt. Iriga" + }, + "aha": { + "english_name": "Ahanta" + }, + "ahb": { + "english_name": "Axamb" + }, + "ahg": { + "english_name": "Qimant" + }, + "ahh": { + "english_name": "Aghu" + }, + "ahi": { + "english_name": "Aizi, Tiagbamrin" + }, + "ahk": { + "english_name": "Akha" + }, + "ahl": { + "english_name": "Igo" + }, + "ahm": { + "english_name": "Aizi, Mobumrin" + }, + "ahn": { + "english_name": "\u00c0h\u00e0n" + }, + "aho": { + "english_name": "Ahom" + }, + "ahp": { + "english_name": "Aizi, Aproumu" + }, + "ahr": { + "english_name": "Ahirani" + }, + "ahs": { + "english_name": "Ashe" + }, + "aht": { + "english_name": "Ahtena" + }, + "aia": { + "english_name": "Arosi" + }, + "aib": { + "english_name": "Ainu (China)" + }, + "aic": { + "english_name": "Ainbai" + }, + "aid": { + "english_name": "Alngith" + }, + "aie": { + "english_name": "Amara" + }, + "aif": { + "english_name": "Agi" + }, + "aig": { + "english_name": "Creole English, Antigua and Barbuda" + }, + "aih": { + "english_name": "Ai-Cham" + }, + "aii": { + "english_name": "Neo-Aramaic, Assyrian" + }, + "aij": { + "english_name": "Lishanid Noshan" + }, + "aik": { + "english_name": "Ake" + }, + "ail": { + "english_name": "Aimele" + }, + "aim": { + "english_name": "Aimol" + }, + "ain": { + "english_name": "Ainu (Japan)" + }, + "aio": { + "english_name": "Aiton" + }, + "aip": { + "english_name": "Burumakok" + }, + "aiq": { + "english_name": "Aimaq" + }, + "air": { + "english_name": "Airoran" + }, + "ais": { + "english_name": "Amis, Nataoran" + }, + "ait": { + "english_name": "Arikem" + }, + "aiw": { + "english_name": "Aari" + }, + "aix": { + "english_name": "Aighon" + }, + "aiy": { + "english_name": "Ali" + }, + "aja": { + "english_name": "Aja (Sudan)" + }, + "ajg": { + "english_name": "Aja (Benin)" + }, + "aji": { + "english_name": "Aji\u00eb" + }, + "ajn": { + "english_name": "Andajin" + }, + "ajp": { + "english_name": "Arabic, South Levantine" + }, + "ajt": { + "english_name": "Arabic, Judeo-Tunisian" + }, + "aju": { + "english_name": "Arabic, Judeo-Moroccan" + }, + "ajw": { + "english_name": "Ajawa" + }, + "ajz": { + "english_name": "Karbi, Amri" + }, + "ak": { + "english_name": "Akan" + }, + "akb": { + "english_name": "Batak Angkola" + }, + "akc": { + "english_name": "Mpur" + }, + "akd": { + "english_name": "Ukpet-Ehom" + }, + "ake": { + "english_name": "Akawaio" + }, + "akf": { + "english_name": "Akpa" + }, + "akg": { + "english_name": "Anakalangu" + }, + "akh": { + "english_name": "Angal Heneng" + }, + "aki": { + "english_name": "Aiome" + }, + "akj": { + "english_name": "Aka-Jeru" + }, + "akk": { + "english_name": "Akkadian" + }, + "akl": { + "english_name": "Aklanon" + }, + "akm": { + "english_name": "Aka-Bo" + }, + "ako": { + "english_name": "Akurio" + }, + "akp": { + "english_name": "Siwu" + }, + "akq": { + "english_name": "Ak" + }, + "akr": { + "english_name": "Araki" + }, + "aks": { + "english_name": "Akaselem" + }, + "akt": { + "english_name": "Akolet" + }, + "aku": { + "english_name": "Akum" + }, + "akv": { + "english_name": "Akhvakh" + }, + "akw": { + "english_name": "Akwa" + }, + "akx": { + "english_name": "Aka-Kede" + }, + "aky": { + "english_name": "Aka-Kol" + }, + "akz": { + "english_name": "Alabama" + }, + "ala": { + "english_name": "Alago" + }, + "alc": { + "english_name": "Qawasqar" + }, + "ald": { + "english_name": "Alladian" + }, + "ale": { + "english_name": "Aleut" + }, + "alf": { + "english_name": "Alege" + }, + "alh": { + "english_name": "Alawa" + }, + "ali": { + "english_name": "Amaimon" + }, + "alj": { + "english_name": "Alangan" + }, + "alk": { + "english_name": "Alak" + }, + "all": { + "english_name": "Allar" + }, + "alm": { + "english_name": "Amblong" + }, + "aln": { + "english_name": "Albanian, Gheg" + }, + "alo": { + "english_name": "Larike-Wakasihu" + }, + "alp": { + "english_name": "Alune" + }, + "alq": { + "english_name": "Algonquin" + }, + "alr": { + "english_name": "Alutor" + }, + "als": { + "english_name": "Albanian, Tosk" + }, + "alt": { + "english_name": "Altai, Southern" + }, + "alu": { + "english_name": "'Are'are" + }, + "alw": { + "english_name": "Alaba-K\u2019abeena" + }, + "alx": { + "english_name": "Amol" + }, + "aly": { + "english_name": "Alyawarr" + }, + "alz": { + "english_name": "Alur" + }, + "am": { + "english_name": "Amharic", + "name": "\u12a0\u121b\u122d\u129b" + }, + "ama": { + "english_name": "Amanay\u00e9" + }, + "amb": { + "english_name": "Ambo" + }, + "amc": { + "english_name": "Amahuaca" + }, + "ame": { + "english_name": "Yanesha'" + }, + "amf": { + "english_name": "Hamer-Banna" + }, + "amg": { + "english_name": "Amurdak" + }, + "ami": { + "english_name": "Amis" + }, + "amj": { + "english_name": "Amdang" + }, + "amk": { + "english_name": "Ambai" + }, + "aml": { + "english_name": "War-Jaintia" + }, + "amm": { + "english_name": "Ama (Papua New Guinea)" + }, + "amn": { + "english_name": "Amanab" + }, + "amo": { + "english_name": "Amo" + }, + "amp": { + "english_name": "Alamblak" + }, + "amq": { + "english_name": "Amahai" + }, + "amr": { + "english_name": "Amarakaeri" + }, + "ams": { + "english_name": "Amami-Oshima, Southern" + }, + "amt": { + "english_name": "Amto" + }, + "amu": { + "english_name": "Amuzgo, Guerrero" + }, + "amv": { + "english_name": "Ambelau" + }, + "amw": { + "english_name": "Neo-Aramaic, Western" + }, + "amx": { + "english_name": "Anmatyerre" + }, + "amy": { + "english_name": "Ami" + }, + "amz": { + "english_name": "Atampaya" + }, + "an": { + "english_name": "Aragonese" + }, + "ana": { + "english_name": "Andaqui" + }, + "anb": { + "english_name": "Andoa" + }, + "anc": { + "english_name": "Ngas" + }, + "and": { + "english_name": "Ansus" + }, + "ane": { + "english_name": "X\u00e2r\u00e2c\u00f9\u00f9" + }, + "anf": { + "english_name": "Animere" + }, + "ang": { + "english_name": "English, Old (ca. 450-1100)" + }, + "anh": { + "english_name": "Nend" + }, + "ani": { + "english_name": "Andi" + }, + "anj": { + "english_name": "Anor" + }, + "ank": { + "english_name": "Goemai" + }, + "anl": { + "english_name": "Chin, Anu-Hkongso" + }, + "anm": { + "english_name": "Anal" + }, + "ann": { + "english_name": "Obolo" + }, + "ano": { + "english_name": "Andoque" + }, + "anp": { + "english_name": "Angika" + }, + "anq": { + "english_name": "Jarawa (India)" + }, + "anr": { + "english_name": "Andh" + }, + "ans": { + "english_name": "Anserma" + }, + "ant": { + "english_name": "Antakarinya" + }, + "anu": { + "english_name": "Anuak" + }, + "anv": { + "english_name": "Denya" + }, + "anw": { + "english_name": "Anaang" + }, + "anx": { + "english_name": "Andra-Hus" + }, + "any": { + "english_name": "Anyin" + }, + "anz": { + "english_name": "Anem" + }, + "aoa": { + "english_name": "Angolar" + }, + "aob": { + "english_name": "Abom" + }, + "aoc": { + "english_name": "Pemon" + }, + "aod": { + "english_name": "Andarum" + }, + "aoe": { + "english_name": "Angal Enen" + }, + "aof": { + "english_name": "Bragat" + }, + "aog": { + "english_name": "Angoram" + }, + "aoh": { + "english_name": "Arma" + }, + "aoi": { + "english_name": "Anindilyakwa" + }, + "aoj": { + "english_name": "Mufian" + }, + "aok": { + "english_name": "Arh\u00f6" + }, + "aol": { + "english_name": "Alor" + }, + "aom": { + "english_name": "\u00d6mie" + }, + "aon": { + "english_name": "Arapesh, Bumbita" + }, + "aor": { + "english_name": "Aore" + }, + "aos": { + "english_name": "Taikat" + }, + "aot": { + "english_name": "A'tong" + }, + "aou": { + "english_name": "A'ou" + }, + "aox": { + "english_name": "Atorada" + }, + "aoz": { + "english_name": "Uab Meto" + }, + "apb": { + "english_name": "Sa'a" + }, + "apc": { + "english_name": "Arabic, North Levantine" + }, + "apd": { + "english_name": "Arabic, Sudanese" + }, + "ape": { + "english_name": "Bukiyip" + }, + "apf": { + "english_name": "Agta, Pahanan" + }, + "apg": { + "english_name": "Ampanang" + }, + "aph": { + "english_name": "Athpariya" + }, + "api": { + "english_name": "Apiak\u00e1" + }, + "apj": { + "english_name": "Apache, Jicarilla" + }, + "apk": { + "english_name": "Apache, Kiowa" + }, + "apl": { + "english_name": "Apache, Lipan" + }, + "apm": { + "english_name": "Apache, Mescalero-Chiricahua" + }, + "apn": { + "english_name": "Apinay\u00e9" + }, + "apo": { + "english_name": "Ambul" + }, + "app": { + "english_name": "Apma" + }, + "apq": { + "english_name": "A-Pucikwar" + }, + "apr": { + "english_name": "Arop-Lokep" + }, + "aps": { + "english_name": "Arop-Sissano" + }, + "apt": { + "english_name": "Apatani" + }, + "apu": { + "english_name": "Apurin\u00e3" + }, + "apv": { + "english_name": "Alapmunte" + }, + "apw": { + "english_name": "Apache, Western" + }, + "apx": { + "english_name": "Aputai" + }, + "apy": { + "english_name": "Apala\u00ed" + }, + "apz": { + "english_name": "Safeyoka" + }, + "aqc": { + "english_name": "Archi" + }, + "aqd": { + "english_name": "Dogon, Ampari" + }, + "aqg": { + "english_name": "Arigidi" + }, + "aqm": { + "english_name": "Atohwaim" + }, + "aqn": { + "english_name": "Alta, Northern" + }, + "aqp": { + "english_name": "Atakapa" + }, + "aqr": { + "english_name": "Arh\u00e2" + }, + "aqz": { + "english_name": "Akuntsu" + }, + "ar": { + "english_name": "Arabic", + "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" + }, + "arb": { + "english_name": "Arabic, Standard" + }, + "arc": { + "english_name": "Aramaic, Official (700-300 BCE)" + }, + "ard": { + "english_name": "Arabana" + }, + "are": { + "english_name": "Arrarnta, Western" + }, + "arh": { + "english_name": "Arhuaco" + }, + "ari": { + "english_name": "Arikara" + }, + "arj": { + "english_name": "Arapaso" + }, + "ark": { + "english_name": "Arikap\u00fa" + }, + "arl": { + "english_name": "Arabela" + }, + "arn": { + "english_name": "Mapudungun" + }, + "aro": { + "english_name": "Araona" + }, + "arp": { + "english_name": "Arapaho" + }, + "arq": { + "english_name": "Arabic, Algerian" + }, + "arr": { + "english_name": "Karo (Brazil)" + }, + "ars": { + "english_name": "Arabic, Najdi" + }, + "aru": { + "english_name": "Aru\u00e1 (Amazonas State)" + }, + "arv": { + "english_name": "Arbore" + }, + "arw": { + "english_name": "Arawak" + }, + "arx": { + "english_name": "Aru\u00e1 (Rodonia State)" + }, + "ary": { + "english_name": "Arabic, Moroccan" + }, + "arz": { + "english_name": "Arabic, Egyptian" + }, + "as": { + "english_name": "Assamese" + }, + "asa": { + "english_name": "Asu (Tanzania)" + }, + "asb": { + "english_name": "Assiniboine" + }, + "asc": { + "english_name": "Asmat, Casuarina Coast" + }, + "asd": { + "english_name": "Asas" + }, + "ase": { + "english_name": "American Sign Language" + }, + "asf": { + "english_name": "Australian Sign Language" + }, + "asg": { + "english_name": "Cishingini" + }, + "ash": { + "english_name": "Abishira" + }, + "asi": { + "english_name": "Buruwai" + }, + "asj": { + "english_name": "Sari" + }, + "ask": { + "english_name": "Ashkun" + }, + "asl": { + "english_name": "Asilulu" + }, + "asn": { + "english_name": "Asurin\u00ed, Xing\u00fa" + }, + "aso": { + "english_name": "Dano" + }, + "asp": { + "english_name": "Algerian Sign Language" + }, + "asq": { + "english_name": "Austrian Sign Language" + }, + "asr": { + "english_name": "Asuri" + }, + "ass": { + "english_name": "Ipulo" + }, + "ast": { + "english_name": "Asturian", + "name": "Asturianu" + }, + "asu": { + "english_name": "Asurini, Tocantins" + }, + "asv": { + "english_name": "Asoa" + }, + "asw": { + "english_name": "Australian Aborigines Sign Language" + }, + "asx": { + "english_name": "Muratayak" + }, + "asy": { + "english_name": "Asmat, Yaosakor" + }, + "asz": { + "english_name": "As" + }, + "ata": { + "english_name": "Pele-Ata" + }, + "atb": { + "english_name": "Zaiwa" + }, + "atc": { + "english_name": "Atsahuaca" + }, + "atd": { + "english_name": "Manobo, Ata" + }, + "ate": { + "english_name": "Atemble" + }, + "atg": { + "english_name": "Ivbie North-Okpela-Arhe" + }, + "ati": { + "english_name": "Atti\u00e9" + }, + "atj": { + "english_name": "Atikamekw" + }, + "atk": { + "english_name": "Ati" + }, + "atl": { + "english_name": "Agta, Mt. Iraya" + }, + "atm": { + "english_name": "Ata" + }, + "atn": { + "english_name": "Ashtiani" + }, + "ato": { + "english_name": "Atong" + }, + "atp": { + "english_name": "Atta, Pudtol" + }, + "atq": { + "english_name": "Aralle-Tabulahan" + }, + "atr": { + "english_name": "Waimiri-Atroari" + }, + "ats": { + "english_name": "Gros Ventre" + }, + "att": { + "english_name": "Atta, Pamplona" + }, + "atu": { + "english_name": "Reel" + }, + "atv": { + "english_name": "Altai, Northern" + }, + "atw": { + "english_name": "Atsugewi" + }, + "atx": { + "english_name": "Arutani" + }, + "aty": { + "english_name": "Aneityum" + }, + "atz": { + "english_name": "Arta" + }, + "aua": { + "english_name": "Asumboa" + }, + "aub": { + "english_name": "Alugu" + }, + "auc": { + "english_name": "Waorani" + }, + "aud": { + "english_name": "Anuta" + }, + "aug": { + "english_name": "Aguna" + }, + "auh": { + "english_name": "Aushi" + }, + "aui": { + "english_name": "Anuki" + }, + "auj": { + "english_name": "Awjilah" + }, + "auk": { + "english_name": "Heyo" + }, + "aul": { + "english_name": "Aulua" + }, + "aum": { + "english_name": "Asu (Nigeria)" + }, + "aun": { + "english_name": "One, Molmo" + }, + "auo": { + "english_name": "Auyokawa" + }, + "aup": { + "english_name": "Makayam" + }, + "auq": { + "english_name": "Anus" + }, + "aur": { + "english_name": "Aruek" + }, + "aut": { + "english_name": "Austral" + }, + "auu": { + "english_name": "Auye" + }, + "auw": { + "english_name": "Awyi" + }, + "aux": { + "english_name": "Aur\u00e1" + }, + "auy": { + "english_name": "Awiyaana" + }, + "auz": { + "english_name": "Arabic, Uzbeki" + }, + "av": { + "english_name": "Avaric" + }, + "avb": { + "english_name": "Avau" + }, + "avd": { + "english_name": "Alviri-Vidari" + }, + "avi": { + "english_name": "Avikam" + }, + "avk": { + "english_name": "Kotava" + }, + "avl": { + "english_name": "Arabic, Eastern Egyptian Bedawi" + }, + "avm": { + "english_name": "Angkamuthi" + }, + "avn": { + "english_name": "Avatime" + }, + "avo": { + "english_name": "Agavotaguerra" + }, + "avs": { + "english_name": "Aushiri" + }, + "avt": { + "english_name": "Au" + }, + "avu": { + "english_name": "Avokaya" + }, + "avv": { + "english_name": "Av\u00e1-Canoeiro" + }, + "awa": { + "english_name": "Awadhi" + }, + "awb": { + "english_name": "Awa (Papua New Guinea)" + }, + "awc": { + "english_name": "Cicipu" + }, + "awe": { + "english_name": "Awet\u00ed" + }, + "awg": { + "english_name": "Anguthimri" + }, + "awh": { + "english_name": "Awbono" + }, + "awi": { + "english_name": "Aekyom" + }, + "awk": { + "english_name": "Awabakal" + }, + "awm": { + "english_name": "Arawum" + }, + "awn": { + "english_name": "Awngi" + }, + "awo": { + "english_name": "Awak" + }, + "awr": { + "english_name": "Awera" + }, + "aws": { + "english_name": "Awyu, South" + }, + "awt": { + "english_name": "Arawet\u00e9" + }, + "awu": { + "english_name": "Awyu, Central" + }, + "awv": { + "english_name": "Awyu, Jair" + }, + "aww": { + "english_name": "Awun" + }, + "awx": { + "english_name": "Awara" + }, + "awy": { + "english_name": "Awyu, Edera" + }, + "axb": { + "english_name": "Abipon" + }, + "axe": { + "english_name": "Ayerrerenge" + }, + "axg": { + "english_name": "Ar\u00e1ra, Mato Grosso" + }, + "axk": { + "english_name": "Yaka (Central African Republic)" + }, + "axl": { + "english_name": "Aranda, Lower Southern" + }, + "axm": { + "english_name": "Armenian, Middle" + }, + "axx": { + "english_name": "X\u00e2r\u00e2gur\u00e8" + }, + "ay": { + "english_name": "Aymara" + }, + "aya": { + "english_name": "Awar" + }, + "ayb": { + "english_name": "Gbe, Ayizo" + }, + "ayc": { + "english_name": "Aymara, Southern" + }, + "ayd": { + "english_name": "Ayabadhu" + }, + "aye": { + "english_name": "Ayere" + }, + "ayg": { + "english_name": "Ginyanga" + }, + "ayh": { + "english_name": "Arabic, Hadrami" + }, + "ayi": { + "english_name": "Leyigha" + }, + "ayk": { + "english_name": "Akuku" + }, + "ayl": { + "english_name": "Arabic, Libyan" + }, + "ayn": { + "english_name": "Arabic, Sanaani" + }, + "ayo": { + "english_name": "Ayoreo" + }, + "ayp": { + "english_name": "Arabic, North Mesopotamian" + }, + "ayq": { + "english_name": "Ayi (Papua New Guinea)" + }, + "ayr": { + "english_name": "Aymara, Central" + }, + "ays": { + "english_name": "Ayta, Sorsogon" + }, + "ayt": { + "english_name": "Ayta, Magbukun" + }, + "ayu": { + "english_name": "Ayu" + }, + "ayy": { + "english_name": "Ayta, Tayabas" + }, + "ayz": { + "english_name": "Mai Brat" + }, + "az": { + "english_name": "Azerbaijani", + "name": "Azerbaijani" + }, + "aza": { + "english_name": "Azha" + }, + "azb": { + "english_name": "Azerbaijani, South" + }, + "azd": { + "english_name": "Nahuatl, Eastern Durango" + }, + "azg": { + "english_name": "Amuzgo, San Pedro Amuzgos" + }, + "azj": { + "english_name": "Azerbaijani, North" + }, + "azm": { + "english_name": "Amuzgo, Ipalapa" + }, + "azn": { + "english_name": "Nahuatl, Western Durango" + }, + "azo": { + "english_name": "Awing" + }, + "azt": { + "english_name": "Atta, Faire" + }, + "azz": { + "english_name": "Nahuatl, Highland Puebla" + }, + "ba": { + "english_name": "Bashkir" + }, + "baa": { + "english_name": "Babatana" + }, + "bab": { + "english_name": "Bainouk-Gunyu\u00f1o" + }, + "bac": { + "english_name": "Badui" + }, + "bae": { + "english_name": "Bar\u00e9" + }, + "baf": { + "english_name": "Nubaca" + }, + "bag": { + "english_name": "Tuki" + }, + "bah": { + "english_name": "Creole English, Bahamas" + }, + "baj": { + "english_name": "Barakai" + }, + "bal": { + "english_name": "Baluchi" + }, + "ban": { + "english_name": "Balinese" + }, + "bao": { + "english_name": "Waimaha" + }, + "bap": { + "english_name": "Bantawa" + }, + "bar": { + "english_name": "Bavarian" + }, + "bas": { + "english_name": "Basa (Cameroon)" + }, + "bau": { + "english_name": "Bada (Nigeria)" + }, + "bav": { + "english_name": "Vengo" + }, + "baw": { + "english_name": "Bambili-Bambui" + }, + "bax": { + "english_name": "Bamun" + }, + "bay": { + "english_name": "Batuley" + }, + "bba": { + "english_name": "Baatonum" + }, + "bbb": { + "english_name": "Barai" + }, + "bbc": { + "english_name": "Batak Toba" + }, + "bbd": { + "english_name": "Bau" + }, + "bbe": { + "english_name": "Bangba" + }, + "bbf": { + "english_name": "Baibai" + }, + "bbg": { + "english_name": "Barama" + }, + "bbh": { + "english_name": "Bugan" + }, + "bbi": { + "english_name": "Barombi" + }, + "bbj": { + "english_name": "Ghom\u00e1l\u00e1'" + }, + "bbk": { + "english_name": "Babanki" + }, + "bbl": { + "english_name": "Bats" + }, + "bbm": { + "english_name": "Babango" + }, + "bbn": { + "english_name": "Uneapa" + }, + "bbo": { + "english_name": "Bobo Madar\u00e9, Northern" + }, + "bbp": { + "english_name": "Banda, West Central" + }, + "bbq": { + "english_name": "Bamali" + }, + "bbr": { + "english_name": "Girawa" + }, + "bbs": { + "english_name": "Bakpinka" + }, + "bbt": { + "english_name": "Mburku" + }, + "bbu": { + "english_name": "Kulung (Nigeria)" + }, + "bbv": { + "english_name": "Karnai" + }, + "bbw": { + "english_name": "Baba" + }, + "bbx": { + "english_name": "Bubia" + }, + "bby": { + "english_name": "Befang" + }, + "bbz": { + "english_name": "Creole Arabic, Babalia" + }, + "bca": { + "english_name": "Bai, Central" + }, + "bcb": { + "english_name": "Bainouk-Samik" + }, + "bcc": { + "english_name": "Balochi, Southern" + }, + "bcd": { + "english_name": "Babar, North" + }, + "bce": { + "english_name": "Bamenyam" + }, + "bcf": { + "english_name": "Bamu" + }, + "bcg": { + "english_name": "Baga Binari" + }, + "bch": { + "english_name": "Bariai" + }, + "bci": { + "english_name": "Baoul\u00e9" + }, + "bcj": { + "english_name": "Bardi" + }, + "bck": { + "english_name": "Bunaba" + }, + "bcl": { + "english_name": "Bikol, Central" + }, + "bcm": { + "english_name": "Bannoni" + }, + "bcn": { + "english_name": "Bali (Nigeria)" + }, + "bco": { + "english_name": "Kaluli" + }, + "bcp": { + "english_name": "Bali (Democratic Republic of Congo)" + }, + "bcq": { + "english_name": "Bench" + }, + "bcr": { + "english_name": "Babine" + }, + "bcs": { + "english_name": "Kohumono" + }, + "bct": { + "english_name": "Bendi" + }, + "bcu": { + "english_name": "Awad Bing" + }, + "bcv": { + "english_name": "Shoo-Minda-Nye" + }, + "bcw": { + "english_name": "Bana" + }, + "bcy": { + "english_name": "Bacama" + }, + "bcz": { + "english_name": "Bainouk-Gunyaamolo" + }, + "bda": { + "english_name": "Bayot" + }, + "bdb": { + "english_name": "Basap" + }, + "bdc": { + "english_name": "Ember\u00e1-Baud\u00f3" + }, + "bdd": { + "english_name": "Bunama" + }, + "bde": { + "english_name": "Bade" + }, + "bdf": { + "english_name": "Biage" + }, + "bdg": { + "english_name": "Bonggi" + }, + "bdh": { + "english_name": "Baka (Sudan)" + }, + "bdi": { + "english_name": "Burun" + }, + "bdj": { + "english_name": "Bai" + }, + "bdk": { + "english_name": "Budukh" + }, + "bdl": { + "english_name": "Bajau, Indonesian" + }, + "bdm": { + "english_name": "Buduma" + }, + "bdn": { + "english_name": "Baldemu" + }, + "bdo": { + "english_name": "Morom" + }, + "bdp": { + "english_name": "Bende" + }, + "bdq": { + "english_name": "Bahnar" + }, + "bdr": { + "english_name": "Bajau, West Coast" + }, + "bds": { + "english_name": "Burunge" + }, + "bdt": { + "english_name": "Bokoto" + }, + "bdu": { + "english_name": "Oroko" + }, + "bdv": { + "english_name": "Bodo Parja" + }, + "bdw": { + "english_name": "Baham" + }, + "bdx": { + "english_name": "Budong-Budong" + }, + "bdy": { + "english_name": "Bandjalang" + }, + "bdz": { + "english_name": "Badeshi" + }, + "be": { + "english_name": "Belarusian" + }, + "bea": { + "english_name": "Beaver" + }, + "beb": { + "english_name": "Bebele" + }, + "bec": { + "english_name": "Iceve-Maci" + }, + "bed": { + "english_name": "Bedoanas" + }, + "bee": { + "english_name": "Byangsi" + }, + "bef": { + "english_name": "Benabena" + }, + "beg": { + "english_name": "Belait" + }, + "beh": { + "english_name": "Biali" + }, + "bei": { + "english_name": "Bekati'" + }, + "bej": { + "english_name": "Beja" + }, + "bek": { + "english_name": "Bebeli" + }, + "bem": { + "english_name": "Bemba (Zambia)" + }, + "beo": { + "english_name": "Beami" + }, + "bep": { + "english_name": "Besoa" + }, + "beq": { + "english_name": "Beembe" + }, + "bes": { + "english_name": "Besme" + }, + "bet": { + "english_name": "B\u00e9te, Guiberoua" + }, + "beu": { + "english_name": "Blagar" + }, + "bev": { + "english_name": "B\u00e9t\u00e9, Daloa" + }, + "bew": { + "english_name": "Betawi" + }, + "bex": { + "english_name": "Jur Modo" + }, + "bey": { + "english_name": "Beli (Papua New Guinea)" + }, + "bez": { + "english_name": "Bena (Tanzania)" + }, + "bfa": { + "english_name": "Bari" + }, + "bfb": { + "english_name": "Bareli, Pauri" + }, + "bfc": { + "english_name": "Bai, Northern" + }, + "bfd": { + "english_name": "Bafut" + }, + "bfe": { + "english_name": "Betaf" + }, + "bff": { + "english_name": "Bofi" + }, + "bfg": { + "english_name": "Kayan, Busang" + }, + "bfh": { + "english_name": "Blafe" + }, + "bfi": { + "english_name": "British Sign Language" + }, + "bfj": { + "english_name": "Bafanji" + }, + "bfk": { + "english_name": "Ban Khor Sign Language" + }, + "bfl": { + "english_name": "Banda-Nd\u00e9l\u00e9" + }, + "bfm": { + "english_name": "Mmen" + }, + "bfn": { + "english_name": "Bunak" + }, + "bfo": { + "english_name": "Birifor, Malba" + }, + "bfp": { + "english_name": "Beba" + }, + "bfq": { + "english_name": "Badaga" + }, + "bfr": { + "english_name": "Bazigar" + }, + "bfs": { + "english_name": "Bai, Southern" + }, + "bft": { + "english_name": "Balti" + }, + "bfu": { + "english_name": "Gahri" + }, + "bfw": { + "english_name": "Bondo" + }, + "bfx": { + "english_name": "Bantayanon" + }, + "bfy": { + "english_name": "Bagheli" + }, + "bfz": { + "english_name": "Pahari, Mahasu" + }, + "bg": { + "english_name": "Bulgarian", + "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" + }, + "bga": { + "english_name": "Gwamhi-Wuri" + }, + "bgb": { + "english_name": "Bobongko" + }, + "bgc": { + "english_name": "Haryanvi" + }, + "bgd": { + "english_name": "Bareli, Rathwi" + }, + "bge": { + "english_name": "Bauria" + }, + "bgf": { + "english_name": "Bangandu" + }, + "bgg": { + "english_name": "Bugun" + }, + "bgi": { + "english_name": "Giangan" + }, + "bgj": { + "english_name": "Bangolan" + }, + "bgk": { + "english_name": "Bit" + }, + "bgl": { + "english_name": "Bo (Laos)" + }, + "bgm": { + "english_name": "Baga Mboteni" + }, + "bgn": { + "english_name": "Balochi, Western" + }, + "bgo": { + "english_name": "Baga Koga" + }, + "bgp": { + "english_name": "Balochi, Eastern" + }, + "bgq": { + "english_name": "Bagri" + }, + "bgr": { + "english_name": "Chin, Bawm" + }, + "bgs": { + "english_name": "Tagabawa" + }, + "bgt": { + "english_name": "Bughotu" + }, + "bgu": { + "english_name": "Mbongno" + }, + "bgv": { + "english_name": "Warkay-Bipim" + }, + "bgw": { + "english_name": "Bhatri" + }, + "bgx": { + "english_name": "Turkish, Balkan Gagauz" + }, + "bgy": { + "english_name": "Benggoi" + }, + "bgz": { + "english_name": "Banggai" + }, + "bha": { + "english_name": "Bharia" + }, + "bhb": { + "english_name": "Bhili" + }, + "bhc": { + "english_name": "Biga" + }, + "bhd": { + "english_name": "Bhadrawahi" + }, + "bhe": { + "english_name": "Bhaya" + }, + "bhf": { + "english_name": "Odiai" + }, + "bhg": { + "english_name": "Binandere" + }, + "bhh": { + "english_name": "Bukharic" + }, + "bhi": { + "english_name": "Bhilali" + }, + "bhj": { + "english_name": "Bahing" + }, + "bhl": { + "english_name": "Bimin" + }, + "bhm": { + "english_name": "Bathari" + }, + "bhn": { + "english_name": "Neo-Aramaic, Bohtan" + }, + "bho": { + "english_name": "Bhojpuri" + }, + "bhp": { + "english_name": "Bima" + }, + "bhq": { + "english_name": "Tukang Besi South" + }, + "bhr": { + "english_name": "Malagasy, Bara" + }, + "bhs": { + "english_name": "Buwal" + }, + "bht": { + "english_name": "Bhattiyali" + }, + "bhu": { + "english_name": "Bhunjia" + }, + "bhv": { + "english_name": "Bahau" + }, + "bhw": { + "english_name": "Biak" + }, + "bhx": { + "english_name": "Bhalay" + }, + "bhy": { + "english_name": "Bhele" + }, + "bhz": { + "english_name": "Bada (Indonesia)" + }, + "bi": { + "english_name": "Bislama" + }, + "bia": { + "english_name": "Badimaya" + }, + "bib": { + "english_name": "Bissa" + }, + "bic": { + "english_name": "Bikaru" + }, + "bid": { + "english_name": "Bidiyo" + }, + "bie": { + "english_name": "Bepour" + }, + "bif": { + "english_name": "Biafada" + }, + "big": { + "english_name": "Biangai" + }, + "bij": { + "english_name": "Vaghat-Ya-Bijim-Legeri" + }, + "bik": { + "english_name": "Bikol" + }, + "bil": { + "english_name": "Bile" + }, + "bim": { + "english_name": "Bimoba" + }, + "bin": { + "english_name": "Bini" + }, + "bio": { + "english_name": "Nai" + }, + "bip": { + "english_name": "Bila" + }, + "biq": { + "english_name": "Bipi" + }, + "bir": { + "english_name": "Bisorio" + }, + "bit": { + "english_name": "Berinomo" + }, + "biu": { + "english_name": "Biete" + }, + "biv": { + "english_name": "Birifor, Southern" + }, + "biw": { + "english_name": "Kol (Cameroon)" + }, + "bix": { + "english_name": "Bijori" + }, + "biy": { + "english_name": "Birhor" + }, + "biz": { + "english_name": "Baloi" + }, + "bja": { + "english_name": "Budza" + }, + "bjb": { + "english_name": "Banggarla" + }, + "bjc": { + "english_name": "Bariji" + }, + "bje": { + "english_name": "Mien, Biao-Jiao" + }, + "bjf": { + "english_name": "Neo-Aramaic, Barzani Jewish" + }, + "bjg": { + "english_name": "Bidyogo" + }, + "bjh": { + "english_name": "Bahinemo" + }, + "bji": { + "english_name": "Burji" + }, + "bjj": { + "english_name": "Kanauji" + }, + "bjk": { + "english_name": "Barok" + }, + "bjl": { + "english_name": "Bulu (Papua New Guinea)" + }, + "bjm": { + "english_name": "Bajelani" + }, + "bjn": { + "english_name": "Banjar" + }, + "bjo": { + "english_name": "Banda, Mid-Southern" + }, + "bjp": { + "english_name": "Fanamaket" + }, + "bjr": { + "english_name": "Binumarien" + }, + "bjs": { + "english_name": "Bajan" + }, + "bjt": { + "english_name": "Balanta-Ganja" + }, + "bju": { + "english_name": "Busuu" + }, + "bjv": { + "english_name": "Bedjond" + }, + "bjw": { + "english_name": "Bakw\u00e9" + }, + "bjx": { + "english_name": "Itneg, Banao" + }, + "bjy": { + "english_name": "Bayali" + }, + "bjz": { + "english_name": "Baruga" + }, + "bka": { + "english_name": "Kyak" + }, + "bkc": { + "english_name": "Baka (Cameroon)" + }, + "bkd": { + "english_name": "Binukid" + }, + "bkf": { + "english_name": "Beeke" + }, + "bkg": { + "english_name": "Buraka" + }, + "bkh": { + "english_name": "Bakoko" + }, + "bki": { + "english_name": "Baki" + }, + "bkj": { + "english_name": "Pande" + }, + "bkk": { + "english_name": "Brokskat" + }, + "bkl": { + "english_name": "Berik" + }, + "bkm": { + "english_name": "Kom (Cameroon)" + }, + "bkn": { + "english_name": "Bukitan" + }, + "bko": { + "english_name": "Kwa'" + }, + "bkp": { + "english_name": "Boko (Democratic Republic of Congo)" + }, + "bkq": { + "english_name": "Bakair\u00ed" + }, + "bkr": { + "english_name": "Bakumpai" + }, + "bks": { + "english_name": "Sorsoganon, Northern" + }, + "bkt": { + "english_name": "Boloki" + }, + "bku": { + "english_name": "Buhid" + }, + "bkv": { + "english_name": "Bekwarra" + }, + "bkw": { + "english_name": "Bekwel" + }, + "bkx": { + "english_name": "Baikeno" + }, + "bky": { + "english_name": "Bokyi" + }, + "bkz": { + "english_name": "Bungku" + }, + "bla": { + "english_name": "Siksika" + }, + "blb": { + "english_name": "Bilua" + }, + "blc": { + "english_name": "Bella Coola" + }, + "bld": { + "english_name": "Bolango" + }, + "ble": { + "english_name": "Balanta-Kentohe" + }, + "blf": { + "english_name": "Buol" + }, + "blg": { + "english_name": "Balau" + }, + "blh": { + "english_name": "Kuwaa" + }, + "bli": { + "english_name": "Bolia" + }, + "blj": { + "english_name": "Bolongan" + }, + "blk": { + "english_name": "Karen, Pa'o" + }, + "bll": { + "english_name": "Biloxi" + }, + "blm": { + "english_name": "Beli (Sudan)" + }, + "bln": { + "english_name": "Bikol, Southern Catanduanes" + }, + "blo": { + "english_name": "Anii" + }, + "blp": { + "english_name": "Blablanga" + }, + "blq": { + "english_name": "Baluan-Pam" + }, + "blr": { + "english_name": "Blang" + }, + "bls": { + "english_name": "Balaesang" + }, + "blt": { + "english_name": "Tai Dam" + }, + "blv": { + "english_name": "Bolo" + }, + "blw": { + "english_name": "Balangao" + }, + "blx": { + "english_name": "Ayta, Mag-Indi" + }, + "bly": { + "english_name": "Notre" + }, + "blz": { + "english_name": "Balantak" + }, + "bm": { + "english_name": "Bambara" + }, + "bma": { + "english_name": "Lame" + }, + "bmb": { + "english_name": "Bembe" + }, + "bmc": { + "english_name": "Biem" + }, + "bmd": { + "english_name": "Manduri, Baga" + }, + "bme": { + "english_name": "Limassa" + }, + "bmf": { + "english_name": "Bom" + }, + "bmg": { + "english_name": "Bamwe" + }, + "bmh": { + "english_name": "Kein" + }, + "bmi": { + "english_name": "Bagirmi" + }, + "bmj": { + "english_name": "Bote-Majhi" + }, + "bmk": { + "english_name": "Ghayavi" + }, + "bml": { + "english_name": "Bomboli" + }, + "bmm": { + "english_name": "Malagasy, Northern Betsimisaraka" + }, + "bmn": { + "english_name": "Bina (Papua New Guinea)" + }, + "bmo": { + "english_name": "Bambalang" + }, + "bmp": { + "english_name": "Bulgebi" + }, + "bmq": { + "english_name": "Bomu" + }, + "bmr": { + "english_name": "Muinane" + }, + "bms": { + "english_name": "Kanuri, Bilma" + }, + "bmt": { + "english_name": "Biao Mon" + }, + "bmu": { + "english_name": "Somba-Siawari" + }, + "bmv": { + "english_name": "Bum" + }, + "bmw": { + "english_name": "Bomwali" + }, + "bmx": { + "english_name": "Baimak" + }, + "bmz": { + "english_name": "Baramu" + }, + "bn": { + "english_name": "Bengali", + "name": "\u09ac\u09be\u0982\u09b2\u09be" + }, + "bna": { + "english_name": "Bonerate" + }, + "bnb": { + "english_name": "Bookan" + }, + "bnc": { + "english_name": "Bontok" + }, + "bnd": { + "english_name": "Banda (Indonesia)" + }, + "bne": { + "english_name": "Bintauna" + }, + "bnf": { + "english_name": "Masiwang" + }, + "bng": { + "english_name": "Benga" + }, + "bni": { + "english_name": "Bangi" + }, + "bnj": { + "english_name": "Tawbuid, Eastern" + }, + "bnk": { + "english_name": "Bierebo" + }, + "bnl": { + "english_name": "Boon" + }, + "bnm": { + "english_name": "Batanga" + }, + "bnn": { + "english_name": "Bunun" + }, + "bno": { + "english_name": "Bantoanon" + }, + "bnp": { + "english_name": "Bola" + }, + "bnq": { + "english_name": "Bantik" + }, + "bnr": { + "english_name": "Butmas-Tur" + }, + "bns": { + "english_name": "Bundeli" + }, + "bnu": { + "english_name": "Bentong" + }, + "bnv": { + "english_name": "Bonerif" + }, + "bnw": { + "english_name": "Bisis" + }, + "bnx": { + "english_name": "Bangubangu" + }, + "bny": { + "english_name": "Bintulu" + }, + "bnz": { + "english_name": "Beezen" + }, + "bo": { + "english_name": "Tibetan" + }, + "boa": { + "english_name": "Bora" + }, + "bob": { + "english_name": "Aweer" + }, + "boe": { + "english_name": "Mundabli" + }, + "bof": { + "english_name": "Bolon" + }, + "bog": { + "english_name": "Bamako Sign Language" + }, + "boh": { + "english_name": "Boma" + }, + "boi": { + "english_name": "Barbare\u00f1o" + }, + "boj": { + "english_name": "Anjam" + }, + "bok": { + "english_name": "Bonjo" + }, + "bol": { + "english_name": "Bole" + }, + "bom": { + "english_name": "Berom" + }, + "bon": { + "english_name": "Bine" + }, + "boo": { + "english_name": "Bozo, Tiemac\u00e8w\u00e8" + }, + "bop": { + "english_name": "Bonkiman" + }, + "boq": { + "english_name": "Bogaya" + }, + "bor": { + "english_name": "Bor\u00f4ro" + }, + "bot": { + "english_name": "Bongo" + }, + "bou": { + "english_name": "Bondei" + }, + "bov": { + "english_name": "Tuwuli" + }, + "bow": { + "english_name": "Rema" + }, + "box": { + "english_name": "Buamu" + }, + "boy": { + "english_name": "Bodo (Central African Republic)" + }, + "boz": { + "english_name": "Bozo, Ti\u00e9yaxo" + }, + "bpa": { + "english_name": "Daakaka" + }, + "bpb": { + "english_name": "Barbacoas" + }, + "bpd": { + "english_name": "Banda-Banda" + }, + "bpg": { + "english_name": "Bonggo" + }, + "bph": { + "english_name": "Botlikh" + }, + "bpi": { + "english_name": "Bagupi" + }, + "bpj": { + "english_name": "Binji" + }, + "bpk": { + "english_name": "Orowe" + }, + "bpl": { + "english_name": "Broome Pearling Lugger Pidgin" + }, + "bpm": { + "english_name": "Biyom" + }, + "bpn": { + "english_name": "Dzao Min" + }, + "bpo": { + "english_name": "Anasi" + }, + "bpp": { + "english_name": "Kaure" + }, + "bpq": { + "english_name": "Malay, Banda" + }, + "bpr": { + "english_name": "Blaan, Koronadal" + }, + "bps": { + "english_name": "Blaan, Sarangani" + }, + "bpt": { + "english_name": "Barrow Point" + }, + "bpu": { + "english_name": "Bongu" + }, + "bpv": { + "english_name": "Marind, Bian" + }, + "bpw": { + "english_name": "Bo (Papua New Guinea)" + }, + "bpx": { + "english_name": "Bareli, Palya" + }, + "bpy": { + "english_name": "Bishnupriya" + }, + "bpz": { + "english_name": "Bilba" + }, + "bqa": { + "english_name": "Tchumbuli" + }, + "bqb": { + "english_name": "Bagusa" + }, + "bqc": { + "english_name": "Boko (Benin)" + }, + "bqd": { + "english_name": "Bung" + }, + "bqf": { + "english_name": "Baga Kaloum" + }, + "bqg": { + "english_name": "Bago-Kusuntu" + }, + "bqh": { + "english_name": "Baima" + }, + "bqi": { + "english_name": "Bakhtiari" + }, + "bqj": { + "english_name": "Bandial" + }, + "bqk": { + "english_name": "Banda-Mbr\u00e8s" + }, + "bql": { + "english_name": "Bilakura" + }, + "bqm": { + "english_name": "Wumboko" + }, + "bqn": { + "english_name": "Bulgarian Sign Language" + }, + "bqo": { + "english_name": "Balo" + }, + "bqp": { + "english_name": "Busa" + }, + "bqq": { + "english_name": "Biritai" + }, + "bqr": { + "english_name": "Burusu" + }, + "bqs": { + "english_name": "Bosngun" + }, + "bqt": { + "english_name": "Bamukumbit" + }, + "bqu": { + "english_name": "Boguru" + }, + "bqv": { + "english_name": "Koro Wachi" + }, + "bqw": { + "english_name": "Buru (Nigeria)" + }, + "bqx": { + "english_name": "Baangi" + }, + "bqy": { + "english_name": "Bengkala Sign Language" + }, + "bqz": { + "english_name": "Bakaka" + }, + "br": { + "english_name": "Breton", + "name": "Brezhoneg" + }, + "bra": { + "english_name": "Braj" + }, + "brb": { + "english_name": "Lave" + }, + "brc": { + "english_name": "Creole Dutch, Berbice" + }, + "brd": { + "english_name": "Baraamu" + }, + "brf": { + "english_name": "Bera" + }, + "brg": { + "english_name": "Baure" + }, + "brh": { + "english_name": "Brahui" + }, + "bri": { + "english_name": "Mokpwe" + }, + "brj": { + "english_name": "Bieria" + }, + "brk": { + "english_name": "Birked" + }, + "brl": { + "english_name": "Birwa" + }, + "brm": { + "english_name": "Barambu" + }, + "brn": { + "english_name": "Boruca" + }, + "bro": { + "english_name": "Brokkat" + }, + "brp": { + "english_name": "Barapasi" + }, + "brq": { + "english_name": "Breri" + }, + "brr": { + "english_name": "Birao" + }, + "brs": { + "english_name": "Baras" + }, + "brt": { + "english_name": "Bitare" + }, + "bru": { + "english_name": "Bru, Eastern" + }, + "brv": { + "english_name": "Bru, Western" + }, + "brw": { + "english_name": "Bellari" + }, + "brx": { + "english_name": "Bodo (India)" + }, + "bry": { + "english_name": "Burui" + }, + "brz": { + "english_name": "Bilbil" + }, + "bs": { + "english_name": "Bosnian", + "name": "Bosnian" + }, + "bsa": { + "english_name": "Abinomn" + }, + "bsb": { + "english_name": "Bisaya, Brunei" + }, + "bsc": { + "english_name": "Bassari" + }, + "bse": { + "english_name": "Wushi" + }, + "bsf": { + "english_name": "Bauchi" + }, + "bsg": { + "english_name": "Bashkardi" + }, + "bsh": { + "english_name": "Kati" + }, + "bsi": { + "english_name": "Bassossi" + }, + "bsj": { + "english_name": "Bangwinji" + }, + "bsk": { + "english_name": "Burushaski" + }, + "bsl": { + "english_name": "Basa-Gumna" + }, + "bsm": { + "english_name": "Busami" + }, + "bsn": { + "english_name": "Barasana-Eduria" + }, + "bso": { + "english_name": "Buso" + }, + "bsp": { + "english_name": "Baga Sitemu" + }, + "bsq": { + "english_name": "Bassa" + }, + "bsr": { + "english_name": "Bassa-Kontagora" + }, + "bss": { + "english_name": "Akoose" + }, + "bst": { + "english_name": "Basketo" + }, + "bsu": { + "english_name": "Bahonsuai" + }, + "bsv": { + "english_name": "Baga Soban\u00e9" + }, + "bsw": { + "english_name": "Baiso" + }, + "bsx": { + "english_name": "Yangkam" + }, + "bsy": { + "english_name": "Bisaya, Sabah" + }, + "bta": { + "english_name": "Bata" + }, + "btc": { + "english_name": "Bati (Cameroon)" + }, + "btd": { + "english_name": "Batak Dairi" + }, + "bte": { + "english_name": "Gamo-Ningi" + }, + "btf": { + "english_name": "Birgit" + }, + "btg": { + "english_name": "B\u00e9t\u00e9, Gagnoa" + }, + "bth": { + "english_name": "Bidayuh, Biatah" + }, + "bti": { + "english_name": "Burate" + }, + "btj": { + "english_name": "Malay, Bacanese" + }, + "btl": { + "english_name": "Bhatola" + }, + "btm": { + "english_name": "Batak Mandailing" + }, + "btn": { + "english_name": "Ratagnon" + }, + "bto": { + "english_name": "Bikol, Rinconada" + }, + "btp": { + "english_name": "Budibud" + }, + "btq": { + "english_name": "Batek" + }, + "btr": { + "english_name": "Baetora" + }, + "bts": { + "english_name": "Batak Simalungun" + }, + "btt": { + "english_name": "Bete-Bendi" + }, + "btu": { + "english_name": "Batu" + }, + "btv": { + "english_name": "Bateri" + }, + "btw": { + "english_name": "Butuanon" + }, + "btx": { + "english_name": "Batak Karo" + }, + "bty": { + "english_name": "Bobot" + }, + "btz": { + "english_name": "Batak Alas-Kluet" + }, + "bua": { + "english_name": "Buriat" + }, + "bub": { + "english_name": "Bua" + }, + "buc": { + "english_name": "Bushi" + }, + "bud": { + "english_name": "Ntcham" + }, + "bue": { + "english_name": "Beothuk" + }, + "buf": { + "english_name": "Bushoong" + }, + "bug": { + "english_name": "Buginese" + }, + "buh": { + "english_name": "Bunu, Younuo" + }, + "bui": { + "english_name": "Bongili" + }, + "buj": { + "english_name": "Basa-Gurmana" + }, + "buk": { + "english_name": "Bugawac" + }, + "bum": { + "english_name": "Bulu (Cameroon)" + }, + "bun": { + "english_name": "Sherbro" + }, + "buo": { + "english_name": "Terei" + }, + "bup": { + "english_name": "Busoa" + }, + "buq": { + "english_name": "Brem" + }, + "bus": { + "english_name": "Bokobaru" + }, + "but": { + "english_name": "Bungain" + }, + "buu": { + "english_name": "Budu" + }, + "buv": { + "english_name": "Bun" + }, + "buw": { + "english_name": "Bubi" + }, + "bux": { + "english_name": "Boghom" + }, + "buy": { + "english_name": "Bullom So" + }, + "buz": { + "english_name": "Bukwen" + }, + "bva": { + "english_name": "Barein" + }, + "bvb": { + "english_name": "Bube" + }, + "bvc": { + "english_name": "Baelelea" + }, + "bvd": { + "english_name": "Baeggu" + }, + "bve": { + "english_name": "Malay, Berau" + }, + "bvf": { + "english_name": "Boor" + }, + "bvg": { + "english_name": "Bonkeng" + }, + "bvh": { + "english_name": "Bure" + }, + "bvi": { + "english_name": "Belanda Viri" + }, + "bvj": { + "english_name": "Baan" + }, + "bvk": { + "english_name": "Bukat" + }, + "bvl": { + "english_name": "Bolivian Sign Language" + }, + "bvm": { + "english_name": "Bamunka" + }, + "bvn": { + "english_name": "Buna" + }, + "bvo": { + "english_name": "Bolgo" + }, + "bvp": { + "english_name": "Bumang" + }, + "bvq": { + "english_name": "Birri" + }, + "bvr": { + "english_name": "Burarra" + }, + "bvt": { + "english_name": "Bati (Indonesia)" + }, + "bvu": { + "english_name": "Malay, Bukit" + }, + "bvv": { + "english_name": "Baniva" + }, + "bvw": { + "english_name": "Boga" + }, + "bvx": { + "english_name": "Dibole" + }, + "bvy": { + "english_name": "Baybayanon" + }, + "bvz": { + "english_name": "Bauzi" + }, + "bwa": { + "english_name": "Bwatoo" + }, + "bwb": { + "english_name": "Namosi-Naitasiri-Serua" + }, + "bwc": { + "english_name": "Bwile" + }, + "bwd": { + "english_name": "Bwaidoka" + }, + "bwe": { + "english_name": "Karen, Bwe" + }, + "bwf": { + "english_name": "Boselewa" + }, + "bwg": { + "english_name": "Barwe" + }, + "bwh": { + "english_name": "Bishuo" + }, + "bwi": { + "english_name": "Baniwa" + }, + "bwj": { + "english_name": "Bwamu, L\u00e1\u00e1 L\u00e1\u00e1" + }, + "bwk": { + "english_name": "Bauwaki" + }, + "bwl": { + "english_name": "Bwela" + }, + "bwm": { + "english_name": "Biwat" + }, + "bwn": { + "english_name": "Bunu, Wunai" + }, + "bwo": { + "english_name": "Boro (Ethiopia)" + }, + "bwp": { + "english_name": "Mandobo Bawah" + }, + "bwq": { + "english_name": "Bobo Madar\u00e9, Southern" + }, + "bwr": { + "english_name": "Bura-Pabir" + }, + "bws": { + "english_name": "Bomboma" + }, + "bwt": { + "english_name": "Bafaw-Balong" + }, + "bwu": { + "english_name": "Buli (Ghana)" + }, + "bww": { + "english_name": "Bwa" + }, + "bwx": { + "english_name": "Bunu, Bu-Nao" + }, + "bwy": { + "english_name": "Bwamu, Cwi" + }, + "bwz": { + "english_name": "Bwisi" + }, + "bxa": { + "english_name": "Tairaha" + }, + "bxb": { + "english_name": "Bor, Belanda" + }, + "bxc": { + "english_name": "Molengue" + }, + "bxd": { + "english_name": "Pela" + }, + "bxe": { + "english_name": "Birale" + }, + "bxf": { + "english_name": "Bilur" + }, + "bxg": { + "english_name": "Bangala" + }, + "bxh": { + "english_name": "Buhutu" + }, + "bxi": { + "english_name": "Pirlatapa" + }, + "bxj": { + "english_name": "Bayungu" + }, + "bxk": { + "english_name": "Bukusu" + }, + "bxl": { + "english_name": "Jalkunan" + }, + "bxm": { + "english_name": "Buriat, Mongolia" + }, + "bxn": { + "english_name": "Burduna" + }, + "bxo": { + "english_name": "Barikanchi" + }, + "bxp": { + "english_name": "Bebil" + }, + "bxq": { + "english_name": "Beele" + }, + "bxr": { + "english_name": "Buriat, Russia" + }, + "bxs": { + "english_name": "Busam" + }, + "bxu": { + "english_name": "Buriat, China" + }, + "bxv": { + "english_name": "Berakou" + }, + "bxw": { + "english_name": "Bankagooma" + }, + "bxz": { + "english_name": "Binahari" + }, + "bya": { + "english_name": "Batak" + }, + "byb": { + "english_name": "Bikya" + }, + "byc": { + "english_name": "Ubaghara" + }, + "byd": { + "english_name": "Benyadu'" + }, + "bye": { + "english_name": "Pouye" + }, + "byf": { + "english_name": "Bete" + }, + "byg": { + "english_name": "Baygo" + }, + "byh": { + "english_name": "Bhujel" + }, + "byi": { + "english_name": "Buyu" + }, + "byj": { + "english_name": "Bina (Nigeria)" + }, + "byk": { + "english_name": "Biao" + }, + "byl": { + "english_name": "Bayono" + }, + "bym": { + "english_name": "Bidyara" + }, + "byn": { + "english_name": "Bilin", + "name": "Bilin" + }, + "byo": { + "english_name": "Biyo" + }, + "byp": { + "english_name": "Bumaji" + }, + "byq": { + "english_name": "Basay" + }, + "byr": { + "english_name": "Baruya" + }, + "bys": { + "english_name": "Burak" + }, + "byt": { + "english_name": "Berti" + }, + "byv": { + "english_name": "Medumba" + }, + "byw": { + "english_name": "Belhariya" + }, + "byx": { + "english_name": "Qaqet" + }, + "byz": { + "english_name": "Banaro" + }, + "bza": { + "english_name": "Bandi" + }, + "bzb": { + "english_name": "Andio" + }, + "bzc": { + "english_name": "Malagasy, Southern Betsimisaraka" + }, + "bzd": { + "english_name": "Bribri" + }, + "bze": { + "english_name": "Bozo, Jenaama" + }, + "bzf": { + "english_name": "Boikin" + }, + "bzg": { + "english_name": "Babuza" + }, + "bzh": { + "english_name": "Buang, Mapos" + }, + "bzi": { + "english_name": "Bisu" + }, + "bzj": { + "english_name": "Kriol English, Belize" + }, + "bzk": { + "english_name": "Creole English, Nicaragua" + }, + "bzl": { + "english_name": "Boano (Sulawesi)" + }, + "bzm": { + "english_name": "Bolondo" + }, + "bzn": { + "english_name": "Boano (Maluku)" + }, + "bzo": { + "english_name": "Bozaba" + }, + "bzp": { + "english_name": "Kemberano" + }, + "bzq": { + "english_name": "Buli (Indonesia)" + }, + "bzr": { + "english_name": "Biri" + }, + "bzs": { + "english_name": "Brazilian Sign Language" + }, + "bzt": { + "english_name": "Brithenig" + }, + "bzu": { + "english_name": "Burmeso" + }, + "bzv": { + "english_name": "Naami" + }, + "bzw": { + "english_name": "Basa (Nigeria)" + }, + "bzx": { + "english_name": "Bozo, K\u025bl\u025bngaxo" + }, + "bzy": { + "english_name": "Obanliku" + }, + "bzz": { + "english_name": "Evant" + }, + "ca": { + "english_name": "Catalan", + "name": "Catal\u00e0" + }, + "caa": { + "english_name": "Chort\u00ed" + }, + "cab": { + "english_name": "Garifuna" + }, + "cac": { + "english_name": "Chuj" + }, + "cad": { + "english_name": "Caddo" + }, + "cae": { + "english_name": "Lehar" + }, + "caf": { + "english_name": "Carrier, Southern" + }, + "cag": { + "english_name": "Nivacl\u00e9" + }, + "cah": { + "english_name": "Cahuarano" + }, + "caj": { + "english_name": "Chan\u00e9" + }, + "cak": { + "english_name": "Kaqchikel" + }, + "cal": { + "english_name": "Carolinian" + }, + "cam": { + "english_name": "Cemuh\u00ee" + }, + "can": { + "english_name": "Chambri" + }, + "cao": { + "english_name": "Ch\u00e1cobo" + }, + "cap": { + "english_name": "Chipaya" + }, + "caq": { + "english_name": "Nicobarese, Car" + }, + "car": { + "english_name": "Carib, Galibi" + }, + "cas": { + "english_name": "Tsiman\u00e9" + }, + "cav": { + "english_name": "Cavine\u00f1a" + }, + "caw": { + "english_name": "Callawalla" + }, + "cax": { + "english_name": "Chiquitano" + }, + "cay": { + "english_name": "Cayuga" + }, + "caz": { + "english_name": "Canichana" + }, + "cbb": { + "english_name": "Cabiyar\u00ed" + }, + "cbc": { + "english_name": "Carapana" + }, + "cbd": { + "english_name": "Carijona" + }, + "cbe": { + "english_name": "Chipiajes" + }, + "cbg": { + "english_name": "Chimila" + }, + "cbh": { + "english_name": "Cagua" + }, + "cbi": { + "english_name": "Chachi" + }, + "cbj": { + "english_name": "Ede Cabe" + }, + "cbk": { + "english_name": "Chavacano" + }, + "cbl": { + "english_name": "Chin, Bualkhaw" + }, + "cbn": { + "english_name": "Nyahkur" + }, + "cbo": { + "english_name": "Izora" + }, + "cbr": { + "english_name": "Cashibo-Cacataibo" + }, + "cbs": { + "english_name": "Cashinahua" + }, + "cbt": { + "english_name": "Chayahuita" + }, + "cbu": { + "english_name": "Candoshi-Shapra" + }, + "cbv": { + "english_name": "Cacua" + }, + "cbw": { + "english_name": "Kinabalian" + }, + "cby": { + "english_name": "Carabayo" + }, + "cca": { + "english_name": "Cauca" + }, + "ccc": { + "english_name": "Chamicuro" + }, + "ccd": { + "english_name": "Creole, Cafundo" + }, + "cce": { + "english_name": "Chopi" + }, + "ccg": { + "english_name": "Daka, Samba" + }, + "cch": { + "english_name": "Atsam" + }, + "ccj": { + "english_name": "Kasanga" + }, + "ccl": { + "english_name": "Cutchi-Swahili" + }, + "ccm": { + "english_name": "Creole Malay, Malaccan" + }, + "cco": { + "english_name": "Chinantec, Comaltepec" + }, + "ccp": { + "english_name": "Chakma" + }, + "ccr": { + "english_name": "Cacaopera" + }, + "cda": { + "english_name": "Choni" + }, + "cde": { + "english_name": "Chenchu" + }, + "cdf": { + "english_name": "Chiru" + }, + "cdg": { + "english_name": "Chamari" + }, + "cdh": { + "english_name": "Chambeali" + }, + "cdi": { + "english_name": "Chodri" + }, + "cdj": { + "english_name": "Churahi" + }, + "cdm": { + "english_name": "Chepang" + }, + "cdn": { + "english_name": "Chaudangsi" + }, + "cdo": { + "english_name": "Chinese, Min Dong" + }, + "cdr": { + "english_name": "Cinda-Regi-Tiyal" + }, + "cds": { + "english_name": "Chadian Sign Language" + }, + "cdy": { + "english_name": "Chadong" + }, + "cdz": { + "english_name": "Koda" + }, + "ce": { + "english_name": "Chechen" + }, + "cea": { + "english_name": "Chehalis, Lower" + }, + "ceb": { + "english_name": "Cebuano" + }, + "ceg": { + "english_name": "Chamacoco" + }, + "cek": { + "english_name": "Chin, Eastern Khumi" + }, + "cen": { + "english_name": "Cen" + }, + "cet": { + "english_name": "Cent\u00fa\u00fam" + }, + "cfa": { + "english_name": "Dijim-Bwilim" + }, + "cfd": { + "english_name": "Cara" + }, + "cfg": { + "english_name": "Como Karim" + }, + "cfm": { + "english_name": "Chin, Falam" + }, + "cga": { + "english_name": "Changriwa" + }, + "cgc": { + "english_name": "Kagayanen" + }, + "cgg": { + "english_name": "Chiga" + }, + "cgk": { + "english_name": "Chocangacakha" + }, + "ch": { + "english_name": "Chamorro" + }, + "chb": { + "english_name": "Chibcha" + }, + "chc": { + "english_name": "Catawba" + }, + "chd": { + "english_name": "Chontal, Highland Oaxaca" + }, + "chf": { + "english_name": "Chontal, Tabasco" + }, + "chg": { + "english_name": "Chagatai" + }, + "chh": { + "english_name": "Chinook" + }, + "chj": { + "english_name": "Chinantec, Ojitl\u00e1n" + }, + "chk": { + "english_name": "Chuukese" + }, + "chl": { + "english_name": "Cahuilla" + }, + "chm": { + "english_name": "Mari (Russia)" + }, + "chn": { + "english_name": "Chinook jargon" + }, + "cho": { + "english_name": "Choctaw" + }, + "chp": { + "english_name": "Chipewyan" + }, + "chq": { + "english_name": "Chinantec, Quiotepec" + }, + "chr": { + "english_name": "Cherokee" + }, + "cht": { + "english_name": "Chol\u00f3n" + }, + "chw": { + "english_name": "Chuwabu" + }, + "chx": { + "english_name": "Chantyal" + }, + "chy": { + "english_name": "Cheyenne" + }, + "chz": { + "english_name": "Chinantec, Ozumac\u00edn" + }, + "cia": { + "english_name": "Cia-Cia" + }, + "cib": { + "english_name": "Gbe, Ci" + }, + "cic": { + "english_name": "Chickasaw" + }, + "cid": { + "english_name": "Chimariko" + }, + "cie": { + "english_name": "Cineni" + }, + "cih": { + "english_name": "Chinali" + }, + "cik": { + "english_name": "Kinnauri, Chitkuli" + }, + "cim": { + "english_name": "Cimbrian" + }, + "cin": { + "english_name": "Cinta Larga" + }, + "cip": { + "english_name": "Chiapanec" + }, + "cir": { + "english_name": "Tiri" + }, + "ciw": { + "english_name": "Chippewa" + }, + "ciy": { + "english_name": "Chaima" + }, + "cja": { + "english_name": "Cham, Western" + }, + "cje": { + "english_name": "Chru" + }, + "cjh": { + "english_name": "Chehalis, Upper" + }, + "cji": { + "english_name": "Chamalal" + }, + "cjk": { + "english_name": "Chokwe" + }, + "cjm": { + "english_name": "Cham, Eastern" + }, + "cjn": { + "english_name": "Chenapian" + }, + "cjo": { + "english_name": "Ash\u00e9ninka Pajonal" + }, + "cjp": { + "english_name": "Cab\u00e9car" + }, + "cjs": { + "english_name": "Shor" + }, + "cjv": { + "english_name": "Chuave" + }, + "cjy": { + "english_name": "Chinese, Jinyu" + }, + "ckb": { + "english_name": "Kurdish, Central" + }, + "ckh": { + "english_name": "Chak" + }, + "ckl": { + "english_name": "Cibak" + }, + "ckn": { + "english_name": "Chin, Kaang" + }, + "cko": { + "english_name": "Anufo" + }, + "ckq": { + "english_name": "Kajakse" + }, + "ckr": { + "english_name": "Kairak" + }, + "cks": { + "english_name": "Tayo" + }, + "ckt": { + "english_name": "Chukot" + }, + "cku": { + "english_name": "Koasati" + }, + "ckv": { + "english_name": "Kavalan" + }, + "ckx": { + "english_name": "Caka" + }, + "cky": { + "english_name": "Cakfem-Mushere" + }, + "ckz": { + "english_name": "Cakchiquel-Quich\u00e9 Mixed Language" + }, + "cla": { + "english_name": "Ron" + }, + "clc": { + "english_name": "Chilcotin" + }, + "cld": { + "english_name": "Neo-Aramaic, Chaldean" + }, + "cle": { + "english_name": "Chinantec, Lealao" + }, + "clh": { + "english_name": "Chilisso" + }, + "cli": { + "english_name": "Chakali" + }, + "clj": { + "english_name": "Chin, Laitu" + }, + "clk": { + "english_name": "Idu-Mishmi" + }, + "cll": { + "english_name": "Chala" + }, + "clm": { + "english_name": "Clallam" + }, + "clo": { + "english_name": "Chontal, Lowland Oaxaca" + }, + "clt": { + "english_name": "Chin, Lautu" + }, + "clu": { + "english_name": "Caluyanun" + }, + "clw": { + "english_name": "Chulym" + }, + "cly": { + "english_name": "Chatino, Eastern Highland" + }, + "cma": { + "english_name": "Maa" + }, + "cme": { + "english_name": "Cerma" + }, + "cmg": { + "english_name": "Mongolian, Classical" + }, + "cmi": { + "english_name": "Ember\u00e1-Cham\u00ed" + }, + "cml": { + "english_name": "Campalagian" + }, + "cmm": { + "english_name": "Michigamea" + }, + "cmn": { + "english_name": "Chinese, Mandarin" + }, + "cmo": { + "english_name": "Mnong, Central" + }, + "cmr": { + "english_name": "Chin, Mro-Khimi" + }, + "cms": { + "english_name": "Messapic" + }, + "cmt": { + "english_name": "Camtho" + }, + "cna": { + "english_name": "Changthang" + }, + "cnb": { + "english_name": "Chin, Chinbon" + }, + "cnc": { + "english_name": "C\u00f4\u00f4ng" + }, + "cng": { + "english_name": "Qiang, Northern" + }, + "cnh": { + "english_name": "Chin, Haka" + }, + "cni": { + "english_name": "Ash\u00e1ninka" + }, + "cnk": { + "english_name": "Chin, Khumi" + }, + "cnl": { + "english_name": "Chinantec, Lalana" + }, + "cno": { + "english_name": "Con" + }, + "cns": { + "english_name": "Asmat, Central" + }, + "cnt": { + "english_name": "Chinantec, Tepetotutla" + }, + "cnu": { + "english_name": "Chenoua" + }, + "cnw": { + "english_name": "Chin, Ngawn" + }, + "cnx": { + "english_name": "Cornish, Middle" + }, + "co": { + "english_name": "Corsican" + }, + "coa": { + "english_name": "Malay, Cocos Islands" + }, + "cob": { + "english_name": "Chicomuceltec" + }, + "coc": { + "english_name": "Cocopa" + }, + "cod": { + "english_name": "Cocama-Cocamilla" + }, + "coe": { + "english_name": "Koreguaje" + }, + "cof": { + "english_name": "Colorado" + }, + "cog": { + "english_name": "Chong" + }, + "coh": { + "english_name": "Chonyi-Dzihana-Kauma" + }, + "coj": { + "english_name": "Cochimi" + }, + "cok": { + "english_name": "Cora, Santa Teresa" + }, + "col": { + "english_name": "Columbia-Wenatchi" + }, + "com": { + "english_name": "Comanche" + }, + "con": { + "english_name": "Cof\u00e1n" + }, + "coo": { + "english_name": "Comox" + }, + "cop": { + "english_name": "Coptic" + }, + "coq": { + "english_name": "Coquille" + }, + "cot": { + "english_name": "Caquinte" + }, + "cou": { + "english_name": "Wamey" + }, + "cov": { + "english_name": "Cao Miao" + }, + "cow": { + "english_name": "Cowlitz" + }, + "cox": { + "english_name": "Nanti" + }, + "coy": { + "english_name": "Coyaima" + }, + "coz": { + "english_name": "Chochotec" + }, + "cpa": { + "english_name": "Chinantec, Palantla" + }, + "cpb": { + "english_name": "Ash\u00e9ninka, Ucayali-Yur\u00faa" + }, + "cpc": { + "english_name": "Ajy\u00edninka Apurucayali" + }, + "cpg": { + "english_name": "Greek, Cappadocian" + }, + "cpi": { + "english_name": "Pidgin English, Chinese" + }, + "cpn": { + "english_name": "Cherepon" + }, + "cpo": { + "english_name": "Kpeego" + }, + "cps": { + "english_name": "Capiznon" + }, + "cpu": { + "english_name": "Ash\u00e9ninka, Pichis" + }, + "cpx": { + "english_name": "Chinese, Pu-Xian" + }, + "cpy": { + "english_name": "Ash\u00e9ninka, South Ucayali" + }, + "cqd": { + "english_name": "Miao, Chuanqiandian Cluster" + }, + "cqu": { + "english_name": "Quechua, Chilean" + }, + "cr": { + "english_name": "Cree" + }, + "cra": { + "english_name": "Chara" + }, + "crb": { + "english_name": "Carib, Island" + }, + "crc": { + "english_name": "Lonwolwol" + }, + "crd": { + "english_name": "Coeur d'Alene" + }, + "crf": { + "english_name": "Caramanta" + }, + "crg": { + "english_name": "Michif" + }, + "crh": { + "english_name": "Tatar, Crimean", + "name": "Tatar, Crimean" + }, + "cri": { + "english_name": "S\u00e3otomense" + }, + "crj": { + "english_name": "Cree, Southern East" + }, + "crk": { + "english_name": "Cree, Plains" + }, + "crl": { + "english_name": "Cree, Northern East" + }, + "crm": { + "english_name": "Cree, Moose" + }, + "crn": { + "english_name": "Cora, El Nayar" + }, + "cro": { + "english_name": "Crow" + }, + "crq": { + "english_name": "Chorote, Iyo'wujwa" + }, + "crr": { + "english_name": "Algonquian, Carolina" + }, + "crs": { + "english_name": "Creole French, Seselwa" + }, + "crt": { + "english_name": "Chorote, Iyojwa'ja" + }, + "crv": { + "english_name": "Chaura" + }, + "crw": { + "english_name": "Chrau" + }, + "crx": { + "english_name": "Carrier" + }, + "cry": { + "english_name": "Cori" + }, + "crz": { + "english_name": "Cruze\u00f1o" + }, + "cs": { + "english_name": "Czech", + "name": "\u010de\u0161tina" + }, + "csa": { + "english_name": "Chinantec, Chiltepec" + }, + "csb": { + "english_name": "Kashubian" + }, + "csc": { + "english_name": "Catalan Sign Language" + }, + "csd": { + "english_name": "Chiangmai Sign Language" + }, + "cse": { + "english_name": "Czech Sign Language" + }, + "csf": { + "english_name": "Cuba Sign Language" + }, + "csg": { + "english_name": "Chilean Sign Language" + }, + "csh": { + "english_name": "Chin, Asho" + }, + "csi": { + "english_name": "Miwok, Coast" + }, + "csj": { + "english_name": "Chin, Songlai" + }, + "csk": { + "english_name": "Jola-Kasa" + }, + "csl": { + "english_name": "Chinese Sign Language" + }, + "csm": { + "english_name": "Miwok, Central Sierra" + }, + "csn": { + "english_name": "Colombian Sign Language" + }, + "cso": { + "english_name": "Chinantec, Sochiapam" + }, + "csq": { + "english_name": "Croatia Sign Language" + }, + "csr": { + "english_name": "Costa Rican Sign Language" + }, + "css": { + "english_name": "Ohlone, Southern" + }, + "cst": { + "english_name": "Ohlone, Northern" + }, + "csv": { + "english_name": "Chin, Sumtu" + }, + "csw": { + "english_name": "Cree, Swampy" + }, + "csy": { + "english_name": "Chin, Siyin" + }, + "csz": { + "english_name": "Coos" + }, + "cta": { + "english_name": "Chatino, Tataltepec" + }, + "ctc": { + "english_name": "Chetco" + }, + "ctd": { + "english_name": "Chin, Tedim" + }, + "cte": { + "english_name": "Chinantec, Tepinapa" + }, + "ctg": { + "english_name": "Chittagonian" + }, + "cth": { + "english_name": "Chin, Thaiphum" + }, + "ctl": { + "english_name": "Chinantec, Tlacoatzintepec" + }, + "ctm": { + "english_name": "Chitimacha" + }, + "ctn": { + "english_name": "Chhintange" + }, + "cto": { + "english_name": "Ember\u00e1-Cat\u00edo" + }, + "ctp": { + "english_name": "Chatino, Western Highland" + }, + "cts": { + "english_name": "Bikol, Northern Catanduanes" + }, + "ctt": { + "english_name": "Chetti, Wayanad" + }, + "ctu": { + "english_name": "Chol" + }, + "ctz": { + "english_name": "Chatino, Zacatepec" + }, + "cu": { + "english_name": "Slavic, Church" + }, + "cua": { + "english_name": "Cua" + }, + "cub": { + "english_name": "Cubeo" + }, + "cuc": { + "english_name": "Chinantec, Usila" + }, + "cug": { + "english_name": "Cung" + }, + "cuh": { + "english_name": "Chuka" + }, + "cui": { + "english_name": "Cuiba" + }, + "cuj": { + "english_name": "Mashco Piro" + }, + "cuk": { + "english_name": "Kuna, San Blas" + }, + "cul": { + "english_name": "Culina" + }, + "cum": { + "english_name": "Cumeral" + }, + "cuo": { + "english_name": "Cumanagoto" + }, + "cup": { + "english_name": "Cupe\u00f1o" + }, + "cuq": { + "english_name": "Cun" + }, + "cur": { + "english_name": "Chhulung" + }, + "cut": { + "english_name": "Cuicatec, Teutila" + }, + "cuu": { + "english_name": "Tai Ya" + }, + "cuv": { + "english_name": "Cuvok" + }, + "cuw": { + "english_name": "Chukwa" + }, + "cux": { + "english_name": "Cuicatec, Tepeuxila" + }, + "cv": { + "english_name": "Chuvash" + }, + "cvg": { + "english_name": "Chug" + }, + "cvn": { + "english_name": "Chinantec, Valle Nacional" + }, + "cwa": { + "english_name": "Kabwa" + }, + "cwb": { + "english_name": "Maindo" + }, + "cwd": { + "english_name": "Cree, Woods" + }, + "cwe": { + "english_name": "Kwere" + }, + "cwg": { + "english_name": "Chewong" + }, + "cwt": { + "english_name": "Kuwaataay" + }, + "cy": { + "english_name": "Welsh", + "name": "Cymraeg" + }, + "cya": { + "english_name": "Chatino, Nopala" + }, + "cyb": { + "english_name": "Cayubaba" + }, + "cyo": { + "english_name": "Cuyonon" + }, + "czh": { + "english_name": "Chinese, Huizhou" + }, + "czk": { + "english_name": "Knaanic" + }, + "czn": { + "english_name": "Chatino, Zenzontepec" + }, + "czo": { + "english_name": "Chinese, Min Zhong" + }, + "czt": { + "english_name": "Chin, Zotung" + }, + "da": { + "english_name": "Danish", + "name": "Dansk" + }, + "daa": { + "english_name": "Dangal\u00e9at" + }, + "dac": { + "english_name": "Dambi" + }, + "dad": { + "english_name": "Marik" + }, + "dae": { + "english_name": "Duupa" + }, + "dag": { + "english_name": "Dagbani" + }, + "dah": { + "english_name": "Gwahatike" + }, + "dai": { + "english_name": "Day" + }, + "daj": { + "english_name": "Daju, Dar Fur" + }, + "dak": { + "english_name": "Dakota" + }, + "dal": { + "english_name": "Dahalo" + }, + "dam": { + "english_name": "Damakawa" + }, + "dao": { + "english_name": "Chin, Daai" + }, + "daq": { + "english_name": "Maria, Dandami" + }, + "dar": { + "english_name": "Dargwa" + }, + "das": { + "english_name": "Daho-Doo" + }, + "dau": { + "english_name": "Daju, Dar Sila" + }, + "dav": { + "english_name": "Taita" + }, + "daw": { + "english_name": "Davawenyo" + }, + "dax": { + "english_name": "Dayi" + }, + "daz": { + "english_name": "Dao" + }, + "dba": { + "english_name": "Bangime" + }, + "dbb": { + "english_name": "Deno" + }, + "dbd": { + "english_name": "Dadiya" + }, + "dbe": { + "english_name": "Dabe" + }, + "dbf": { + "english_name": "Edopi" + }, + "dbg": { + "english_name": "Dogon, Dogul Dom" + }, + "dbi": { + "english_name": "Doka" + }, + "dbj": { + "english_name": "Ida'an" + }, + "dbl": { + "english_name": "Dyirbal" + }, + "dbm": { + "english_name": "Duguri" + }, + "dbn": { + "english_name": "Duriankere" + }, + "dbo": { + "english_name": "Dulbu" + }, + "dbp": { + "english_name": "Duwai" + }, + "dbq": { + "english_name": "Daba" + }, + "dbr": { + "english_name": "Dabarre" + }, + "dbt": { + "english_name": "Dogon, Ben Tey" + }, + "dbu": { + "english_name": "Dogon, Bondum Dom" + }, + "dbv": { + "english_name": "Dungu" + }, + "dbw": { + "english_name": "Dogon, Bankan Tey" + }, + "dby": { + "english_name": "Dibiyaso" + }, + "dcc": { + "english_name": "Deccan" + }, + "dcr": { + "english_name": "Negerhollands" + }, + "dda": { + "english_name": "Dadi Dadi" + }, + "ddd": { + "english_name": "Dongotono" + }, + "dde": { + "english_name": "Doondo" + }, + "ddg": { + "english_name": "Fataluku" + }, + "ddi": { + "english_name": "Goodenough, West" + }, + "ddj": { + "english_name": "Jaru" + }, + "ddn": { + "english_name": "Dendi (Benin)" + }, + "ddo": { + "english_name": "Dido" + }, + "ddr": { + "english_name": "Dhudhuroa" + }, + "dds": { + "english_name": "Dogon, Donno So" + }, + "ddw": { + "english_name": "Dawera-Daweloor" + }, + "de": { + "english_name": "German", + "name": "Deutsch" + }, + "dec": { + "english_name": "Dagik" + }, + "ded": { + "english_name": "Dedua" + }, + "dee": { + "english_name": "Dewoin" + }, + "def": { + "english_name": "Dezfuli" + }, + "deg": { + "english_name": "Degema" + }, + "deh": { + "english_name": "Dehwari" + }, + "dei": { + "english_name": "Demisa" + }, + "dek": { + "english_name": "Dek" + }, + "del": { + "english_name": "Delaware" + }, + "dem": { + "english_name": "Dem" + }, + "den": { + "english_name": "Slave (Athapascan)" + }, + "dep": { + "english_name": "Delaware, Pidgin" + }, + "deq": { + "english_name": "Dendi (Central African Republic)" + }, + "der": { + "english_name": "Deori" + }, + "des": { + "english_name": "Desano" + }, + "dev": { + "english_name": "Domung" + }, + "dez": { + "english_name": "Dengese" + }, + "dga": { + "english_name": "Dagaare, Southern" + }, + "dgb": { + "english_name": "Dogon, Bunoge" + }, + "dgc": { + "english_name": "Agta, Casiguran Dumagat" + }, + "dgd": { + "english_name": "Dagaari Dioula" + }, + "dge": { + "english_name": "Degenan" + }, + "dgg": { + "english_name": "Doga" + }, + "dgh": { + "english_name": "Dghwede" + }, + "dgi": { + "english_name": "Dagara, Northern" + }, + "dgk": { + "english_name": "Dagba" + }, + "dgl": { + "english_name": "Andaandi" + }, + "dgn": { + "english_name": "Dagoman" + }, + "dgo": { + "english_name": "Dogri (individual language)" + }, + "dgr": { + "english_name": "Dogrib" + }, + "dgs": { + "english_name": "Dogoso" + }, + "dgt": { + "english_name": "Ndra'ngith" + }, + "dgu": { + "english_name": "Degaru" + }, + "dgw": { + "english_name": "Daungwurrung" + }, + "dgx": { + "english_name": "Doghoro" + }, + "dgz": { + "english_name": "Daga" + }, + "dhd": { + "english_name": "Dhundari" + }, + "dhg": { + "english_name": "Djangu" + }, + "dhi": { + "english_name": "Dhimal" + }, + "dhl": { + "english_name": "Dhalandji" + }, + "dhm": { + "english_name": "Zemba" + }, + "dhn": { + "english_name": "Dhanki" + }, + "dho": { + "english_name": "Dhodia" + }, + "dhr": { + "english_name": "Dhargari" + }, + "dhs": { + "english_name": "Dhaiso" + }, + "dhu": { + "english_name": "Dhurga" + }, + "dhv": { + "english_name": "Dehu" + }, + "dhw": { + "english_name": "Dhanwar (Nepal)" + }, + "dhx": { + "english_name": "Dhungaloo" + }, + "dia": { + "english_name": "Dia" + }, + "dib": { + "english_name": "Dinka, South Central" + }, + "dic": { + "english_name": "Dida, Lakota" + }, + "did": { + "english_name": "Didinga" + }, + "dif": { + "english_name": "Dieri" + }, + "dig": { + "english_name": "Digo" + }, + "dih": { + "english_name": "Kumiai" + }, + "dii": { + "english_name": "Dimbong" + }, + "dij": { + "english_name": "Dai" + }, + "dik": { + "english_name": "Dinka, Southwestern" + }, + "dil": { + "english_name": "Dilling" + }, + "dim": { + "english_name": "Dime" + }, + "din": { + "english_name": "Dinka" + }, + "dio": { + "english_name": "Dibo" + }, + "dip": { + "english_name": "Dinka, Northeastern" + }, + "diq": { + "english_name": "Dimli (individual language)" + }, + "dir": { + "english_name": "Dirim" + }, + "dis": { + "english_name": "Dimasa" + }, + "dit": { + "english_name": "Dirari" + }, + "diu": { + "english_name": "Diriku" + }, + "diw": { + "english_name": "Dinka, Northwestern" + }, + "dix": { + "english_name": "Dixon Reef" + }, + "diy": { + "english_name": "Diuwe" + }, + "diz": { + "english_name": "Ding" + }, + "dja": { + "english_name": "Djadjawurrung" + }, + "djb": { + "english_name": "Djinba" + }, + "djc": { + "english_name": "Daju, Dar Daju" + }, + "djd": { + "english_name": "Djamindjung" + }, + "dje": { + "english_name": "Zarma" + }, + "djf": { + "english_name": "Djangun" + }, + "dji": { + "english_name": "Djinang" + }, + "djj": { + "english_name": "Djeebbana" + }, + "djk": { + "english_name": "Eastern Maroon Creole" + }, + "djm": { + "english_name": "Dogon, Jamsay" + }, + "djn": { + "english_name": "Djauan" + }, + "djo": { + "english_name": "Jangkang" + }, + "djr": { + "english_name": "Djambarrpuyngu" + }, + "dju": { + "english_name": "Kapriman" + }, + "djw": { + "english_name": "Djawi" + }, + "dka": { + "english_name": "Dakpakha" + }, + "dkk": { + "english_name": "Dakka" + }, + "dkr": { + "english_name": "Kuijau" + }, + "dks": { + "english_name": "Dinka, Southeastern" + }, + "dkx": { + "english_name": "Mazagway" + }, + "dlg": { + "english_name": "Dolgan" + }, + "dlk": { + "english_name": "Dahalik" + }, + "dlm": { + "english_name": "Dalmatian" + }, + "dln": { + "english_name": "Darlong" + }, + "dma": { + "english_name": "Duma" + }, + "dmb": { + "english_name": "Dogon, Mombo" + }, + "dmc": { + "english_name": "Gavak" + }, + "dmd": { + "english_name": "Madhi Madhi" + }, + "dme": { + "english_name": "Dugwor" + }, + "dmg": { + "english_name": "Kinabatangan, Upper" + }, + "dmk": { + "english_name": "Domaaki" + }, + "dml": { + "english_name": "Dameli" + }, + "dmm": { + "english_name": "Dama" + }, + "dmo": { + "english_name": "Kemedzung" + }, + "dmr": { + "english_name": "Damar, East" + }, + "dms": { + "english_name": "Dampelas" + }, + "dmu": { + "english_name": "Dubu" + }, + "dmv": { + "english_name": "Dumpas" + }, + "dmw": { + "english_name": "Mudburra" + }, + "dmx": { + "english_name": "Dema" + }, + "dmy": { + "english_name": "Demta" + }, + "dna": { + "english_name": "Dani, Upper Grand Valley" + }, + "dnd": { + "english_name": "Daonda" + }, + "dne": { + "english_name": "Ndendeule" + }, + "dng": { + "english_name": "Dungan" + }, + "dni": { + "english_name": "Dani, Lower Grand Valley" + }, + "dnj": { + "english_name": "Dan" + }, + "dnk": { + "english_name": "Dengka" + }, + "dnn": { + "english_name": "Dz\u00f9\u00f9ngoo" + }, + "dnr": { + "english_name": "Danaru" + }, + "dnt": { + "english_name": "Dani, Mid Grand Valley" + }, + "dnu": { + "english_name": "Danau" + }, + "dnv": { + "english_name": "Danu" + }, + "dnw": { + "english_name": "Dani, Western" + }, + "dny": { + "english_name": "Den\u00ed" + }, + "doa": { + "english_name": "Dom" + }, + "dob": { + "english_name": "Dobu" + }, + "doc": { + "english_name": "Dong, Northern" + }, + "doe": { + "english_name": "Doe" + }, + "dof": { + "english_name": "Domu" + }, + "doh": { + "english_name": "Dong" + }, + "doi": { + "english_name": "Dogri (macrolanguage)" + }, + "dok": { + "english_name": "Dondo" + }, + "dol": { + "english_name": "Doso" + }, + "don": { + "english_name": "Toura (Papua New Guinea)" + }, + "doo": { + "english_name": "Dongo" + }, + "dop": { + "english_name": "Lukpa" + }, + "doq": { + "english_name": "Dominican Sign Language" + }, + "dor": { + "english_name": "Dori'o" + }, + "dos": { + "english_name": "Dogos\u00e9" + }, + "dot": { + "english_name": "Dass" + }, + "dov": { + "english_name": "Dombe" + }, + "dow": { + "english_name": "Doyayo" + }, + "dox": { + "english_name": "Bussa" + }, + "doy": { + "english_name": "Dompo" + }, + "doz": { + "english_name": "Dorze" + }, + "dpp": { + "english_name": "Papar" + }, + "drb": { + "english_name": "Dair" + }, + "drc": { + "english_name": "Minderico" + }, + "drd": { + "english_name": "Darmiya" + }, + "dre": { + "english_name": "Dolpo" + }, + "drg": { + "english_name": "Rungus" + }, + "dri": { + "english_name": "C'lela" + }, + "drl": { + "english_name": "Paakantyi" + }, + "drn": { + "english_name": "Damar, West" + }, + "dro": { + "english_name": "Melanau, Daro-Matu" + }, + "drq": { + "english_name": "Dura" + }, + "drr": { + "english_name": "Dororo" + }, + "drs": { + "english_name": "Gedeo" + }, + "drt": { + "english_name": "Drents" + }, + "dru": { + "english_name": "Rukai" + }, + "dry": { + "english_name": "Darai" + }, + "dsb": { + "english_name": "Sorbian, Lower" + }, + "dse": { + "english_name": "Dutch Sign Language" + }, + "dsh": { + "english_name": "Daasanach" + }, + "dsi": { + "english_name": "Disa" + }, + "dsl": { + "english_name": "Danish Sign Language" + }, + "dsn": { + "english_name": "Dusner" + }, + "dso": { + "english_name": "Desiya" + }, + "dsq": { + "english_name": "Tadaksahak" + }, + "dta": { + "english_name": "Daur" + }, + "dtb": { + "english_name": "Kadazan, Labuk-Kinabatangan" + }, + "dtd": { + "english_name": "Ditidaht" + }, + "dth": { + "english_name": "Adithinngithigh" + }, + "dti": { + "english_name": "Dogon, Ana Tinga" + }, + "dtk": { + "english_name": "Dogon, Tene Kan" + }, + "dtm": { + "english_name": "Dogon, Tomo Kan" + }, + "dto": { + "english_name": "Dogon, Tommo So" + }, + "dtp": { + "english_name": "Dusun, Central" + }, + "dtr": { + "english_name": "Lotud" + }, + "dts": { + "english_name": "Dogon, Toro So" + }, + "dtt": { + "english_name": "Dogon, Toro Tegu" + }, + "dtu": { + "english_name": "Dogon, Tebul Ure" + }, + "dty": { + "english_name": "Dotyali" + }, + "dua": { + "english_name": "Duala" + }, + "dub": { + "english_name": "Dubli" + }, + "duc": { + "english_name": "Duna" + }, + "dud": { + "english_name": "Hun-Saare" + }, + "due": { + "english_name": "Agta, Umiray Dumaget" + }, + "duf": { + "english_name": "Dumbea" + }, + "dug": { + "english_name": "Duruma" + }, + "duh": { + "english_name": "Dungra Bhil" + }, + "dui": { + "english_name": "Dumun" + }, + "duj": { + "english_name": "Dhuwal" + }, + "duk": { + "english_name": "Uyajitaya" + }, + "dul": { + "english_name": "Agta, Alabat Island" + }, + "dum": { + "english_name": "Dutch, Middle (ca. 1050-1350)" + }, + "dun": { + "english_name": "Dusun Deyah" + }, + "duo": { + "english_name": "Agta, Dupaninan" + }, + "dup": { + "english_name": "Duano" + }, + "duq": { + "english_name": "Dusun Malang" + }, + "dur": { + "english_name": "Dii" + }, + "dus": { + "english_name": "Dumi" + }, + "duu": { + "english_name": "Drung" + }, + "duv": { + "english_name": "Duvle" + }, + "duw": { + "english_name": "Dusun Witu" + }, + "dux": { + "english_name": "Duungooma" + }, + "duy": { + "english_name": "Agta, Dicamay" + }, + "duz": { + "english_name": "Duli" + }, + "dv": { + "english_name": "Dhivehi" + }, + "dva": { + "english_name": "Duau" + }, + "dwa": { + "english_name": "Diri" + }, + "dwr": { + "english_name": "Dawro" + }, + "dws": { + "english_name": "Dutton World Speedwords" + }, + "dww": { + "english_name": "Dawawa" + }, + "dya": { + "english_name": "Dyan" + }, + "dyb": { + "english_name": "Dyaberdyaber" + }, + "dyd": { + "english_name": "Dyugun" + }, + "dyg": { + "english_name": "Agta, Villa Viciosa" + }, + "dyi": { + "english_name": "Senoufo, Djimini" + }, + "dym": { + "english_name": "Dogon, Yanda Dom" + }, + "dyn": { + "english_name": "Dyangadi" + }, + "dyo": { + "english_name": "Jola-Fonyi" + }, + "dyu": { + "english_name": "Dyula" + }, + "dyy": { + "english_name": "Dyaabugay" + }, + "dz": { + "english_name": "Dzongkha" + }, + "dza": { + "english_name": "Tunzu" + }, + "dze": { + "english_name": "Djiwarli" + }, + "dzg": { + "english_name": "Dazaga" + }, + "dzl": { + "english_name": "Dzalakha" + }, + "dzn": { + "english_name": "Dzando" + }, + "eaa": { + "english_name": "Karenggapa" + }, + "ebg": { + "english_name": "Ebughu" + }, + "ebk": { + "english_name": "Bontok, Eastern" + }, + "ebo": { + "english_name": "Teke-Ebo" + }, + "ebr": { + "english_name": "Ebri\u00e9" + }, + "ebu": { + "english_name": "Embu" + }, + "ecr": { + "english_name": "Eteocretan" + }, + "ecs": { + "english_name": "Ecuadorian Sign Language" + }, + "ecy": { + "english_name": "Eteocypriot" + }, + "ee": { + "english_name": "Ewe" + }, + "eee": { + "english_name": "E" + }, + "efa": { + "english_name": "Efai" + }, + "efe": { + "english_name": "Efe" + }, + "efi": { + "english_name": "Efik" + }, + "ega": { + "english_name": "Ega" + }, + "egl": { + "english_name": "Emilian" + }, + "ego": { + "english_name": "Eggon" + }, + "egy": { + "english_name": "Egyptian (Ancient)" + }, + "ehu": { + "english_name": "Ehueun" + }, + "eip": { + "english_name": "Eipomek" + }, + "eit": { + "english_name": "Eitiep" + }, + "eiv": { + "english_name": "Askopan" + }, + "eja": { + "english_name": "Ejamat" + }, + "eka": { + "english_name": "Ekajuk" + }, + "ekc": { + "english_name": "Karnic, Eastern" + }, + "eke": { + "english_name": "Ekit" + }, + "ekg": { + "english_name": "Ekari" + }, + "eki": { + "english_name": "Eki" + }, + "ekk": { + "english_name": "Estonian, Standard" + }, + "ekl": { + "english_name": "Kol (Bangladesh)" + }, + "ekm": { + "english_name": "Elip" + }, + "eko": { + "english_name": "Koti" + }, + "ekp": { + "english_name": "Ekpeye" + }, + "ekr": { + "english_name": "Yace" + }, + "eky": { + "english_name": "Kayah, Eastern" + }, + "el": { + "english_name": "Greek, Modern (1453-)", + "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" + }, + "ele": { + "english_name": "Elepi" + }, + "elh": { + "english_name": "El Hugeirat" + }, + "eli": { + "english_name": "Nding" + }, + "elk": { + "english_name": "Elkei" + }, + "elm": { + "english_name": "Eleme" + }, + "elo": { + "english_name": "El Molo" + }, + "elu": { + "english_name": "Elu" + }, + "elx": { + "english_name": "Elamite" + }, + "ema": { + "english_name": "Emai-Iuleha-Ora" + }, + "emb": { + "english_name": "Embaloh" + }, + "eme": { + "english_name": "Emerillon" + }, + "emg": { + "english_name": "Meohang, Eastern" + }, + "emi": { + "english_name": "Mussau-Emira" + }, + "emk": { + "english_name": "Maninkakan, Eastern" + }, + "emm": { + "english_name": "Mamulique" + }, + "emn": { + "english_name": "Eman" + }, + "emp": { + "english_name": "Ember\u00e1, Northern" + }, + "ems": { + "english_name": "Yupik, Pacific Gulf" + }, + "emu": { + "english_name": "Muria, Eastern" + }, + "emw": { + "english_name": "Emplawas" + }, + "emx": { + "english_name": "Erromintxela" + }, + "emy": { + "english_name": "Mayan, Epigraphic" + }, + "en": { + "english_name": "English" + }, + "ena": { + "english_name": "Apali" + }, + "enb": { + "english_name": "Markweeta" + }, + "enc": { + "english_name": "En" + }, + "end": { + "english_name": "Ende" + }, + "enf": { + "english_name": "Enets, Forest" + }, + "enh": { + "english_name": "Enets, Tundra" + }, + "enm": { + "english_name": "English, Middle (1100-1500)" + }, + "enn": { + "english_name": "Engenni" + }, + "eno": { + "english_name": "Enggano" + }, + "enq": { + "english_name": "Enga" + }, + "enr": { + "english_name": "Emumu" + }, + "enu": { + "english_name": "Enu" + }, + "env": { + "english_name": "Enwan (Edu State)" + }, + "enw": { + "english_name": "Enwan (Akwa Ibom State)" + }, + "eo": { + "english_name": "Esperanto", + "name": "Esperanto" + }, + "eot": { + "english_name": "Beti (C\u00f4te d'Ivoire)" + }, + "epi": { + "english_name": "Epie" + }, + "era": { + "english_name": "Eravallan" + }, + "erg": { + "english_name": "Sie" + }, + "erh": { + "english_name": "Eruwa" + }, + "eri": { + "english_name": "Ogea" + }, + "erk": { + "english_name": "Efate, South" + }, + "ero": { + "english_name": "Horpa" + }, + "err": { + "english_name": "Erre" + }, + "ers": { + "english_name": "Ersu" + }, + "ert": { + "english_name": "Eritai" + }, + "erw": { + "english_name": "Erokwanas" + }, + "es": { + "english_name": "Spanish", + "name": "Espa\u00f1ol" + }, + "ese": { + "english_name": "Ese Ejja" + }, + "esh": { + "english_name": "Eshtehardi" + }, + "esi": { + "english_name": "Inupiatun, North Alaskan" + }, + "esk": { + "english_name": "Inupiatun, Northwest Alaska" + }, + "esl": { + "english_name": "Egypt Sign Language" + }, + "esm": { + "english_name": "Esuma" + }, + "esn": { + "english_name": "Salvadoran Sign Language" + }, + "eso": { + "english_name": "Estonian Sign Language" + }, + "esq": { + "english_name": "Esselen" + }, + "ess": { + "english_name": "Yupik, Central Siberian" + }, + "esu": { + "english_name": "Yupik, Central" + }, + "et": { + "english_name": "Estonian", + "name": "Eesti" + }, + "etb": { + "english_name": "Etebi" + }, + "etc": { + "english_name": "Etchemin" + }, + "eth": { + "english_name": "Ethiopian Sign Language" + }, + "etn": { + "english_name": "Eton (Vanuatu)" + }, + "eto": { + "english_name": "Eton (Cameroon)" + }, + "etr": { + "english_name": "Edolo" + }, + "ets": { + "english_name": "Yekhee" + }, + "ett": { + "english_name": "Etruscan" + }, + "etu": { + "english_name": "Ejagham" + }, + "etx": { + "english_name": "Eten" + }, + "etz": { + "english_name": "Semimi" + }, + "eu": { + "english_name": "Basque", + "name": "Euskara" + }, + "eve": { + "english_name": "Even" + }, + "evh": { + "english_name": "Uvbie" + }, + "evn": { + "english_name": "Evenki" + }, + "ewo": { + "english_name": "Ewondo" + }, + "ext": { + "english_name": "Extremaduran" + }, + "eya": { + "english_name": "Eyak" + }, + "eyo": { + "english_name": "Keiyo" + }, + "eza": { + "english_name": "Ezaa" + }, + "eze": { + "english_name": "Uzekwe" + }, + "fa": { + "english_name": "Persian", + "name": "\u0641\u0627\u0631\u0633\u06cc" + }, + "faa": { + "english_name": "Fasu" + }, + "fab": { + "english_name": "Fa d'Ambu" + }, + "fad": { + "english_name": "Wagi" + }, + "faf": { + "english_name": "Fagani" + }, + "fag": { + "english_name": "Finongan" + }, + "fah": { + "english_name": "Fali, Baissa" + }, + "fai": { + "english_name": "Faiwol" + }, + "faj": { + "english_name": "Faita" + }, + "fak": { + "english_name": "Fang (Cameroon)" + }, + "fal": { + "english_name": "Fali, South" + }, + "fam": { + "english_name": "Fam" + }, + "fan": { + "english_name": "Fang (Equatorial Guinea)" + }, + "fap": { + "english_name": "Palor" + }, + "far": { + "english_name": "Fataleka" + }, + "fat": { + "english_name": "Fanti" + }, + "fau": { + "english_name": "Fayu" + }, + "fax": { + "english_name": "Fala" + }, + "fay": { + "english_name": "Fars, Southwestern" + }, + "faz": { + "english_name": "Fars, Northwestern" + }, + "fbl": { + "english_name": "Bikol, West Albay" + }, + "fcs": { + "english_name": "Quebec Sign Language" + }, + "fer": { + "english_name": "Feroge" + }, + "ff": { + "english_name": "Fulah" + }, + "ffi": { + "english_name": "Foia Foia" + }, + "ffm": { + "english_name": "Fulfulde, Maasina" + }, + "fgr": { + "english_name": "Fongoro" + }, + "fi": { + "english_name": "Finnish", + "name": "suomi" + }, + "fia": { + "english_name": "Nobiin" + }, + "fie": { + "english_name": "Fyer" + }, + "fil": { + "english_name": "Filipino" + }, + "fip": { + "english_name": "Fipa" + }, + "fir": { + "english_name": "Firan" + }, + "fit": { + "english_name": "Finnish, Tornedalen" + }, + "fiw": { + "english_name": "Fiwaga" + }, + "fj": { + "english_name": "Fijian" + }, + "fkk": { + "english_name": "Kirya-Konz\u0259l" + }, + "fkv": { + "english_name": "Finnish, Kven" + }, + "fla": { + "english_name": "Kalispel-Pend d'Oreille" + }, + "flh": { + "english_name": "Foau" + }, + "fli": { + "english_name": "Fali" + }, + "fll": { + "english_name": "Fali, North" + }, + "fln": { + "english_name": "Flinders Island" + }, + "flr": { + "english_name": "Fuliiru" + }, + "fly": { + "english_name": "Tsotsitaal" + }, + "fmp": { + "english_name": "Fe'fe'" + }, + "fmu": { + "english_name": "Muria, Far Western" + }, + "fng": { + "english_name": "Fanagalo" + }, + "fni": { + "english_name": "Fania" + }, + "fo": { + "english_name": "Faroese" + }, + "fod": { + "english_name": "Foodo" + }, + "foi": { + "english_name": "Foi" + }, + "fom": { + "english_name": "Foma" + }, + "fon": { + "english_name": "Fon" + }, + "for": { + "english_name": "Fore" + }, + "fos": { + "english_name": "Siraya" + }, + "fpe": { + "english_name": "Creole English, Fernando Po" + }, + "fqs": { + "english_name": "Fas" + }, + "fr": { + "english_name": "French", + "name": "fran\u00e7ais" + }, + "frc": { + "english_name": "French, Cajun" + }, + "frd": { + "english_name": "Fordata" + }, + "frk": { + "english_name": "Frankish" + }, + "frm": { + "english_name": "French, Middle (ca. 1400-1600)" + }, + "fro": { + "english_name": "French, Old (842-ca. 1400)" + }, + "frp": { + "english_name": "Arpitan" + }, + "frq": { + "english_name": "Forak" + }, + "frr": { + "english_name": "Frisian, Northern" + }, + "frs": { + "english_name": "Frisian, Eastern" + }, + "frt": { + "english_name": "Fortsenal" + }, + "fse": { + "english_name": "Finnish Sign Language" + }, + "fsl": { + "english_name": "French Sign Language" + }, + "fss": { + "english_name": "Finland-Swedish Sign Language" + }, + "fub": { + "english_name": "Fulfulde, Adamawa" + }, + "fuc": { + "english_name": "Pulaar" + }, + "fud": { + "english_name": "Futuna, East" + }, + "fue": { + "english_name": "Fulfulde, Borgu" + }, + "fuf": { + "english_name": "Pular" + }, + "fuh": { + "english_name": "Fulfulde, Western Niger" + }, + "fui": { + "english_name": "Fulfulde, Bagirmi" + }, + "fuj": { + "english_name": "Ko" + }, + "fum": { + "english_name": "Fum" + }, + "fun": { + "english_name": "Fulni\u00f4" + }, + "fuq": { + "english_name": "Fulfulde, Central-Eastern Niger" + }, + "fur": { + "english_name": "Friulian" + }, + "fut": { + "english_name": "Futuna-Aniwa" + }, + "fuu": { + "english_name": "Furu" + }, + "fuv": { + "english_name": "Fulfulde, Nigerian" + }, + "fuy": { + "english_name": "Fuyug" + }, + "fvr": { + "english_name": "Fur" + }, + "fwa": { + "english_name": "Fw\u00e2i" + }, + "fwe": { + "english_name": "Fwe" + }, + "fy": { + "english_name": "Frisian, Western" + }, + "ga": { + "english_name": "Irish", + "name": "Gaeilge" + }, + "gaa": { + "english_name": "Ga" + }, + "gab": { + "english_name": "Gabri" + }, + "gac": { + "english_name": "Great Andamanese, Mixed" + }, + "gad": { + "english_name": "Gaddang" + }, + "gae": { + "english_name": "Guarequena" + }, + "gaf": { + "english_name": "Gende" + }, + "gag": { + "english_name": "Gagauz" + }, + "gah": { + "english_name": "Alekano" + }, + "gai": { + "english_name": "Borei" + }, + "gaj": { + "english_name": "Gadsup" + }, + "gak": { + "english_name": "Gamkonora" + }, + "gal": { + "english_name": "Galolen" + }, + "gam": { + "english_name": "Kandawo" + }, + "gan": { + "english_name": "Chinese, Gan" + }, + "gao": { + "english_name": "Gants" + }, + "gap": { + "english_name": "Gal" + }, + "gaq": { + "english_name": "Gata'" + }, + "gar": { + "english_name": "Galeya" + }, + "gas": { + "english_name": "Garasia, Adiwasi" + }, + "gat": { + "english_name": "Kenati" + }, + "gau": { + "english_name": "Gadaba, Mudhili" + }, + "gaw": { + "english_name": "Nobonob" + }, + "gax": { + "english_name": "Oromo, Borana-Arsi-Guji" + }, + "gay": { + "english_name": "Gayo" + }, + "gaz": { + "english_name": "Oromo, West Central" + }, + "gba": { + "english_name": "Gbaya (Central African Republic)" + }, + "gbb": { + "english_name": "Kaytetye" + }, + "gbd": { + "english_name": "Karadjeri" + }, + "gbe": { + "english_name": "Niksek" + }, + "gbf": { + "english_name": "Gaikundi" + }, + "gbg": { + "english_name": "Gbanziri" + }, + "gbh": { + "english_name": "Gbe, Defi" + }, + "gbi": { + "english_name": "Galela" + }, + "gbj": { + "english_name": "Gadaba, Bodo" + }, + "gbk": { + "english_name": "Gaddi" + }, + "gbl": { + "english_name": "Gamit" + }, + "gbm": { + "english_name": "Garhwali" + }, + "gbn": { + "english_name": "Mo'da" + }, + "gbo": { + "english_name": "Grebo, Northern" + }, + "gbp": { + "english_name": "Gbaya-Bossangoa" + }, + "gbq": { + "english_name": "Gbaya-Bozoum" + }, + "gbr": { + "english_name": "Gbagyi" + }, + "gbs": { + "english_name": "Gbe, Gbesi" + }, + "gbu": { + "english_name": "Gagadu" + }, + "gbv": { + "english_name": "Gbanu" + }, + "gbw": { + "english_name": "Gabi-Gabi" + }, + "gbx": { + "english_name": "Gbe, Eastern Xwla" + }, + "gby": { + "english_name": "Gbari" + }, + "gbz": { + "english_name": "Dari, Zoroastrian" + }, + "gcc": { + "english_name": "Mali" + }, + "gcd": { + "english_name": "Ganggalida" + }, + "gce": { + "english_name": "Galice" + }, + "gcf": { + "english_name": "Creole French, Guadeloupean" + }, + "gcl": { + "english_name": "Creole English, Grenadian" + }, + "gcn": { + "english_name": "Gaina" + }, + "gcr": { + "english_name": "Creole French, Guianese" + }, + "gct": { + "english_name": "German, Colonia Tovar" + }, + "gd": { + "english_name": "Gaelic, Scottish" + }, + "gda": { + "english_name": "Lohar, Gade" + }, + "gdb": { + "english_name": "Gadaba, Pottangi Ollar" + }, + "gdc": { + "english_name": "Gugu Badhun" + }, + "gdd": { + "english_name": "Gedaged" + }, + "gde": { + "english_name": "Gude" + }, + "gdf": { + "english_name": "Guduf-Gava" + }, + "gdg": { + "english_name": "Ga'dang" + }, + "gdh": { + "english_name": "Gadjerawang" + }, + "gdi": { + "english_name": "Gundi" + }, + "gdj": { + "english_name": "Gurdjar" + }, + "gdk": { + "english_name": "Gadang" + }, + "gdl": { + "english_name": "Dirasha" + }, + "gdm": { + "english_name": "Laal" + }, + "gdn": { + "english_name": "Umanakaina" + }, + "gdo": { + "english_name": "Ghodoberi" + }, + "gdq": { + "english_name": "Mehri" + }, + "gdr": { + "english_name": "Wipi" + }, + "gds": { + "english_name": "Ghandruk Sign Language" + }, + "gdt": { + "english_name": "Kungardutyi" + }, + "gdu": { + "english_name": "Gudu" + }, + "gdx": { + "english_name": "Godwari" + }, + "gea": { + "english_name": "Geruma" + }, + "geb": { + "english_name": "Kire" + }, + "gec": { + "english_name": "Grebo, Gboloo" + }, + "ged": { + "english_name": "Gade" + }, + "geg": { + "english_name": "Gengle" + }, + "geh": { + "english_name": "German, Hutterite" + }, + "gei": { + "english_name": "Gebe" + }, + "gej": { + "english_name": "Gen" + }, + "gek": { + "english_name": "Yiwom" + }, + "gel": { + "english_name": "ut-Ma'in" + }, + "geq": { + "english_name": "Geme" + }, + "ges": { + "english_name": "Geser-Gorom" + }, + "gew": { + "english_name": "Gera" + }, + "gex": { + "english_name": "Garre" + }, + "gey": { + "english_name": "Enya" + }, + "gez": { + "english_name": "Geez", + "name": "\u130d\u12d5\u12dd\u129b" + }, + "gfk": { + "english_name": "Patpatar" + }, + "gft": { + "english_name": "Gafat" + }, + "gga": { + "english_name": "Gao" + }, + "ggb": { + "english_name": "Gbii" + }, + "ggd": { + "english_name": "Gugadj" + }, + "gge": { + "english_name": "Guragone" + }, + "ggg": { + "english_name": "Gurgula" + }, + "ggk": { + "english_name": "Kungarakany" + }, + "ggl": { + "english_name": "Ganglau" + }, + "ggn": { + "english_name": "Gurung, Eastern" + }, + "ggo": { + "english_name": "Gondi, Southern" + }, + "ggt": { + "english_name": "Gitua" + }, + "ggu": { + "english_name": "Gagu" + }, + "ggw": { + "english_name": "Gogodala" + }, + "gha": { + "english_name": "Ghadam\u00e8s" + }, + "ghc": { + "english_name": "Gaelic, Hiberno-Scottish" + }, + "ghe": { + "english_name": "Ghale, Southern" + }, + "ghh": { + "english_name": "Ghale, Northern" + }, + "ghk": { + "english_name": "Karen, Geko" + }, + "ghl": { + "english_name": "Ghulfan" + }, + "ghn": { + "english_name": "Ghanongga" + }, + "gho": { + "english_name": "Ghomara" + }, + "ghr": { + "english_name": "Ghera" + }, + "ghs": { + "english_name": "Guhu-Samane" + }, + "ght": { + "english_name": "Kuke" + }, + "gia": { + "english_name": "Kitja" + }, + "gib": { + "english_name": "Gibanawa" + }, + "gic": { + "english_name": "Gail" + }, + "gid": { + "english_name": "Gidar" + }, + "gig": { + "english_name": "Goaria" + }, + "gih": { + "english_name": "Githabul" + }, + "gil": { + "english_name": "Gilbertese" + }, + "gim": { + "english_name": "Gimi (Eastern Highlands)" + }, + "gin": { + "english_name": "Hinukh" + }, + "gip": { + "english_name": "Gimi (West New Britain)" + }, + "giq": { + "english_name": "Gelao, Green" + }, + "gir": { + "english_name": "Gelao, Red" + }, + "gis": { + "english_name": "Giziga, North" + }, + "git": { + "english_name": "Gitxsan" + }, + "giu": { + "english_name": "Mulao" + }, + "giw": { + "english_name": "Gelao, White" + }, + "gix": { + "english_name": "Gilima" + }, + "giy": { + "english_name": "Giyug" + }, + "giz": { + "english_name": "Giziga, South" + }, + "gji": { + "english_name": "Geji" + }, + "gjk": { + "english_name": "Koli, Kachi" + }, + "gjm": { + "english_name": "Gunditjmara" + }, + "gjn": { + "english_name": "Gonja" + }, + "gju": { + "english_name": "Gujari" + }, + "gka": { + "english_name": "Guya" + }, + "gke": { + "english_name": "Ndai" + }, + "gkn": { + "english_name": "Gokana" + }, + "gko": { + "english_name": "Kok-Nar" + }, + "gkp": { + "english_name": "Kpelle, Guinea" + }, + "gl": { + "english_name": "Galician", + "name": "Galego" + }, + "glc": { + "english_name": "Bon Gula" + }, + "gld": { + "english_name": "Nanai" + }, + "glh": { + "english_name": "Pashayi, Northwest" + }, + "gli": { + "english_name": "Guliguli" + }, + "glj": { + "english_name": "Gula Iro" + }, + "glk": { + "english_name": "Gilaki" + }, + "gll": { + "english_name": "Garlali" + }, + "glo": { + "english_name": "Galambu" + }, + "glr": { + "english_name": "Glaro-Twabo" + }, + "glu": { + "english_name": "Gula (Chad)" + }, + "glw": { + "english_name": "Glavda" + }, + "gly": { + "english_name": "Gule" + }, + "gma": { + "english_name": "Gambera" + }, + "gmb": { + "english_name": "Gula'alaa" + }, + "gmd": { + "english_name": "M\u00e1ghd\u00ec" + }, + "gmh": { + "english_name": "German, Middle High (ca. 1050-1500)" + }, + "gml": { + "english_name": "German, Middle Low" + }, + "gmm": { + "english_name": "Gbaya-Mbodomo" + }, + "gmn": { + "english_name": "Gimnime" + }, + "gmu": { + "english_name": "Gumalu" + }, + "gmv": { + "english_name": "Gamo" + }, + "gmx": { + "english_name": "Magoma" + }, + "gmy": { + "english_name": "Greek, Mycenaean" + }, + "gmz": { + "english_name": "Mgbolizhia" + }, + "gn": { + "english_name": "Guarani" + }, + "gna": { + "english_name": "Kaansa" + }, + "gnb": { + "english_name": "Gangte" + }, + "gnc": { + "english_name": "Guanche" + }, + "gnd": { + "english_name": "Zulgo-Gemzek" + }, + "gne": { + "english_name": "Ganang" + }, + "gng": { + "english_name": "Ngangam" + }, + "gnh": { + "english_name": "Lere" + }, + "gni": { + "english_name": "Gooniyandi" + }, + "gnk": { + "english_name": "//Gana" + }, + "gnl": { + "english_name": "Gangulu" + }, + "gnm": { + "english_name": "Ginuman" + }, + "gnn": { + "english_name": "Gumatj" + }, + "gno": { + "english_name": "Gondi, Northern" + }, + "gnq": { + "english_name": "Gana" + }, + "gnr": { + "english_name": "Gureng Gureng" + }, + "gnt": { + "english_name": "Guntai" + }, + "gnu": { + "english_name": "Gnau" + }, + "gnw": { + "english_name": "Guaran\u00ed, Western Bolivian" + }, + "gnz": { + "english_name": "Ganzi" + }, + "goa": { + "english_name": "Guro" + }, + "gob": { + "english_name": "Playero" + }, + "goc": { + "english_name": "Gorakor" + }, + "god": { + "english_name": "Godi\u00e9" + }, + "goe": { + "english_name": "Gongduk" + }, + "gof": { + "english_name": "Gofa" + }, + "gog": { + "english_name": "Gogo" + }, + "goh": { + "english_name": "German, Old High (ca. 750-1050)" + }, + "goi": { + "english_name": "Gobasi" + }, + "goj": { + "english_name": "Gowlan" + }, + "gok": { + "english_name": "Gowli" + }, + "gol": { + "english_name": "Gola" + }, + "gom": { + "english_name": "Konkani, Goan" + }, + "gon": { + "english_name": "Gondi" + }, + "goo": { + "english_name": "Gone Dau" + }, + "gop": { + "english_name": "Yeretuar" + }, + "goq": { + "english_name": "Gorap" + }, + "gor": { + "english_name": "Gorontalo" + }, + "gos": { + "english_name": "Gronings" + }, + "got": { + "english_name": "Gothic" + }, + "gou": { + "english_name": "Gavar" + }, + "gow": { + "english_name": "Gorowa" + }, + "gox": { + "english_name": "Gobu" + }, + "goy": { + "english_name": "Goundo" + }, + "goz": { + "english_name": "Gozarkhani" + }, + "gpa": { + "english_name": "Gupa-Abawa" + }, + "gpe": { + "english_name": "Pidgin English, Ghanaian" + }, + "gpn": { + "english_name": "Taiap" + }, + "gqa": { + "english_name": "Ga'anda" + }, + "gqi": { + "english_name": "Guiqiong" + }, + "gqn": { + "english_name": "Guana (Brazil)" + }, + "gqr": { + "english_name": "Gor" + }, + "gqu": { + "english_name": "Qau" + }, + "gra": { + "english_name": "Garasia, Rajput" + }, + "grb": { + "english_name": "Grebo" + }, + "grc": { + "english_name": "Greek, Ancient (to 1453)" + }, + "grd": { + "english_name": "Guruntum-Mbaaru" + }, + "grg": { + "english_name": "Madi" + }, + "grh": { + "english_name": "Gbiri-Niragu" + }, + "gri": { + "english_name": "Ghari" + }, + "grj": { + "english_name": "Grebo, Southern" + }, + "grm": { + "english_name": "Kota Marudu Talantang" + }, + "gro": { + "english_name": "Groma" + }, + "grq": { + "english_name": "Gorovu" + }, + "grr": { + "english_name": "Taznatit" + }, + "grs": { + "english_name": "Gresi" + }, + "grt": { + "english_name": "Garo" + }, + "gru": { + "english_name": "Kistane" + }, + "grv": { + "english_name": "Grebo, Central" + }, + "grw": { + "english_name": "Gweda" + }, + "grx": { + "english_name": "Guriaso" + }, + "gry": { + "english_name": "Grebo, Barclayville" + }, + "grz": { + "english_name": "Guramalum" + }, + "gse": { + "english_name": "Ghanaian Sign Language" + }, + "gsg": { + "english_name": "German Sign Language" + }, + "gsl": { + "english_name": "Gusilay" + }, + "gsm": { + "english_name": "Guatemalan Sign Language" + }, + "gsn": { + "english_name": "Gusan" + }, + "gso": { + "english_name": "Gbaya, Southwest" + }, + "gsp": { + "english_name": "Wasembo" + }, + "gss": { + "english_name": "Greek Sign Language" + }, + "gsw": { + "english_name": "German, Swiss" + }, + "gta": { + "english_name": "Guat\u00f3" + }, + "gtu": { + "english_name": "Aghu-Tharnggala" + }, + "gu": { + "english_name": "Gujarati", + "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0" + }, + "gua": { + "english_name": "Shiki" + }, + "gub": { + "english_name": "Guajaj\u00e1ra" + }, + "guc": { + "english_name": "Wayuu" + }, + "gud": { + "english_name": "Dida, Yocobou\u00e9" + }, + "gue": { + "english_name": "Gurinji" + }, + "guf": { + "english_name": "Gupapuyngu" + }, + "gug": { + "english_name": "Guaran\u00ed, Paraguayan" + }, + "guh": { + "english_name": "Guahibo" + }, + "gui": { + "english_name": "Guaran\u00ed, Eastern Bolivian" + }, + "guk": { + "english_name": "Gumuz" + }, + "gul": { + "english_name": "Creole English, Sea Island" + }, + "gum": { + "english_name": "Guambiano" + }, + "gun": { + "english_name": "Guaran\u00ed, Mby\u00e1" + }, + "guo": { + "english_name": "Guayabero" + }, + "gup": { + "english_name": "Gunwinggu" + }, + "guq": { + "english_name": "Ach\u00e9" + }, + "gur": { + "english_name": "Farefare" + }, + "gus": { + "english_name": "Guinean Sign Language" + }, + "gut": { + "english_name": "Mal\u00e9ku Ja\u00edka" + }, + "guu": { + "english_name": "Yanomam\u00f6" + }, + "guv": { + "english_name": "Gey" + }, + "guw": { + "english_name": "Gun" + }, + "gux": { + "english_name": "Gourmanch\u00e9ma" + }, + "guz": { + "english_name": "Gusii" + }, + "gv": { + "english_name": "Manx" + }, + "gva": { + "english_name": "Guana (Paraguay)" + }, + "gvc": { + "english_name": "Guanano" + }, + "gve": { + "english_name": "Duwet" + }, + "gvf": { + "english_name": "Golin" + }, + "gvj": { + "english_name": "Guaj\u00e1" + }, + "gvl": { + "english_name": "Gulay" + }, + "gvm": { + "english_name": "Gurmana" + }, + "gvn": { + "english_name": "Kuku-Yalanji" + }, + "gvo": { + "english_name": "Gavi\u00e3o Do Jiparan\u00e1" + }, + "gvp": { + "english_name": "Gavi\u00e3o, Par\u00e1" + }, + "gvr": { + "english_name": "Gurung, Western" + }, + "gvs": { + "english_name": "Gumawana" + }, + "gvy": { + "english_name": "Guyani" + }, + "gwa": { + "english_name": "Mbato" + }, + "gwb": { + "english_name": "Gwa" + }, + "gwc": { + "english_name": "Kalami" + }, + "gwd": { + "english_name": "Gawwada" + }, + "gwe": { + "english_name": "Gweno" + }, + "gwf": { + "english_name": "Gowro" + }, + "gwg": { + "english_name": "Moo" + }, + "gwi": { + "english_name": "Gwich\u02bcin" + }, + "gwj": { + "english_name": "/Gwi" + }, + "gwm": { + "english_name": "Awngthim" + }, + "gwn": { + "english_name": "Gwandara" + }, + "gwr": { + "english_name": "Gwere" + }, + "gwt": { + "english_name": "Gawar-Bati" + }, + "gwu": { + "english_name": "Guwamu" + }, + "gww": { + "english_name": "Kwini" + }, + "gwx": { + "english_name": "Gua" + }, + "gxx": { + "english_name": "W\u00e8 Southern" + }, + "gya": { + "english_name": "Gbaya, Northwest" + }, + "gyb": { + "english_name": "Garus" + }, + "gyd": { + "english_name": "Kayardild" + }, + "gye": { + "english_name": "Gyem" + }, + "gyf": { + "english_name": "Gungabula" + }, + "gyg": { + "english_name": "Gbayi" + }, + "gyi": { + "english_name": "Gyele" + }, + "gyl": { + "english_name": "Gayil" + }, + "gym": { + "english_name": "Ng\u00e4bere" + }, + "gyn": { + "english_name": "Creole English, Guyanese" + }, + "gyr": { + "english_name": "Guarayu" + }, + "gyy": { + "english_name": "Gunya" + }, + "gza": { + "english_name": "Ganza" + }, + "gzi": { + "english_name": "Gazi" + }, + "gzn": { + "english_name": "Gane" + }, + "ha": { + "english_name": "Hausa" + }, + "haa": { + "english_name": "Han" + }, + "hab": { + "english_name": "Hanoi Sign Language" + }, + "hac": { + "english_name": "Gurani" + }, + "had": { + "english_name": "Hatam" + }, + "hae": { + "english_name": "Oromo, Eastern" + }, + "haf": { + "english_name": "Haiphong Sign Language" + }, + "hag": { + "english_name": "Hanga" + }, + "hah": { + "english_name": "Hahon" + }, + "hai": { + "english_name": "Haida" + }, + "haj": { + "english_name": "Hajong" + }, + "hak": { + "english_name": "Chinese, Hakka" + }, + "hal": { + "english_name": "Halang" + }, + "ham": { + "english_name": "Hewa" + }, + "han": { + "english_name": "Hangaza" + }, + "hao": { + "english_name": "Hak\u00f6" + }, + "hap": { + "english_name": "Hupla" + }, + "haq": { + "english_name": "Ha" + }, + "har": { + "english_name": "Harari" + }, + "has": { + "english_name": "Haisla" + }, + "hav": { + "english_name": "Havu" + }, + "haw": { + "english_name": "Hawaiian" + }, + "hax": { + "english_name": "Haida, Southern" + }, + "hay": { + "english_name": "Haya" + }, + "haz": { + "english_name": "Hazaragi" + }, + "hba": { + "english_name": "Hamba" + }, + "hbb": { + "english_name": "Huba" + }, + "hbn": { + "english_name": "Heiban" + }, + "hbo": { + "english_name": "Hebrew, Ancient" + }, + "hbs": { + "english_name": "Serbo-Croatian" + }, + "hbu": { + "english_name": "Habu" + }, + "hca": { + "english_name": "Creole Hindi, Andaman" + }, + "hch": { + "english_name": "Huichol" + }, + "hdn": { + "english_name": "Haida, Northern" + }, + "hds": { + "english_name": "Honduras Sign Language" + }, + "hdy": { + "english_name": "Hadiyya" + }, + "he": { + "english_name": "Hebrew", + "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" + }, + "hea": { + "english_name": "Miao, Northern Qiandong" + }, + "hed": { + "english_name": "Herd\u00e9" + }, + "heg": { + "english_name": "Helong" + }, + "heh": { + "english_name": "Hehe" + }, + "hei": { + "english_name": "Heiltsuk" + }, + "hem": { + "english_name": "Hemba" + }, + "hgm": { + "english_name": "Hai//om" + }, + "hgw": { + "english_name": "Haigwai" + }, + "hhi": { + "english_name": "Hoia Hoia" + }, + "hhr": { + "english_name": "Kerak" + }, + "hhy": { + "english_name": "Hoyahoya" + }, + "hi": { + "english_name": "Hindi", + "name": "\u0939\u093f\u0902\u0926\u0940" + }, + "hia": { + "english_name": "Lamang" + }, + "hib": { + "english_name": "Hibito" + }, + "hid": { + "english_name": "Hidatsa" + }, + "hif": { + "english_name": "Hindi, Fiji" + }, + "hig": { + "english_name": "Kamwe" + }, + "hih": { + "english_name": "Pamosu" + }, + "hii": { + "english_name": "Hinduri" + }, + "hij": { + "english_name": "Hijuk" + }, + "hik": { + "english_name": "Seit-Kaitetu" + }, + "hil": { + "english_name": "Hiligaynon" + }, + "hio": { + "english_name": "Tsoa" + }, + "hir": { + "english_name": "Himarim\u00e3" + }, + "hit": { + "english_name": "Hittite" + }, + "hiw": { + "english_name": "Hiw" + }, + "hix": { + "english_name": "Hixkary\u00e1na" + }, + "hji": { + "english_name": "Haji" + }, + "hka": { + "english_name": "Kahe" + }, + "hke": { + "english_name": "Hunde" + }, + "hkk": { + "english_name": "Hunjara-Kaina Ke" + }, + "hks": { + "english_name": "Hong Kong Sign Language" + }, + "hla": { + "english_name": "Halia" + }, + "hlb": { + "english_name": "Halbi" + }, + "hld": { + "english_name": "Halang Doan" + }, + "hle": { + "english_name": "Hlersu" + }, + "hlt": { + "english_name": "Chin, Matu" + }, + "hlu": { + "english_name": "Luwian, Hieroglyphic" + }, + "hma": { + "english_name": "Hmong, Southern Mashan" + }, + "hmb": { + "english_name": "Songhay, Humburi Senni" + }, + "hmc": { + "english_name": "Hmong, Central Huishui" + }, + "hmd": { + "english_name": "Miao, Large Flowery" + }, + "hme": { + "english_name": "Hmong, Eastern Huishui" + }, + "hmf": { + "english_name": "Hmong Don" + }, + "hmg": { + "english_name": "Hmong, Southwestern Guiyang" + }, + "hmh": { + "english_name": "Hmong, Southwestern Huishui" + }, + "hmi": { + "english_name": "Hmong, Northern Huishui" + }, + "hmj": { + "english_name": "Ge" + }, + "hmk": { + "english_name": "Maek" + }, + "hml": { + "english_name": "Hmong, Luopohe" + }, + "hmm": { + "english_name": "Hmong, Central Mashan" + }, + "hmn": { + "english_name": "Hmong" + }, + "hmp": { + "english_name": "Hmong, Northern Mashan" + }, + "hmq": { + "english_name": "Miao, Eastern Qiandong" + }, + "hmr": { + "english_name": "Hmar" + }, + "hms": { + "english_name": "Miao, Southern Qiandong" + }, + "hmt": { + "english_name": "Hamtai" + }, + "hmu": { + "english_name": "Hamap" + }, + "hmv": { + "english_name": "Hmong D\u00f4" + }, + "hmw": { + "english_name": "Hmong, Western Mashan" + }, + "hmy": { + "english_name": "Hmong, Southern Guiyang" + }, + "hmz": { + "english_name": "Hmong Shua" + }, + "hna": { + "english_name": "Mina (Cameroon)" + }, + "hnd": { + "english_name": "Hindko, Southern" + }, + "hne": { + "english_name": "Chhattisgarhi" + }, + "hnh": { + "english_name": "//Ani" + }, + "hni": { + "english_name": "Hani" + }, + "hnj": { + "english_name": "Hmong Njua" + }, + "hnn": { + "english_name": "Hanunoo" + }, + "hno": { + "english_name": "Hindko, Northern" + }, + "hns": { + "english_name": "Hindustani, Caribbean" + }, + "hnu": { + "english_name": "Hung" + }, + "ho": { + "english_name": "Hiri Motu" + }, + "hoa": { + "english_name": "Hoava" + }, + "hob": { + "english_name": "Mari (Madang Province)" + }, + "hoc": { + "english_name": "Ho" + }, + "hod": { + "english_name": "Holma" + }, + "hoe": { + "english_name": "Horom" + }, + "hoh": { + "english_name": "Hoby\u00f3t" + }, + "hoi": { + "english_name": "Holikachuk" + }, + "hoj": { + "english_name": "Hadothi" + }, + "hol": { + "english_name": "Holu" + }, + "hom": { + "english_name": "Homa" + }, + "hoo": { + "english_name": "Holoholo" + }, + "hop": { + "english_name": "Hopi" + }, + "hor": { + "english_name": "Horo" + }, + "hos": { + "english_name": "Ho Chi Minh City Sign Language" + }, + "hot": { + "english_name": "Hote" + }, + "hov": { + "english_name": "Hovongan" + }, + "how": { + "english_name": "Honi" + }, + "hoy": { + "english_name": "Holiya" + }, + "hoz": { + "english_name": "Hozo" + }, + "hpo": { + "english_name": "Hpon" + }, + "hps": { + "english_name": "Hawai'i Pidgin Sign Language" + }, + "hr": { + "english_name": "Croatian", + "name": "hrvatski" + }, + "hra": { + "english_name": "Hrangkhol" + }, + "hrc": { + "english_name": "Niwer Mil" + }, + "hre": { + "english_name": "Hre" + }, + "hrk": { + "english_name": "Haruku" + }, + "hrm": { + "english_name": "Miao, Horned" + }, + "hro": { + "english_name": "Haroi" + }, + "hrp": { + "english_name": "Nhirrpi" + }, + "hrt": { + "english_name": "H\u00e9rtevin" + }, + "hru": { + "english_name": "Hruso" + }, + "hrw": { + "english_name": "Warwar Feni" + }, + "hrx": { + "english_name": "Hunsrik" + }, + "hrz": { + "english_name": "Harzani" + }, + "hsb": { + "english_name": "Sorbian, Upper" + }, + "hsh": { + "english_name": "Hungarian Sign Language" + }, + "hsl": { + "english_name": "Hausa Sign Language" + }, + "hsn": { + "english_name": "Chinese, Xiang" + }, + "hss": { + "english_name": "Harsusi" + }, + "ht": { + "english_name": "Haitian" + }, + "hti": { + "english_name": "Hoti" + }, + "hto": { + "english_name": "Huitoto, Minica" + }, + "hts": { + "english_name": "Hadza" + }, + "htu": { + "english_name": "Hitu" + }, + "htx": { + "english_name": "Hittite, Middle" + }, + "hu": { + "english_name": "Hungarian", + "name": "magyar" + }, + "hub": { + "english_name": "Huambisa" + }, + "huc": { + "english_name": "=/Hua" + }, + "hud": { + "english_name": "Huaulu" + }, + "hue": { + "english_name": "Huave, San Francisco Del Mar" + }, + "huf": { + "english_name": "Humene" + }, + "hug": { + "english_name": "Huachipaeri" + }, + "huh": { + "english_name": "Huilliche" + }, + "hui": { + "english_name": "Huli" + }, + "huj": { + "english_name": "Hmong, Northern Guiyang" + }, + "huk": { + "english_name": "Hulung" + }, + "hul": { + "english_name": "Hula" + }, + "hum": { + "english_name": "Hungana" + }, + "huo": { + "english_name": "Hu" + }, + "hup": { + "english_name": "Hupa" + }, + "huq": { + "english_name": "Tsat" + }, + "hur": { + "english_name": "Halkomelem" + }, + "hus": { + "english_name": "Huastec" + }, + "hut": { + "english_name": "Humla" + }, + "huu": { + "english_name": "Huitoto, Murui" + }, + "huv": { + "english_name": "Huave, San Mateo Del Mar" + }, + "huw": { + "english_name": "Hukumina" + }, + "hux": { + "english_name": "Huitoto, N\u00fcpode" + }, + "huy": { + "english_name": "Hulaul\u00e1" + }, + "huz": { + "english_name": "Hunzib" + }, + "hvc": { + "english_name": "Haitian Vodoun Culture Language" + }, + "hve": { + "english_name": "Huave, San Dionisio Del Mar" + }, + "hvk": { + "english_name": "Haveke" + }, + "hvn": { + "english_name": "Sabu" + }, + "hvv": { + "english_name": "Huave, Santa Mar\u00eda Del Mar" + }, + "hwa": { + "english_name": "Wan\u00e9" + }, + "hwc": { + "english_name": "Creole English, Hawai'i" + }, + "hwo": { + "english_name": "Hwana" + }, + "hy": { + "english_name": "Armenian" + }, + "hya": { + "english_name": "Hya" + }, + "hz": { + "english_name": "Herero" + }, + "ia": { + "english_name": "Interlingua (International Auxiliary Language Association)" + }, + "iai": { + "english_name": "Iaai" + }, + "ian": { + "english_name": "Iatmul" + }, + "iap": { + "english_name": "Iapama" + }, + "iar": { + "english_name": "Purari" + }, + "iba": { + "english_name": "Iban" + }, + "ibb": { + "english_name": "Ibibio" + }, + "ibd": { + "english_name": "Iwaidja" + }, + "ibe": { + "english_name": "Akpes" + }, + "ibg": { + "english_name": "Ibanag" + }, + "ibl": { + "english_name": "Ibaloi" + }, + "ibm": { + "english_name": "Agoi" + }, + "ibn": { + "english_name": "Ibino" + }, + "ibr": { + "english_name": "Ibuoro" + }, + "ibu": { + "english_name": "Ibu" + }, + "iby": { + "english_name": "Ibani" + }, + "ica": { + "english_name": "Ede Ica" + }, + "ich": { + "english_name": "Etkywan" + }, + "icl": { + "english_name": "Icelandic Sign Language" + }, + "icr": { + "english_name": "Creole English, Islander" + }, + "id": { + "english_name": "Indonesian", + "name": "Indonesian" + }, + "ida": { + "english_name": "Idakho-Isukha-Tiriki" + }, + "idb": { + "english_name": "Indo-Portuguese" + }, + "idc": { + "english_name": "Idon" + }, + "idd": { + "english_name": "Ede Idaca" + }, + "ide": { + "english_name": "Idere" + }, + "idi": { + "english_name": "Idi" + }, + "idr": { + "english_name": "Indri" + }, + "ids": { + "english_name": "Idesa" + }, + "idt": { + "english_name": "Idat\u00e9" + }, + "idu": { + "english_name": "Idoma" + }, + "ie": { + "english_name": "Interlingue" + }, + "ifa": { + "english_name": "Ifugao, Amganad" + }, + "ifb": { + "english_name": "Ifugao, Batad" + }, + "ife": { + "english_name": "If\u00e8" + }, + "iff": { + "english_name": "Ifo" + }, + "ifk": { + "english_name": "Ifugao, Tuwali" + }, + "ifm": { + "english_name": "Teke-Fuumu" + }, + "ifu": { + "english_name": "Ifugao, Mayoyao" + }, + "ify": { + "english_name": "Kallahan, Keley-I" + }, + "ig": { + "english_name": "Igbo" + }, + "igb": { + "english_name": "Ebira" + }, + "ige": { + "english_name": "Igede" + }, + "igg": { + "english_name": "Igana" + }, + "igl": { + "english_name": "Igala" + }, + "igm": { + "english_name": "Kanggape" + }, + "ign": { + "english_name": "Ignaciano" + }, + "igo": { + "english_name": "Isebe" + }, + "igs": { + "english_name": "Interglossa" + }, + "igw": { + "english_name": "Igwe" + }, + "ihb": { + "english_name": "Iha Based Pidgin" + }, + "ihi": { + "english_name": "Ihievbe" + }, + "ihp": { + "english_name": "Iha" + }, + "ihw": { + "english_name": "Bidhawal" + }, + "ii": { + "english_name": "Yi, Sichuan" + }, + "iin": { + "english_name": "Thiin" + }, + "ijc": { + "english_name": "Izon" + }, + "ije": { + "english_name": "Biseni" + }, + "ijj": { + "english_name": "Ede Ije" + }, + "ijn": { + "english_name": "Kalabari" + }, + "ijs": { + "english_name": "Ijo, Southeast" + }, + "ik": { + "english_name": "Inupiaq" + }, + "ike": { + "english_name": "Inuktitut, Eastern Canadian" + }, + "iki": { + "english_name": "Iko" + }, + "ikk": { + "english_name": "Ika" + }, + "ikl": { + "english_name": "Ikulu" + }, + "iko": { + "english_name": "Olulumo-Ikom" + }, + "ikp": { + "english_name": "Ikpeshi" + }, + "ikr": { + "english_name": "Ikaranggal" + }, + "ikt": { + "english_name": "Inuinnaqtun" + }, + "ikv": { + "english_name": "Iku-Gora-Ankwa" + }, + "ikw": { + "english_name": "Ikwere" + }, + "ikx": { + "english_name": "Ik" + }, + "ikz": { + "english_name": "Ikizu" + }, + "ila": { + "english_name": "Ile Ape" + }, + "ilb": { + "english_name": "Ila" + }, + "ilg": { + "english_name": "Garig-Ilgar" + }, + "ili": { + "english_name": "Ili Turki" + }, + "ilk": { + "english_name": "Ilongot" + }, + "ill": { + "english_name": "Iranun" + }, + "ilo": { + "english_name": "Iloko" + }, + "ils": { + "english_name": "International Sign" + }, + "ilu": { + "english_name": "Ili'uun" + }, + "ilv": { + "english_name": "Ilue" + }, + "ima": { + "english_name": "Malasar, Mala" + }, + "imi": { + "english_name": "Anamgura" + }, + "iml": { + "english_name": "Miluk" + }, + "imn": { + "english_name": "Imonda" + }, + "imo": { + "english_name": "Imbongu" + }, + "imr": { + "english_name": "Imroing" + }, + "ims": { + "english_name": "Marsian" + }, + "imy": { + "english_name": "Milyan" + }, + "inb": { + "english_name": "Inga" + }, + "ing": { + "english_name": "Degexit'an" + }, + "inh": { + "english_name": "Ingush" + }, + "inj": { + "english_name": "Inga, Jungle" + }, + "inl": { + "english_name": "Indonesian Sign Language" + }, + "inm": { + "english_name": "Minaean" + }, + "inn": { + "english_name": "Isinai" + }, + "ino": { + "english_name": "Inoke-Yate" + }, + "inp": { + "english_name": "I\u00f1apari" + }, + "ins": { + "english_name": "Indian Sign Language" + }, + "int": { + "english_name": "Intha" + }, + "inz": { + "english_name": "Inese\u00f1o" + }, + "io": { + "english_name": "Ido" + }, + "ior": { + "english_name": "Inor" + }, + "iou": { + "english_name": "Tuma-Irumu" + }, + "iow": { + "english_name": "Iowa-Oto" + }, + "ipi": { + "english_name": "Ipili" + }, + "ipo": { + "english_name": "Ipiko" + }, + "iqu": { + "english_name": "Iquito" + }, + "iqw": { + "english_name": "Ikwo" + }, + "ire": { + "english_name": "Iresim" + }, + "irh": { + "english_name": "Irarutu" + }, + "iri": { + "english_name": "Irigwe" + }, + "irk": { + "english_name": "Iraqw" + }, + "irn": { + "english_name": "Ir\u00e1ntxe" + }, + "irr": { + "english_name": "Ir" + }, + "iru": { + "english_name": "Irula" + }, + "irx": { + "english_name": "Kamberau" + }, + "iry": { + "english_name": "Iraya" + }, + "is": { + "english_name": "Icelandic", + "name": "\u00cdslenska" + }, + "isa": { + "english_name": "Isabi" + }, + "isc": { + "english_name": "Isconahua" + }, + "isd": { + "english_name": "Isnag" + }, + "ise": { + "english_name": "Italian Sign Language" + }, + "isg": { + "english_name": "Irish Sign Language" + }, + "ish": { + "english_name": "Esan" + }, + "isi": { + "english_name": "Nkem-Nkum" + }, + "isk": { + "english_name": "Ishkashimi" + }, + "ism": { + "english_name": "Masimasi" + }, + "isn": { + "english_name": "Isanzu" + }, + "iso": { + "english_name": "Isoko" + }, + "isr": { + "english_name": "Israeli Sign Language" + }, + "ist": { + "english_name": "Istriot" + }, + "isu": { + "english_name": "Isu (Menchum Division)" + }, + "it": { + "english_name": "Italian", + "name": "Italiano" + }, + "itb": { + "english_name": "Itneg, Binongan" + }, + "ite": { + "english_name": "Itene" + }, + "iti": { + "english_name": "Itneg, Inlaod" + }, + "itk": { + "english_name": "Judeo-Italian" + }, + "itl": { + "english_name": "Itelmen" + }, + "itm": { + "english_name": "Itu Mbon Uzo" + }, + "ito": { + "english_name": "Itonama" + }, + "itr": { + "english_name": "Iteri" + }, + "its": { + "english_name": "Isekiri" + }, + "itt": { + "english_name": "Itneg, Maeng" + }, + "itv": { + "english_name": "Itawit" + }, + "itw": { + "english_name": "Ito" + }, + "itx": { + "english_name": "Itik" + }, + "ity": { + "english_name": "Itneg, Moyadan" + }, + "itz": { + "english_name": "Itz\u00e1" + }, + "iu": { + "english_name": "Inuktitut" + }, + "ium": { + "english_name": "Mien, Iu" + }, + "ivb": { + "english_name": "Ibatan" + }, + "ivv": { + "english_name": "Ivatan" + }, + "iwk": { + "english_name": "I-Wak" + }, + "iwm": { + "english_name": "Iwam" + }, + "iwo": { + "english_name": "Iwur" + }, + "iws": { + "english_name": "Iwam, Sepik" + }, + "ixc": { + "english_name": "Ixcatec" + }, + "ixl": { + "english_name": "Ixil" + }, + "iya": { + "english_name": "Iyayu" + }, + "iyo": { + "english_name": "Mesaka" + }, + "iyx": { + "english_name": "Yaka (Congo)" + }, + "izh": { + "english_name": "Ingrian" + }, + "izr": { + "english_name": "Izere" + }, + "izz": { + "english_name": "Izii" + }, + "ja": { + "english_name": "Japanese", + "name": "\u65e5\u672c\u8a9e" + }, + "jaa": { + "english_name": "Jamamad\u00ed" + }, + "jab": { + "english_name": "Hyam" + }, + "jac": { + "english_name": "Popti'" + }, + "jad": { + "english_name": "Jahanka" + }, + "jae": { + "english_name": "Yabem" + }, + "jaf": { + "english_name": "Jara" + }, + "jah": { + "english_name": "Jah Hut" + }, + "jaj": { + "english_name": "Zazao" + }, + "jak": { + "english_name": "Jakun" + }, + "jal": { + "english_name": "Yalahatan" + }, + "jam": { + "english_name": "Creole English, Jamaican" + }, + "jan": { + "english_name": "Jandai" + }, + "jao": { + "english_name": "Yanyuwa" + }, + "jaq": { + "english_name": "Yaqay" + }, + "jas": { + "english_name": "Javanese, New Caledonian" + }, + "jat": { + "english_name": "Jakati" + }, + "jau": { + "english_name": "Yaur" + }, + "jax": { + "english_name": "Malay, Jambi" + }, + "jay": { + "english_name": "Yan-nhangu" + }, + "jaz": { + "english_name": "Jawe" + }, + "jbe": { + "english_name": "Judeo-Berber" + }, + "jbi": { + "english_name": "Badjiri" + }, + "jbj": { + "english_name": "Arandai" + }, + "jbk": { + "english_name": "Barikewa" + }, + "jbn": { + "english_name": "Nafusi" + }, + "jbo": { + "english_name": "Lojban" + }, + "jbr": { + "english_name": "Jofotek-Bromnya" + }, + "jbt": { + "english_name": "Jabut\u00ed" + }, + "jbu": { + "english_name": "Jukun Takum" + }, + "jbw": { + "english_name": "Yawijibaya" + }, + "jcs": { + "english_name": "Jamaican Country Sign Language" + }, + "jct": { + "english_name": "Krymchak" + }, + "jda": { + "english_name": "Jad" + }, + "jdg": { + "english_name": "Jadgali" + }, + "jdt": { + "english_name": "Judeo-Tat" + }, + "jeb": { + "english_name": "Jebero" + }, + "jee": { + "english_name": "Jerung" + }, + "jeg": { + "english_name": "Jeng" + }, + "jeh": { + "english_name": "Jeh" + }, + "jei": { + "english_name": "Yei" + }, + "jek": { + "english_name": "Jeri Kuo" + }, + "jel": { + "english_name": "Yelmek" + }, + "jen": { + "english_name": "Dza" + }, + "jer": { + "english_name": "Jere" + }, + "jet": { + "english_name": "Manem" + }, + "jeu": { + "english_name": "Jonkor Bourmataguil" + }, + "jgb": { + "english_name": "Ngbee" + }, + "jge": { + "english_name": "Judeo-Georgian" + }, + "jgk": { + "english_name": "Gwak" + }, + "jgo": { + "english_name": "Ngomba" + }, + "jhi": { + "english_name": "Jehai" + }, + "jhs": { + "english_name": "Jhankot Sign Language" + }, + "jia": { + "english_name": "Jina" + }, + "jib": { + "english_name": "Jibu" + }, + "jic": { + "english_name": "Tol" + }, + "jid": { + "english_name": "Bu" + }, + "jie": { + "english_name": "Jilbe" + }, + "jig": { + "english_name": "Djingili" + }, + "jih": { + "english_name": "sTodsde" + }, + "jii": { + "english_name": "Jiiddu" + }, + "jil": { + "english_name": "Jilim" + }, + "jim": { + "english_name": "Jimi (Cameroon)" + }, + "jio": { + "english_name": "Jiamao" + }, + "jiq": { + "english_name": "Guanyinqiao" + }, + "jit": { + "english_name": "Jita" + }, + "jiu": { + "english_name": "Jinuo, Youle" + }, + "jiv": { + "english_name": "Shuar" + }, + "jiy": { + "english_name": "Jinuo, Buyuan" + }, + "jjr": { + "english_name": "Bankal" + }, + "jkm": { + "english_name": "Karen, Mobwa" + }, + "jko": { + "english_name": "Kubo" + }, + "jkp": { + "english_name": "Karen, Paku" + }, + "jkr": { + "english_name": "Koro (India)" + }, + "jku": { + "english_name": "Labir" + }, + "jle": { + "english_name": "Ngile" + }, + "jls": { + "english_name": "Jamaican Sign Language" + }, + "jma": { + "english_name": "Dima" + }, + "jmb": { + "english_name": "Zumbun" + }, + "jmc": { + "english_name": "Machame" + }, + "jmd": { + "english_name": "Yamdena" + }, + "jmi": { + "english_name": "Jimi (Nigeria)" + }, + "jml": { + "english_name": "Jumli" + }, + "jmn": { + "english_name": "Naga, Makuri" + }, + "jmr": { + "english_name": "Kamara" + }, + "jms": { + "english_name": "Mashi (Nigeria)" + }, + "jmw": { + "english_name": "Mouwase" + }, + "jmx": { + "english_name": "Mixtec, Western Juxtlahuaca" + }, + "jna": { + "english_name": "Jangshung" + }, + "jnd": { + "english_name": "Jandavra" + }, + "jng": { + "english_name": "Yangman" + }, + "jni": { + "english_name": "Janji" + }, + "jnj": { + "english_name": "Yemsa" + }, + "jnl": { + "english_name": "Rawat" + }, + "jns": { + "english_name": "Jaunsari" + }, + "job": { + "english_name": "Joba" + }, + "jod": { + "english_name": "Wojenaka" + }, + "jor": { + "english_name": "Jor\u00e1" + }, + "jos": { + "english_name": "Jordanian Sign Language" + }, + "jow": { + "english_name": "Jowulu" + }, + "jpa": { + "english_name": "Aramaic, Jewish Palestinian" + }, + "jpr": { + "english_name": "Judeo-Persian" + }, + "jqr": { + "english_name": "Jaqaru" + }, + "jra": { + "english_name": "Jarai" + }, + "jrb": { + "english_name": "Judeo-Arabic" + }, + "jrr": { + "english_name": "Jiru" + }, + "jrt": { + "english_name": "Jorto" + }, + "jru": { + "english_name": "Japrer\u00eda" + }, + "jsl": { + "english_name": "Japanese Sign Language" + }, + "jua": { + "english_name": "J\u00fama" + }, + "jub": { + "english_name": "Wannu" + }, + "juc": { + "english_name": "Jurchen" + }, + "jud": { + "english_name": "Worodougou" + }, + "juh": { + "english_name": "H\u00f5ne" + }, + "jui": { + "english_name": "Ngadjuri" + }, + "juk": { + "english_name": "Wapan" + }, + "jul": { + "english_name": "Jirel" + }, + "jum": { + "english_name": "Jumjum" + }, + "jun": { + "english_name": "Juang" + }, + "juo": { + "english_name": "Jiba" + }, + "jup": { + "english_name": "Hupd\u00eb" + }, + "jur": { + "english_name": "Jur\u00fana" + }, + "jus": { + "english_name": "Jumla Sign Language" + }, + "jut": { + "english_name": "Jutish" + }, + "juu": { + "english_name": "Ju" + }, + "juw": { + "english_name": "W\u00e3pha" + }, + "juy": { + "english_name": "Juray" + }, + "jv": { + "english_name": "Javanese" + }, + "jvd": { + "english_name": "Javindo" + }, + "jvn": { + "english_name": "Javanese, Caribbean" + }, + "jwi": { + "english_name": "Jwira-Pepesa" + }, + "jya": { + "english_name": "Jiarong" + }, + "jye": { + "english_name": "Arabic, Judeo-Yemeni" + }, + "jyy": { + "english_name": "Jaya" + }, + "ka": { + "english_name": "Georgian" + }, + "kaa": { + "english_name": "Kara-Kalpak" + }, + "kab": { + "english_name": "Kabyle" + }, + "kac": { + "english_name": "Kachin" + }, + "kad": { + "english_name": "Adara" + }, + "kae": { + "english_name": "Ketangalan" + }, + "kaf": { + "english_name": "Katso" + }, + "kag": { + "english_name": "Kajaman" + }, + "kah": { + "english_name": "Kara (Central African Republic)" + }, + "kai": { + "english_name": "Karekare" + }, + "kaj": { + "english_name": "Jju" + }, + "kak": { + "english_name": "Kallahan, Kayapa" + }, + "kam": { + "english_name": "Kamba (Kenya)" + }, + "kao": { + "english_name": "Xaasongaxango" + }, + "kap": { + "english_name": "Bezhta" + }, + "kaq": { + "english_name": "Capanahua" + }, + "kav": { + "english_name": "Katuk\u00edna" + }, + "kaw": { + "english_name": "Kawi" + }, + "kax": { + "english_name": "Kao" + }, + "kay": { + "english_name": "Kamayur\u00e1" + }, + "kba": { + "english_name": "Kalarko" + }, + "kbb": { + "english_name": "Kaxui\u00e2na" + }, + "kbc": { + "english_name": "Kadiw\u00e9u" + }, + "kbd": { + "english_name": "Kabardian" + }, + "kbe": { + "english_name": "Kanju" + }, + "kbg": { + "english_name": "Khamba" + }, + "kbh": { + "english_name": "Cams\u00e1" + }, + "kbi": { + "english_name": "Kaptiau" + }, + "kbj": { + "english_name": "Kari" + }, + "kbk": { + "english_name": "Koiari, Grass" + }, + "kbl": { + "english_name": "Kanembu" + }, + "kbm": { + "english_name": "Iwal" + }, + "kbn": { + "english_name": "Kare (Central African Republic)" + }, + "kbo": { + "english_name": "Keliko" + }, + "kbp": { + "english_name": "Kabiy\u00e8" + }, + "kbq": { + "english_name": "Kamano" + }, + "kbr": { + "english_name": "Kafa" + }, + "kbs": { + "english_name": "Kande" + }, + "kbt": { + "english_name": "Abadi" + }, + "kbu": { + "english_name": "Kabutra" + }, + "kbv": { + "english_name": "Dera (Indonesia)" + }, + "kbw": { + "english_name": "Kaiep" + }, + "kbx": { + "english_name": "Ap Ma" + }, + "kby": { + "english_name": "Kanuri, Manga" + }, + "kbz": { + "english_name": "Duhwa" + }, + "kca": { + "english_name": "Khanty" + }, + "kcb": { + "english_name": "Kawacha" + }, + "kcc": { + "english_name": "Lubila" + }, + "kcd": { + "english_name": "Kanum, Ngk\u00e2lmpw" + }, + "kce": { + "english_name": "Kaivi" + }, + "kcf": { + "english_name": "Ukaan" + }, + "kcg": { + "english_name": "Tyap" + }, + "kch": { + "english_name": "Vono" + }, + "kci": { + "english_name": "Kamantan" + }, + "kcj": { + "english_name": "Kobiana" + }, + "kck": { + "english_name": "Kalanga" + }, + "kcl": { + "english_name": "Kela (Papua New Guinea)" + }, + "kcm": { + "english_name": "Gula (Central African Republic)" + }, + "kcn": { + "english_name": "Nubi" + }, + "kco": { + "english_name": "Kinalakna" + }, + "kcp": { + "english_name": "Kanga" + }, + "kcq": { + "english_name": "Kamo" + }, + "kcr": { + "english_name": "Katla" + }, + "kcs": { + "english_name": "Koenoem" + }, + "kct": { + "english_name": "Kaian" + }, + "kcu": { + "english_name": "Kami (Tanzania)" + }, + "kcv": { + "english_name": "Kete" + }, + "kcw": { + "english_name": "Kabwari" + }, + "kcx": { + "english_name": "Kachama-Ganjule" + }, + "kcy": { + "english_name": "Korandje" + }, + "kcz": { + "english_name": "Konongo" + }, + "kda": { + "english_name": "Worimi" + }, + "kdc": { + "english_name": "Kutu" + }, + "kdd": { + "english_name": "Yankunytjatjara" + }, + "kde": { + "english_name": "Makonde" + }, + "kdf": { + "english_name": "Mamusi" + }, + "kdg": { + "english_name": "Seba" + }, + "kdh": { + "english_name": "Tem" + }, + "kdi": { + "english_name": "Kumam" + }, + "kdj": { + "english_name": "Karamojong" + }, + "kdk": { + "english_name": "Num\u00e8\u00e8" + }, + "kdl": { + "english_name": "Tsikimba" + }, + "kdm": { + "english_name": "Kagoma" + }, + "kdn": { + "english_name": "Kunda" + }, + "kdp": { + "english_name": "Kaningdon-Nindem" + }, + "kdq": { + "english_name": "Koch" + }, + "kdr": { + "english_name": "Karaim" + }, + "kdt": { + "english_name": "Kuy" + }, + "kdu": { + "english_name": "Kadaru" + }, + "kdw": { + "english_name": "Koneraw" + }, + "kdx": { + "english_name": "Kam" + }, + "kdy": { + "english_name": "Keder" + }, + "kdz": { + "english_name": "Kwaja" + }, + "kea": { + "english_name": "Kabuverdianu" + }, + "keb": { + "english_name": "K\u00e9l\u00e9" + }, + "kec": { + "english_name": "Keiga" + }, + "ked": { + "english_name": "Kerewe" + }, + "kee": { + "english_name": "Keres, Eastern" + }, + "kef": { + "english_name": "Kpessi" + }, + "keg": { + "english_name": "Tese" + }, + "keh": { + "english_name": "Keak" + }, + "kei": { + "english_name": "Kei" + }, + "kej": { + "english_name": "Kadar" + }, + "kek": { + "english_name": "Kekch\u00ed" + }, + "kel": { + "english_name": "Kela (Democratic Republic of Congo)" + }, + "kem": { + "english_name": "Kemak" + }, + "ken": { + "english_name": "Kenyang" + }, + "keo": { + "english_name": "Kakwa" + }, + "kep": { + "english_name": "Kaikadi" + }, + "keq": { + "english_name": "Kamar" + }, + "ker": { + "english_name": "Kera" + }, + "kes": { + "english_name": "Kugbo" + }, + "ket": { + "english_name": "Ket" + }, + "keu": { + "english_name": "Akebu" + }, + "kev": { + "english_name": "Kanikkaran" + }, + "kew": { + "english_name": "Kewa, West" + }, + "kex": { + "english_name": "Kukna" + }, + "key": { + "english_name": "Kupia" + }, + "kez": { + "english_name": "Kukele" + }, + "kfa": { + "english_name": "Kodava" + }, + "kfb": { + "english_name": "Kolami, Northwestern" + }, + "kfc": { + "english_name": "Konda-Dora" + }, + "kfd": { + "english_name": "Koraga, Korra" + }, + "kfe": { + "english_name": "Kota (India)" + }, + "kff": { + "english_name": "Koya" + }, + "kfg": { + "english_name": "Kudiya" + }, + "kfh": { + "english_name": "Kurichiya" + }, + "kfi": { + "english_name": "Kurumba, Kannada" + }, + "kfj": { + "english_name": "Kemiehua" + }, + "kfk": { + "english_name": "Kinnauri" + }, + "kfl": { + "english_name": "Kung" + }, + "kfm": { + "english_name": "Khunsari" + }, + "kfn": { + "english_name": "Kuk" + }, + "kfo": { + "english_name": "Koro (C\u00f4te d'Ivoire)" + }, + "kfp": { + "english_name": "Korwa" + }, + "kfq": { + "english_name": "Korku" + }, + "kfr": { + "english_name": "Kachchi" + }, + "kfs": { + "english_name": "Bilaspuri" + }, + "kft": { + "english_name": "Kanjari" + }, + "kfu": { + "english_name": "Katkari" + }, + "kfv": { + "english_name": "Kurmukar" + }, + "kfw": { + "english_name": "Naga, Kharam" + }, + "kfx": { + "english_name": "Pahari, Kullu" + }, + "kfy": { + "english_name": "Kumaoni" + }, + "kfz": { + "english_name": "Koromf\u00e9" + }, + "kg": { + "english_name": "Kongo" + }, + "kga": { + "english_name": "Koyaga" + }, + "kgb": { + "english_name": "Kawe" + }, + "kgc": { + "english_name": "Kasseng" + }, + "kgd": { + "english_name": "Kataang" + }, + "kge": { + "english_name": "Komering" + }, + "kgf": { + "english_name": "Kube" + }, + "kgg": { + "english_name": "Kusunda" + }, + "kgi": { + "english_name": "Selangor Sign Language" + }, + "kgj": { + "english_name": "Kham, Gamale" + }, + "kgk": { + "english_name": "Kaiw\u00e1" + }, + "kgl": { + "english_name": "Kunggari" + }, + "kgm": { + "english_name": "Karip\u00fana" + }, + "kgn": { + "english_name": "Karingani" + }, + "kgo": { + "english_name": "Krongo" + }, + "kgp": { + "english_name": "Kaingang" + }, + "kgq": { + "english_name": "Kamoro" + }, + "kgr": { + "english_name": "Abun" + }, + "kgs": { + "english_name": "Kumbainggar" + }, + "kgt": { + "english_name": "Somyev" + }, + "kgu": { + "english_name": "Kobol" + }, + "kgv": { + "english_name": "Karas" + }, + "kgw": { + "english_name": "Karon Dori" + }, + "kgx": { + "english_name": "Kamaru" + }, + "kgy": { + "english_name": "Kyerung" + }, + "kha": { + "english_name": "Khasi" + }, + "khb": { + "english_name": "L\u00fc" + }, + "khc": { + "english_name": "Tukang Besi North" + }, + "khd": { + "english_name": "Kanum, B\u00e4di" + }, + "khe": { + "english_name": "Korowai" + }, + "khf": { + "english_name": "Khuen" + }, + "khg": { + "english_name": "Tibetan, Khams" + }, + "khh": { + "english_name": "Kehu" + }, + "khj": { + "english_name": "Kuturmi" + }, + "khk": { + "english_name": "Mongolian, Halh" + }, + "khl": { + "english_name": "Lusi" + }, + "khn": { + "english_name": "Khandesi" + }, + "kho": { + "english_name": "Khotanese" + }, + "khp": { + "english_name": "Kapori" + }, + "khq": { + "english_name": "Songhay, Koyra Chiini" + }, + "khr": { + "english_name": "Kharia" + }, + "khs": { + "english_name": "Kasua" + }, + "kht": { + "english_name": "Khamti" + }, + "khu": { + "english_name": "Nkhumbi" + }, + "khv": { + "english_name": "Khvarshi" + }, + "khw": { + "english_name": "Khowar" + }, + "khx": { + "english_name": "Kanu" + }, + "khy": { + "english_name": "Kele (Democratic Republic of Congo)" + }, + "khz": { + "english_name": "Keapara" + }, + "ki": { + "english_name": "Kikuyu" + }, + "kia": { + "english_name": "Kim" + }, + "kib": { + "english_name": "Koalib" + }, + "kic": { + "english_name": "Kickapoo" + }, + "kid": { + "english_name": "Koshin" + }, + "kie": { + "english_name": "Kibet" + }, + "kif": { + "english_name": "Kham, Eastern Parbate" + }, + "kig": { + "english_name": "Kimaama" + }, + "kih": { + "english_name": "Kilmeri" + }, + "kii": { + "english_name": "Kitsai" + }, + "kij": { + "english_name": "Kilivila" + }, + "kil": { + "english_name": "Kariya" + }, + "kim": { + "english_name": "Karagas" + }, + "kio": { + "english_name": "Kiowa" + }, + "kip": { + "english_name": "Kham, Sheshi" + }, + "kiq": { + "english_name": "Kosadle" + }, + "kis": { + "english_name": "Kis" + }, + "kit": { + "english_name": "Agob" + }, + "kiu": { + "english_name": "Kirmanjki (individual language)" + }, + "kiv": { + "english_name": "Kimbu" + }, + "kiw": { + "english_name": "Kiwai, Northeast" + }, + "kix": { + "english_name": "Naga, Khiamniungan" + }, + "kiy": { + "english_name": "Kirikiri" + }, + "kiz": { + "english_name": "Kisi" + }, + "kj": { + "english_name": "Kuanyama" + }, + "kja": { + "english_name": "Mlap" + }, + "kjb": { + "english_name": "Q'anjob'al" + }, + "kjc": { + "english_name": "Konjo, Coastal" + }, + "kjd": { + "english_name": "Kiwai, Southern" + }, + "kje": { + "english_name": "Kisar" + }, + "kjf": { + "english_name": "Khalaj" + }, + "kjg": { + "english_name": "Khmu" + }, + "kjh": { + "english_name": "Khakas" + }, + "kji": { + "english_name": "Zabana" + }, + "kjj": { + "english_name": "Khinalugh" + }, + "kjk": { + "english_name": "Konjo, Highland" + }, + "kjl": { + "english_name": "Kham, Western Parbate" + }, + "kjm": { + "english_name": "Kh\u00e1ng" + }, + "kjn": { + "english_name": "Kunjen" + }, + "kjo": { + "english_name": "Kinnauri, Harijan" + }, + "kjp": { + "english_name": "Karen, Pwo Eastern" + }, + "kjq": { + "english_name": "Keres, Western" + }, + "kjr": { + "english_name": "Kurudu" + }, + "kjs": { + "english_name": "Kewa, East" + }, + "kjt": { + "english_name": "Karen, Phrae Pwo" + }, + "kju": { + "english_name": "Kashaya" + }, + "kjx": { + "english_name": "Ramopa" + }, + "kjy": { + "english_name": "Erave" + }, + "kjz": { + "english_name": "Bumthangkha" + }, + "kk": { + "english_name": "Kazakh" + }, + "kka": { + "english_name": "Kakanda" + }, + "kkb": { + "english_name": "Kwerisa" + }, + "kkc": { + "english_name": "Odoodee" + }, + "kkd": { + "english_name": "Kinuku" + }, + "kke": { + "english_name": "Kakabe" + }, + "kkf": { + "english_name": "Monpa, Kalaktang" + }, + "kkg": { + "english_name": "Kalinga, Mabaka Valley" + }, + "kkh": { + "english_name": "Kh\u00fcn" + }, + "kki": { + "english_name": "Kagulu" + }, + "kkj": { + "english_name": "Kako" + }, + "kkk": { + "english_name": "Kokota" + }, + "kkl": { + "english_name": "Yale, Kosarek" + }, + "kkm": { + "english_name": "Kiong" + }, + "kkn": { + "english_name": "Kon Keu" + }, + "kko": { + "english_name": "Karko" + }, + "kkp": { + "english_name": "Gugubera" + }, + "kkq": { + "english_name": "Kaiku" + }, + "kkr": { + "english_name": "Kir-Balar" + }, + "kks": { + "english_name": "Giiwo" + }, + "kkt": { + "english_name": "Koi" + }, + "kku": { + "english_name": "Tumi" + }, + "kkv": { + "english_name": "Kangean" + }, + "kkw": { + "english_name": "Teke-Kukuya" + }, + "kkx": { + "english_name": "Kohin" + }, + "kky": { + "english_name": "Guguyimidjir" + }, + "kkz": { + "english_name": "Kaska" + }, + "kl": { + "english_name": "Kalaallisut" + }, + "kla": { + "english_name": "Klamath-Modoc" + }, + "klb": { + "english_name": "Kiliwa" + }, + "klc": { + "english_name": "Kolbila" + }, + "kld": { + "english_name": "Gamilaraay" + }, + "kle": { + "english_name": "Kulung (Nepal)" + }, + "klf": { + "english_name": "Kendeje" + }, + "klg": { + "english_name": "Tagakaulo" + }, + "klh": { + "english_name": "Weliki" + }, + "kli": { + "english_name": "Kalumpang" + }, + "klj": { + "english_name": "Khalaj, Turkic" + }, + "klk": { + "english_name": "Kono (Nigeria)" + }, + "kll": { + "english_name": "Kalagan, Kagan" + }, + "klm": { + "english_name": "Migum" + }, + "kln": { + "english_name": "Kalenjin" + }, + "klo": { + "english_name": "Kapya" + }, + "klp": { + "english_name": "Kamasa" + }, + "klq": { + "english_name": "Rumu" + }, + "klr": { + "english_name": "Khaling" + }, + "kls": { + "english_name": "Kalasha" + }, + "klt": { + "english_name": "Nukna" + }, + "klu": { + "english_name": "Klao" + }, + "klv": { + "english_name": "Maskelynes" + }, + "klw": { + "english_name": "Lindu" + }, + "klx": { + "english_name": "Koluwawa" + }, + "kly": { + "english_name": "Kalao" + }, + "klz": { + "english_name": "Kabola" + }, + "km": { + "english_name": "Khmer, Central" + }, + "kma": { + "english_name": "Konni" + }, + "kmb": { + "english_name": "Kimbundu" + }, + "kmc": { + "english_name": "Dong, Southern" + }, + "kmd": { + "english_name": "Kalinga, Majukayang" + }, + "kme": { + "english_name": "Bakole" + }, + "kmf": { + "english_name": "Kare (Papua New Guinea)" + }, + "kmg": { + "english_name": "K\u00e2te" + }, + "kmh": { + "english_name": "Kalam" + }, + "kmi": { + "english_name": "Kami (Nigeria)" + }, + "kmj": { + "english_name": "Kumarbhag Paharia" + }, + "kmk": { + "english_name": "Kalinga, Limos" + }, + "kml": { + "english_name": "Kalinga, Tanudan" + }, + "kmm": { + "english_name": "Kom (India)" + }, + "kmn": { + "english_name": "Awtuw" + }, + "kmo": { + "english_name": "Kwoma" + }, + "kmp": { + "english_name": "Gimme" + }, + "kmq": { + "english_name": "Kwama" + }, + "kmr": { + "english_name": "Kurdish, Northern" + }, + "kms": { + "english_name": "Kamasau" + }, + "kmt": { + "english_name": "Kemtuik" + }, + "kmu": { + "english_name": "Kanite" + }, + "kmv": { + "english_name": "Creole French, Karip\u00fana" + }, + "kmw": { + "english_name": "Komo (Democratic Republic of Congo)" + }, + "kmx": { + "english_name": "Waboda" + }, + "kmy": { + "english_name": "Koma" + }, + "kmz": { + "english_name": "Khorasani Turkish" + }, + "kn": { + "english_name": "Kannada", + "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1" + }, + "kna": { + "english_name": "Dera (Nigeria)" + }, + "knb": { + "english_name": "Kalinga, Lubuagan" + }, + "knc": { + "english_name": "Kanuri, Central" + }, + "knd": { + "english_name": "Konda" + }, + "kne": { + "english_name": "Kankanaey" + }, + "knf": { + "english_name": "Mankanya" + }, + "kng": { + "english_name": "Koongo" + }, + "kni": { + "english_name": "Kanufi" + }, + "knj": { + "english_name": "Kanjobal, Western" + }, + "knk": { + "english_name": "Kuranko" + }, + "knl": { + "english_name": "Keninjal" + }, + "knm": { + "english_name": "Kanamar\u00ed" + }, + "knn": { + "english_name": "Konkani (individual language)" + }, + "kno": { + "english_name": "Kono (Sierra Leone)" + }, + "knp": { + "english_name": "Kwanja" + }, + "knq": { + "english_name": "Kintaq" + }, + "knr": { + "english_name": "Kaningra" + }, + "kns": { + "english_name": "Kensiu" + }, + "knt": { + "english_name": "Katuk\u00edna, Panoan" + }, + "knu": { + "english_name": "Kono (Guinea)" + }, + "knv": { + "english_name": "Tabo" + }, + "knw": { + "english_name": "Kung-Ekoka" + }, + "knx": { + "english_name": "Kendayan" + }, + "kny": { + "english_name": "Kanyok" + }, + "knz": { + "english_name": "Kalams\u00e9" + }, + "ko": { + "english_name": "Korean", + "name": "\ud55c\uad6d\uc5b4" + }, + "koa": { + "english_name": "Konomala" + }, + "koc": { + "english_name": "Kpati" + }, + "kod": { + "english_name": "Kodi" + }, + "koe": { + "english_name": "Kacipo-Balesi" + }, + "kof": { + "english_name": "Kubi" + }, + "kog": { + "english_name": "Cogui" + }, + "koh": { + "english_name": "Koyo" + }, + "koi": { + "english_name": "Komi-Permyak" + }, + "kok": { + "english_name": "Konkani (macrolanguage)", + "name": "Konkani (macrolanguage)" + }, + "kol": { + "english_name": "Kol (Papua New Guinea)" + }, + "koo": { + "english_name": "Konzo" + }, + "kop": { + "english_name": "Waube" + }, + "koq": { + "english_name": "Kota (Gabon)" + }, + "kos": { + "english_name": "Kosraean" + }, + "kot": { + "english_name": "Lagwan" + }, + "kou": { + "english_name": "Koke" + }, + "kov": { + "english_name": "Kudu-Camo" + }, + "kow": { + "english_name": "Kugama" + }, + "kox": { + "english_name": "Coxima" + }, + "koy": { + "english_name": "Koyukon" + }, + "koz": { + "english_name": "Korak" + }, + "kpa": { + "english_name": "Kutto" + }, + "kpb": { + "english_name": "Kurumba, Mullu" + }, + "kpc": { + "english_name": "Curripaco" + }, + "kpd": { + "english_name": "Koba" + }, + "kpe": { + "english_name": "Kpelle" + }, + "kpf": { + "english_name": "Komba" + }, + "kpg": { + "english_name": "Kapingamarangi" + }, + "kph": { + "english_name": "Kplang" + }, + "kpi": { + "english_name": "Kofei" + }, + "kpj": { + "english_name": "Karaj\u00e1" + }, + "kpk": { + "english_name": "Kpan" + }, + "kpl": { + "english_name": "Kpala" + }, + "kpm": { + "english_name": "Koho" + }, + "kpn": { + "english_name": "Kepkiriw\u00e1t" + }, + "kpo": { + "english_name": "Ikposo" + }, + "kpq": { + "english_name": "Korupun-Sela" + }, + "kpr": { + "english_name": "Korafe-Yegha" + }, + "kps": { + "english_name": "Tehit" + }, + "kpt": { + "english_name": "Karata" + }, + "kpu": { + "english_name": "Kafoa" + }, + "kpv": { + "english_name": "Komi-Zyrian" + }, + "kpw": { + "english_name": "Kobon" + }, + "kpx": { + "english_name": "Koiali, Mountain" + }, + "kpy": { + "english_name": "Koryak" + }, + "kpz": { + "english_name": "Kupsabiny" + }, + "kqa": { + "english_name": "Mum" + }, + "kqb": { + "english_name": "Kovai" + }, + "kqc": { + "english_name": "Doromu-Koki" + }, + "kqd": { + "english_name": "Koy Sanjaq Surat" + }, + "kqe": { + "english_name": "Kalagan" + }, + "kqf": { + "english_name": "Kakabai" + }, + "kqg": { + "english_name": "Khe" + }, + "kqh": { + "english_name": "Kisankasa" + }, + "kqi": { + "english_name": "Koitabu" + }, + "kqj": { + "english_name": "Koromira" + }, + "kqk": { + "english_name": "Gbe, Kotafon" + }, + "kql": { + "english_name": "Kyenele" + }, + "kqm": { + "english_name": "Khisa" + }, + "kqn": { + "english_name": "Kaonde" + }, + "kqo": { + "english_name": "Krahn, Eastern" + }, + "kqp": { + "english_name": "Kimr\u00e9" + }, + "kqq": { + "english_name": "Krenak" + }, + "kqr": { + "english_name": "Kimaragang" + }, + "kqs": { + "english_name": "Kissi, Northern" + }, + "kqt": { + "english_name": "Kadazan, Klias River" + }, + "kqu": { + "english_name": "Seroa" + }, + "kqv": { + "english_name": "Okolod" + }, + "kqw": { + "english_name": "Kandas" + }, + "kqx": { + "english_name": "Mser" + }, + "kqy": { + "english_name": "Koorete" + }, + "kqz": { + "english_name": "Korana" + }, + "kr": { + "english_name": "Kanuri" + }, + "kra": { + "english_name": "Kumhali" + }, + "krb": { + "english_name": "Karkin" + }, + "krc": { + "english_name": "Karachay-Balkar" + }, + "krd": { + "english_name": "Kairui-Midiki" + }, + "kre": { + "english_name": "Panar\u00e1" + }, + "krf": { + "english_name": "Koro (Vanuatu)" + }, + "krh": { + "english_name": "Kurama" + }, + "kri": { + "english_name": "Krio" + }, + "krj": { + "english_name": "Kinaray-A" + }, + "krk": { + "english_name": "Kerek" + }, + "krl": { + "english_name": "Karelian" + }, + "krm": { + "english_name": "Krim" + }, + "krn": { + "english_name": "Sapo" + }, + "krp": { + "english_name": "Korop" + }, + "krr": { + "english_name": "Kru'ng 2" + }, + "krs": { + "english_name": "Gbaya (Sudan)" + }, + "krt": { + "english_name": "Kanuri, Tumari" + }, + "kru": { + "english_name": "Kurukh" + }, + "krv": { + "english_name": "Kavet" + }, + "krw": { + "english_name": "Krahn, Western" + }, + "krx": { + "english_name": "Karon" + }, + "kry": { + "english_name": "Kryts" + }, + "krz": { + "english_name": "Kanum, Sota" + }, + "ks": { + "english_name": "Kashmiri" + }, + "ksa": { + "english_name": "Shuwa-Zamani" + }, + "ksb": { + "english_name": "Shambala" + }, + "ksc": { + "english_name": "Kalinga, Southern" + }, + "ksd": { + "english_name": "Kuanua" + }, + "kse": { + "english_name": "Kuni" + }, + "ksf": { + "english_name": "Bafia" + }, + "ksg": { + "english_name": "Kusaghe" + }, + "ksh": { + "english_name": "K\u00f6lsch" + }, + "ksi": { + "english_name": "Krisa" + }, + "ksj": { + "english_name": "Uare" + }, + "ksk": { + "english_name": "Kansa" + }, + "ksl": { + "english_name": "Kumalu" + }, + "ksm": { + "english_name": "Kumba" + }, + "ksn": { + "english_name": "Kasiguranin" + }, + "kso": { + "english_name": "Kofa" + }, + "ksp": { + "english_name": "Kaba" + }, + "ksq": { + "english_name": "Kwaami" + }, + "ksr": { + "english_name": "Borong" + }, + "kss": { + "english_name": "Kisi, Southern" + }, + "kst": { + "english_name": "Winy\u00e9" + }, + "ksu": { + "english_name": "Khamyang" + }, + "ksv": { + "english_name": "Kusu" + }, + "ksw": { + "english_name": "Karen, S'gaw" + }, + "ksx": { + "english_name": "Kedang" + }, + "ksy": { + "english_name": "Kharia Thar" + }, + "ksz": { + "english_name": "Kodaku" + }, + "kta": { + "english_name": "Katua" + }, + "ktb": { + "english_name": "Kambaata" + }, + "ktc": { + "english_name": "Kholok" + }, + "ktd": { + "english_name": "Kokata" + }, + "kte": { + "english_name": "Nubri" + }, + "ktf": { + "english_name": "Kwami" + }, + "ktg": { + "english_name": "Kalkutung" + }, + "kth": { + "english_name": "Karanga" + }, + "kti": { + "english_name": "Muyu, North" + }, + "ktj": { + "english_name": "Krumen, Plapo" + }, + "ktk": { + "english_name": "Kaniet" + }, + "ktl": { + "english_name": "Koroshi" + }, + "ktm": { + "english_name": "Kurti" + }, + "ktn": { + "english_name": "Kariti\u00e2na" + }, + "kto": { + "english_name": "Kuot" + }, + "ktp": { + "english_name": "Kaduo" + }, + "ktq": { + "english_name": "Katabaga" + }, + "ktr": { + "english_name": "Kota Marudu Tinagas" + }, + "kts": { + "english_name": "Muyu, South" + }, + "ktt": { + "english_name": "Ketum" + }, + "ktu": { + "english_name": "Kituba (Democratic Republic of Congo)" + }, + "ktv": { + "english_name": "Katu, Eastern" + }, + "ktw": { + "english_name": "Kato" + }, + "ktx": { + "english_name": "Kaxarar\u00ed" + }, + "kty": { + "english_name": "Kango (Bas-U\u00e9l\u00e9 District)" + }, + "ktz": { + "english_name": "Ju/'hoan" + }, + "ku": { + "english_name": "Kurdish" + }, + "kub": { + "english_name": "Kutep" + }, + "kuc": { + "english_name": "Kwinsu" + }, + "kud": { + "english_name": "'Auhelawa" + }, + "kue": { + "english_name": "Kuman" + }, + "kuf": { + "english_name": "Katu, Western" + }, + "kug": { + "english_name": "Kupa" + }, + "kuh": { + "english_name": "Kushi" + }, + "kui": { + "english_name": "Kuik\u00faro-Kalap\u00e1lo" + }, + "kuj": { + "english_name": "Kuria" + }, + "kuk": { + "english_name": "Kepo'" + }, + "kul": { + "english_name": "Kulere" + }, + "kum": { + "english_name": "Kumyk" + }, + "kun": { + "english_name": "Kunama" + }, + "kuo": { + "english_name": "Kumukio" + }, + "kup": { + "english_name": "Kunimaipa" + }, + "kuq": { + "english_name": "Karipuna" + }, + "kus": { + "english_name": "Kusaal" + }, + "kut": { + "english_name": "Kutenai" + }, + "kuu": { + "english_name": "Kuskokwim, Upper" + }, + "kuv": { + "english_name": "Kur" + }, + "kuw": { + "english_name": "Kpagua" + }, + "kux": { + "english_name": "Kukatja" + }, + "kuy": { + "english_name": "Kuuku-Ya'u" + }, + "kuz": { + "english_name": "Kunza" + }, + "kv": { + "english_name": "Komi" + }, + "kva": { + "english_name": "Bagvalal" + }, + "kvb": { + "english_name": "Kubu" + }, + "kvc": { + "english_name": "Kove" + }, + "kvd": { + "english_name": "Kui (Indonesia)" + }, + "kve": { + "english_name": "Kalabakan" + }, + "kvf": { + "english_name": "Kabalai" + }, + "kvg": { + "english_name": "Kuni-Boazi" + }, + "kvh": { + "english_name": "Komodo" + }, + "kvi": { + "english_name": "Kwang" + }, + "kvj": { + "english_name": "Psikye" + }, + "kvk": { + "english_name": "Korean Sign Language" + }, + "kvl": { + "english_name": "Kayaw" + }, + "kvm": { + "english_name": "Kendem" + }, + "kvn": { + "english_name": "Kuna, Border" + }, + "kvo": { + "english_name": "Dobel" + }, + "kvp": { + "english_name": "Kompane" + }, + "kvq": { + "english_name": "Karen, Geba" + }, + "kvr": { + "english_name": "Kerinci" + }, + "kvs": { + "english_name": "Kunggara" + }, + "kvt": { + "english_name": "Karen, Lahta" + }, + "kvu": { + "english_name": "Karen, Yinbaw" + }, + "kvv": { + "english_name": "Kola" + }, + "kvw": { + "english_name": "Wersing" + }, + "kvx": { + "english_name": "Koli, Parkari" + }, + "kvy": { + "english_name": "Karen, Yintale" + }, + "kvz": { + "english_name": "Tsakwambo" + }, + "kw": { + "english_name": "Cornish" + }, + "kwa": { + "english_name": "D\u00e2w" + }, + "kwb": { + "english_name": "Kwa" + }, + "kwc": { + "english_name": "Likwala" + }, + "kwd": { + "english_name": "Kwaio" + }, + "kwe": { + "english_name": "Kwerba" + }, + "kwf": { + "english_name": "Kwara'ae" + }, + "kwg": { + "english_name": "Sara Kaba Deme" + }, + "kwh": { + "english_name": "Kowiai" + }, + "kwi": { + "english_name": "Awa-Cuaiquer" + }, + "kwj": { + "english_name": "Kwanga" + }, + "kwk": { + "english_name": "Kwakiutl" + }, + "kwl": { + "english_name": "Kofyar" + }, + "kwm": { + "english_name": "Kwambi" + }, + "kwn": { + "english_name": "Kwangali" + }, + "kwo": { + "english_name": "Kwomtari" + }, + "kwp": { + "english_name": "Kodia" + }, + "kwr": { + "english_name": "Kwer" + }, + "kws": { + "english_name": "Kwese" + }, + "kwt": { + "english_name": "Kwesten" + }, + "kwu": { + "english_name": "Kwakum" + }, + "kwv": { + "english_name": "Sara Kaba N\u00e1\u00e0" + }, + "kww": { + "english_name": "Kwinti" + }, + "kwx": { + "english_name": "Khirwar" + }, + "kwy": { + "english_name": "Kongo, San Salvador" + }, + "kwz": { + "english_name": "Kwadi" + }, + "kxa": { + "english_name": "Kairiru" + }, + "kxb": { + "english_name": "Krobu" + }, + "kxc": { + "english_name": "Konso" + }, + "kxd": { + "english_name": "Brunei" + }, + "kxf": { + "english_name": "Karen, Manumanaw" + }, + "kxh": { + "english_name": "Karo (Ethiopia)" + }, + "kxi": { + "english_name": "Murut, Keningau" + }, + "kxj": { + "english_name": "Kulfa" + }, + "kxk": { + "english_name": "Karen, Zayein" + }, + "kxl": { + "english_name": "Kurux, Nepali" + }, + "kxm": { + "english_name": "Khmer, Northern" + }, + "kxn": { + "english_name": "Melanau, Kanowit-Tanjong" + }, + "kxo": { + "english_name": "Kano\u00e9" + }, + "kxp": { + "english_name": "Koli, Wadiyara" + }, + "kxq": { + "english_name": "Kanum, Sm\u00e4rky" + }, + "kxr": { + "english_name": "Koro (Papua New Guinea)" + }, + "kxs": { + "english_name": "Kangjia" + }, + "kxt": { + "english_name": "Koiwat" + }, + "kxu": { + "english_name": "Kui (India)" + }, + "kxv": { + "english_name": "Kuvi" + }, + "kxw": { + "english_name": "Konai" + }, + "kxx": { + "english_name": "Likuba" + }, + "kxy": { + "english_name": "Kayong" + }, + "kxz": { + "english_name": "Kerewo" + }, + "ky": { + "english_name": "Kirghiz" + }, + "kya": { + "english_name": "Kwaya" + }, + "kyb": { + "english_name": "Kalinga, Butbut" + }, + "kyc": { + "english_name": "Kyaka" + }, + "kyd": { + "english_name": "Karey" + }, + "kye": { + "english_name": "Krache" + }, + "kyf": { + "english_name": "Kouya" + }, + "kyg": { + "english_name": "Keyagana" + }, + "kyh": { + "english_name": "Karok" + }, + "kyi": { + "english_name": "Kiput" + }, + "kyj": { + "english_name": "Karao" + }, + "kyk": { + "english_name": "Kamayo" + }, + "kyl": { + "english_name": "Kalapuya" + }, + "kym": { + "english_name": "Kpatili" + }, + "kyn": { + "english_name": "Binukidnon, Northern" + }, + "kyo": { + "english_name": "Kelon" + }, + "kyp": { + "english_name": "Kang" + }, + "kyq": { + "english_name": "Kenga" + }, + "kyr": { + "english_name": "Kuru\u00e1ya" + }, + "kys": { + "english_name": "Kayan, Baram" + }, + "kyt": { + "english_name": "Kayagar" + }, + "kyu": { + "english_name": "Kayah, Western" + }, + "kyv": { + "english_name": "Kayort" + }, + "kyw": { + "english_name": "Kudmali" + }, + "kyx": { + "english_name": "Rapoisi" + }, + "kyy": { + "english_name": "Kambaira" + }, + "kyz": { + "english_name": "Kayab\u00ed" + }, + "kza": { + "english_name": "Karaboro, Western" + }, + "kzb": { + "english_name": "Kaibobo" + }, + "kzc": { + "english_name": "Kulango, Bondoukou" + }, + "kzd": { + "english_name": "Kadai" + }, + "kze": { + "english_name": "Kosena" + }, + "kzf": { + "english_name": "Kaili, Da'a" + }, + "kzg": { + "english_name": "Kikai" + }, + "kzi": { + "english_name": "Kelabit" + }, + "kzj": { + "english_name": "Kadazan, Coastal" + }, + "kzk": { + "english_name": "Kazukuru" + }, + "kzl": { + "english_name": "Kayeli" + }, + "kzm": { + "english_name": "Kais" + }, + "kzn": { + "english_name": "Kokola" + }, + "kzo": { + "english_name": "Kaningi" + }, + "kzp": { + "english_name": "Kaidipang" + }, + "kzq": { + "english_name": "Kaike" + }, + "kzr": { + "english_name": "Karang" + }, + "kzs": { + "english_name": "Dusun, Sugut" + }, + "kzt": { + "english_name": "Dusun, Tambunan" + }, + "kzu": { + "english_name": "Kayupulau" + }, + "kzv": { + "english_name": "Komyandaret" + }, + "kzw": { + "english_name": "Karir\u00ed-Xoc\u00f3" + }, + "kzx": { + "english_name": "Kamarian" + }, + "kzy": { + "english_name": "Kango (Tshopo District)" + }, + "kzz": { + "english_name": "Kalabra" + }, + "la": { + "english_name": "Latin" + }, + "laa": { + "english_name": "Subanen, Southern" + }, + "lab": { + "english_name": "Linear A" + }, + "lac": { + "english_name": "Lacandon" + }, + "lad": { + "english_name": "Ladino" + }, + "lae": { + "english_name": "Pattani" + }, + "laf": { + "english_name": "Lafofa" + }, + "lag": { + "english_name": "Langi" + }, + "lah": { + "english_name": "Lahnda" + }, + "lai": { + "english_name": "Lambya" + }, + "laj": { + "english_name": "Lango (Uganda)" + }, + "lak": { + "english_name": "Laka (Nigeria)" + }, + "lal": { + "english_name": "Lalia" + }, + "lam": { + "english_name": "Lamba" + }, + "lan": { + "english_name": "Laru" + }, + "lap": { + "english_name": "Laka (Chad)" + }, + "laq": { + "english_name": "Qabiao" + }, + "lar": { + "english_name": "Larteh" + }, + "las": { + "english_name": "Lama (Togo)" + }, + "lau": { + "english_name": "Laba" + }, + "law": { + "english_name": "Lauje" + }, + "lax": { + "english_name": "Tiwa" + }, + "lay": { + "english_name": "Lama (Myanmar)" + }, + "laz": { + "english_name": "Aribwatsa" + }, + "lb": { + "english_name": "Luxembourgish" + }, + "lba": { + "english_name": "Lui" + }, + "lbb": { + "english_name": "Label" + }, + "lbc": { + "english_name": "Lakkia" + }, + "lbe": { + "english_name": "Lak" + }, + "lbf": { + "english_name": "Tinani" + }, + "lbg": { + "english_name": "Laopang" + }, + "lbi": { + "english_name": "La'bi" + }, + "lbj": { + "english_name": "Ladakhi" + }, + "lbk": { + "english_name": "Bontok, Central" + }, + "lbl": { + "english_name": "Bikol, Libon" + }, + "lbm": { + "english_name": "Lodhi" + }, + "lbn": { + "english_name": "Lamet" + }, + "lbo": { + "english_name": "Laven" + }, + "lbq": { + "english_name": "Wampar" + }, + "lbr": { + "english_name": "Lohorung" + }, + "lbs": { + "english_name": "Libyan Sign Language" + }, + "lbt": { + "english_name": "Lachi" + }, + "lbu": { + "english_name": "Labu" + }, + "lbv": { + "english_name": "Lavatbura-Lamusong" + }, + "lbw": { + "english_name": "Tolaki" + }, + "lbx": { + "english_name": "Lawangan" + }, + "lby": { + "english_name": "Lamu-Lamu" + }, + "lbz": { + "english_name": "Lardil" + }, + "lcc": { + "english_name": "Legenyem" + }, + "lcd": { + "english_name": "Lola" + }, + "lce": { + "english_name": "Loncong" + }, + "lcf": { + "english_name": "Lubu" + }, + "lch": { + "english_name": "Luchazi" + }, + "lcl": { + "english_name": "Lisela" + }, + "lcm": { + "english_name": "Tungag" + }, + "lcp": { + "english_name": "Lawa, Western" + }, + "lcq": { + "english_name": "Luhu" + }, + "lcs": { + "english_name": "Lisabata-Nuniali" + }, + "lda": { + "english_name": "Kla-Dan" + }, + "ldb": { + "english_name": "Du\u0303ya" + }, + "ldd": { + "english_name": "Luri" + }, + "ldg": { + "english_name": "Lenyima" + }, + "ldh": { + "english_name": "Lamja-Dengsa-Tola" + }, + "ldi": { + "english_name": "Laari" + }, + "ldj": { + "english_name": "Lemoro" + }, + "ldk": { + "english_name": "Leelau" + }, + "ldl": { + "english_name": "Kaan" + }, + "ldm": { + "english_name": "Landoma" + }, + "ldn": { + "english_name": "L\u00e1adan" + }, + "ldo": { + "english_name": "Loo" + }, + "ldp": { + "english_name": "Tso" + }, + "ldq": { + "english_name": "Lufu" + }, + "lea": { + "english_name": "Lega-Shabunda" + }, + "leb": { + "english_name": "Lala-Bisa" + }, + "lec": { + "english_name": "Leco" + }, + "led": { + "english_name": "Lendu" + }, + "lee": { + "english_name": "Ly\u00e9l\u00e9" + }, + "lef": { + "english_name": "Lelemi" + }, + "leh": { + "english_name": "Lenje" + }, + "lei": { + "english_name": "Lemio" + }, + "lej": { + "english_name": "Lengola" + }, + "lek": { + "english_name": "Leipon" + }, + "lel": { + "english_name": "Lele (Democratic Republic of Congo)" + }, + "lem": { + "english_name": "Nomaande" + }, + "len": { + "english_name": "Lenca" + }, + "leo": { + "english_name": "Leti (Cameroon)" + }, + "lep": { + "english_name": "Lepcha" + }, + "leq": { + "english_name": "Lembena" + }, + "ler": { + "english_name": "Lenkau" + }, + "les": { + "english_name": "Lese" + }, + "let": { + "english_name": "Lesing-Gelimi" + }, + "leu": { + "english_name": "Kara (Papua New Guinea)" + }, + "lev": { + "english_name": "Lamma" + }, + "lew": { + "english_name": "Kaili, Ledo" + }, + "lex": { + "english_name": "Luang" + }, + "ley": { + "english_name": "Lemolang" + }, + "lez": { + "english_name": "Lezghian" + }, + "lfa": { + "english_name": "Lefa" + }, + "lfn": { + "english_name": "Lingua Franca Nova" + }, + "lg": { + "english_name": "Ganda" + }, + "lga": { + "english_name": "Lungga" + }, + "lgb": { + "english_name": "Laghu" + }, + "lgg": { + "english_name": "Lugbara" + }, + "lgh": { + "english_name": "Laghuu" + }, + "lgi": { + "english_name": "Lengilu" + }, + "lgk": { + "english_name": "Lingarak" + }, + "lgl": { + "english_name": "Wala" + }, + "lgm": { + "english_name": "Lega-Mwenga" + }, + "lgn": { + "english_name": "Opuuo" + }, + "lgq": { + "english_name": "Logba" + }, + "lgr": { + "english_name": "Lengo" + }, + "lgt": { + "english_name": "Pahi" + }, + "lgu": { + "english_name": "Longgu" + }, + "lgz": { + "english_name": "Ligenza" + }, + "lha": { + "english_name": "Laha (Viet Nam)" + }, + "lhh": { + "english_name": "Laha (Indonesia)" + }, + "lhi": { + "english_name": "Lahu Shi" + }, + "lhl": { + "english_name": "Lohar, Lahul" + }, + "lhm": { + "english_name": "Lhomi" + }, + "lhn": { + "english_name": "Lahanan" + }, + "lhp": { + "english_name": "Lhokpu" + }, + "lhs": { + "english_name": "Mlahs\u00f6" + }, + "lht": { + "english_name": "Lo-Toga" + }, + "lhu": { + "english_name": "Lahu" + }, + "li": { + "english_name": "Limburgan" + }, + "lia": { + "english_name": "Limba, West-Central" + }, + "lib": { + "english_name": "Likum" + }, + "lic": { + "english_name": "Hlai" + }, + "lid": { + "english_name": "Nyindrou" + }, + "lie": { + "english_name": "Likila" + }, + "lif": { + "english_name": "Limbu" + }, + "lig": { + "english_name": "Ligbi" + }, + "lih": { + "english_name": "Lihir" + }, + "lij": { + "english_name": "Ligurian" + }, + "lik": { + "english_name": "Lika" + }, + "lil": { + "english_name": "Lillooet" + }, + "lio": { + "english_name": "Liki" + }, + "lip": { + "english_name": "Sekpele" + }, + "liq": { + "english_name": "Libido" + }, + "lir": { + "english_name": "English, Liberian" + }, + "lis": { + "english_name": "Lisu" + }, + "liu": { + "english_name": "Logorik" + }, + "liv": { + "english_name": "Liv" + }, + "liw": { + "english_name": "Col" + }, + "lix": { + "english_name": "Liabuku" + }, + "liy": { + "english_name": "Banda-Bambari" + }, + "liz": { + "english_name": "Libinza" + }, + "lja": { + "english_name": "Golpa" + }, + "lje": { + "english_name": "Rampi" + }, + "lji": { + "english_name": "Laiyolo" + }, + "ljl": { + "english_name": "Li'o" + }, + "ljp": { + "english_name": "Lampung Api" + }, + "ljw": { + "english_name": "Yirandali" + }, + "ljx": { + "english_name": "Yuru" + }, + "lka": { + "english_name": "Lakalei" + }, + "lkb": { + "english_name": "Kabras" + }, + "lkc": { + "english_name": "Kucong" + }, + "lkd": { + "english_name": "Lakond\u00ea" + }, + "lke": { + "english_name": "Kenyi" + }, + "lkh": { + "english_name": "Lakha" + }, + "lki": { + "english_name": "Laki" + }, + "lkj": { + "english_name": "Remun" + }, + "lkl": { + "english_name": "Laeko-Libuat" + }, + "lkm": { + "english_name": "Kalaamaya" + }, + "lkn": { + "english_name": "Lakon" + }, + "lko": { + "english_name": "Khayo" + }, + "lkr": { + "english_name": "P\u00e4ri" + }, + "lks": { + "english_name": "Kisa" + }, + "lkt": { + "english_name": "Lakota" + }, + "lku": { + "english_name": "Kungkari" + }, + "lky": { + "english_name": "Lokoya" + }, + "lla": { + "english_name": "Lala-Roba" + }, + "llb": { + "english_name": "Lolo" + }, + "llc": { + "english_name": "Lele (Guinea)" + }, + "lld": { + "english_name": "Ladin" + }, + "lle": { + "english_name": "Lele (Papua New Guinea)" + }, + "llf": { + "english_name": "Hermit" + }, + "llg": { + "english_name": "Lole" + }, + "llh": { + "english_name": "Lamu" + }, + "lli": { + "english_name": "Teke-Laali" + }, + "llj": { + "english_name": "Ladji Ladji" + }, + "llk": { + "english_name": "Lelak" + }, + "lll": { + "english_name": "Lilau" + }, + "llm": { + "english_name": "Lasalimu" + }, + "lln": { + "english_name": "Lele (Chad)" + }, + "llo": { + "english_name": "Khlor" + }, + "llp": { + "english_name": "Efate, North" + }, + "llq": { + "english_name": "Lolak" + }, + "lls": { + "english_name": "Lithuanian Sign Language" + }, + "llu": { + "english_name": "Lau" + }, + "llx": { + "english_name": "Lauan" + }, + "lma": { + "english_name": "Limba, East" + }, + "lmb": { + "english_name": "Merei" + }, + "lmc": { + "english_name": "Limilngan" + }, + "lmd": { + "english_name": "Lumun" + }, + "lme": { + "english_name": "P\u00e9v\u00e9" + }, + "lmf": { + "english_name": "Lembata, South" + }, + "lmg": { + "english_name": "Lamogai" + }, + "lmh": { + "english_name": "Lambichhong" + }, + "lmi": { + "english_name": "Lombi" + }, + "lmj": { + "english_name": "Lembata, West" + }, + "lmk": { + "english_name": "Lamkang" + }, + "lml": { + "english_name": "Hano" + }, + "lmn": { + "english_name": "Lambadi" + }, + "lmo": { + "english_name": "Lombard" + }, + "lmp": { + "english_name": "Limbum" + }, + "lmq": { + "english_name": "Lamatuka" + }, + "lmr": { + "english_name": "Lamalera" + }, + "lmu": { + "english_name": "Lamenu" + }, + "lmv": { + "english_name": "Lomaiviti" + }, + "lmw": { + "english_name": "Miwok, Lake" + }, + "lmx": { + "english_name": "Laimbue" + }, + "lmy": { + "english_name": "Lamboya" + }, + "lmz": { + "english_name": "Lumbee" + }, + "ln": { + "english_name": "Lingala" + }, + "lna": { + "english_name": "Langbashe" + }, + "lnb": { + "english_name": "Mbalanhu" + }, + "lnd": { + "english_name": "Lundayeh" + }, + "lng": { + "english_name": "Langobardic" + }, + "lnh": { + "english_name": "Lanoh" + }, + "lni": { + "english_name": "Daantanai'" + }, + "lnj": { + "english_name": "Leningitij" + }, + "lnl": { + "english_name": "Banda, South Central" + }, + "lnm": { + "english_name": "Langam" + }, + "lnn": { + "english_name": "Lorediakarkar" + }, + "lno": { + "english_name": "Lango (Sudan)" + }, + "lns": { + "english_name": "Lamnso'" + }, + "lnu": { + "english_name": "Longuda" + }, + "lnw": { + "english_name": "Lanima" + }, + "lnz": { + "english_name": "Lonzo" + }, + "lo": { + "english_name": "Lao" + }, + "loa": { + "english_name": "Loloda" + }, + "lob": { + "english_name": "Lobi" + }, + "loc": { + "english_name": "Inonhan" + }, + "loe": { + "english_name": "Saluan" + }, + "lof": { + "english_name": "Logol" + }, + "log": { + "english_name": "Logo" + }, + "loh": { + "english_name": "Narim" + }, + "loi": { + "english_name": "Loma (C\u00f4te d'Ivoire)" + }, + "loj": { + "english_name": "Lou" + }, + "lok": { + "english_name": "Loko" + }, + "lol": { + "english_name": "Mongo" + }, + "lom": { + "english_name": "Loma (Liberia)" + }, + "lon": { + "english_name": "Lomwe, Malawi" + }, + "loo": { + "english_name": "Lombo" + }, + "lop": { + "english_name": "Lopa" + }, + "loq": { + "english_name": "Lobala" + }, + "lor": { + "english_name": "T\u00e9\u00e9n" + }, + "los": { + "english_name": "Loniu" + }, + "lot": { + "english_name": "Otuho" + }, + "lou": { + "english_name": "Creole French, Louisiana" + }, + "lov": { + "english_name": "Lopi" + }, + "low": { + "english_name": "Lobu, Tampias" + }, + "lox": { + "english_name": "Loun" + }, + "loy": { + "english_name": "Loke" + }, + "loz": { + "english_name": "Lozi" + }, + "lpa": { + "english_name": "Lelepa" + }, + "lpe": { + "english_name": "Lepki" + }, + "lpn": { + "english_name": "Naga, Long Phuri" + }, + "lpo": { + "english_name": "Lipo" + }, + "lpx": { + "english_name": "Lopit" + }, + "lra": { + "english_name": "Rara Bakati'" + }, + "lrc": { + "english_name": "Luri, Northern" + }, + "lre": { + "english_name": "Laurentian" + }, + "lrg": { + "english_name": "Laragia" + }, + "lri": { + "english_name": "Marachi" + }, + "lrk": { + "english_name": "Loarki" + }, + "lrl": { + "english_name": "Lari" + }, + "lrm": { + "english_name": "Marama" + }, + "lrn": { + "english_name": "Lorang" + }, + "lro": { + "english_name": "Laro" + }, + "lrr": { + "english_name": "Yamphu, Southern" + }, + "lrt": { + "english_name": "Malay, Larantuka" + }, + "lrv": { + "english_name": "Larevat" + }, + "lrz": { + "english_name": "Lemerig" + }, + "lsa": { + "english_name": "Lasgerdi" + }, + "lsd": { + "english_name": "Lishana Deni" + }, + "lse": { + "english_name": "Lusengo" + }, + "lsg": { + "english_name": "Lyons Sign Language" + }, + "lsh": { + "english_name": "Lish" + }, + "lsi": { + "english_name": "Lashi" + }, + "lsl": { + "english_name": "Latvian Sign Language" + }, + "lsm": { + "english_name": "Saamia" + }, + "lso": { + "english_name": "Laos Sign Language" + }, + "lsp": { + "english_name": "Panamanian Sign Language" + }, + "lsr": { + "english_name": "Aruop" + }, + "lss": { + "english_name": "Lasi" + }, + "lst": { + "english_name": "Trinidad and Tobago Sign Language" + }, + "lsy": { + "english_name": "Mauritian Sign Language" + }, + "lt": { + "english_name": "Lithuanian", + "name": "Lietuvi\u0173" + }, + "ltc": { + "english_name": "Chinese, Late Middle" + }, + "ltg": { + "english_name": "Latgalian" + }, + "lti": { + "english_name": "Leti (Indonesia)" + }, + "ltn": { + "english_name": "Latund\u00ea" + }, + "lto": { + "english_name": "Tsotso" + }, + "lts": { + "english_name": "Tachoni" + }, + "ltu": { + "english_name": "Latu" + }, + "lu": { + "english_name": "Luba-Katanga" + }, + "lua": { + "english_name": "Luba-Lulua" + }, + "luc": { + "english_name": "Aringa" + }, + "lud": { + "english_name": "Ludian" + }, + "lue": { + "english_name": "Luvale" + }, + "luf": { + "english_name": "Laua" + }, + "lui": { + "english_name": "Luiseno" + }, + "luj": { + "english_name": "Luna" + }, + "luk": { + "english_name": "Lunanakha" + }, + "lul": { + "english_name": "Olu'bo" + }, + "lum": { + "english_name": "Luimbi" + }, + "lun": { + "english_name": "Lunda" + }, + "luo": { + "english_name": "Luo (Kenya and Tanzania)" + }, + "lup": { + "english_name": "Lumbu" + }, + "luq": { + "english_name": "Lucumi" + }, + "lur": { + "english_name": "Laura" + }, + "lus": { + "english_name": "Lushai" + }, + "lut": { + "english_name": "Lushootseed" + }, + "luu": { + "english_name": "Lumba-Yakkha" + }, + "luv": { + "english_name": "Luwati" + }, + "luw": { + "english_name": "Luo (Cameroon)" + }, + "luy": { + "english_name": "Luyia" + }, + "luz": { + "english_name": "Luri, Southern" + }, + "lv": { + "english_name": "Latvian", + "name": "Latvie\u0161u" + }, + "lva": { + "english_name": "Maku'a" + }, + "lvk": { + "english_name": "Lavukaleve" + }, + "lvs": { + "english_name": "Latvian, Standard" + }, + "lvu": { + "english_name": "Levuka" + }, + "lwa": { + "english_name": "Lwalu" + }, + "lwe": { + "english_name": "Lewo Eleng" + }, + "lwg": { + "english_name": "Wanga" + }, + "lwh": { + "english_name": "Lachi, White" + }, + "lwl": { + "english_name": "Lawa, Eastern" + }, + "lwm": { + "english_name": "Laomian" + }, + "lwo": { + "english_name": "Luwo" + }, + "lwt": { + "english_name": "Lewotobi" + }, + "lwu": { + "english_name": "Lawu" + }, + "lww": { + "english_name": "Lewo" + }, + "lya": { + "english_name": "Layakha" + }, + "lyg": { + "english_name": "Lyngngam" + }, + "lyn": { + "english_name": "Luyana" + }, + "lzh": { + "english_name": "Chinese, Literary" + }, + "lzl": { + "english_name": "Litzlitz" + }, + "lzn": { + "english_name": "Naga, Leinong" + }, + "lzz": { + "english_name": "Laz" + }, + "maa": { + "english_name": "Mazatec, San Jer\u00f3nimo Tec\u00f3atl" + }, + "mab": { + "english_name": "Mixtec, Yutanduchi" + }, + "mad": { + "english_name": "Madurese" + }, + "mae": { + "english_name": "Bo-Rukul" + }, + "maf": { + "english_name": "Mafa" + }, + "mag": { + "english_name": "Magahi" + }, + "mai": { + "english_name": "Maithili" + }, + "maj": { + "english_name": "Mazatec, Jalapa De D\u00edaz" + }, + "mak": { + "english_name": "Makasar" + }, + "mam": { + "english_name": "Mam" + }, + "man": { + "english_name": "Mandingo" + }, + "maq": { + "english_name": "Mazatec, Chiquihuitl\u00e1n" + }, + "mas": { + "english_name": "Masai" + }, + "mat": { + "english_name": "Matlatzinca, San Francisco" + }, + "mau": { + "english_name": "Mazatec, Huautla" + }, + "mav": { + "english_name": "Sater\u00e9-Maw\u00e9" + }, + "maw": { + "english_name": "Mampruli" + }, + "max": { + "english_name": "Malay, North Moluccan" + }, + "maz": { + "english_name": "Mazahua, Central" + }, + "mba": { + "english_name": "Higaonon" + }, + "mbb": { + "english_name": "Manobo, Western Bukidnon" + }, + "mbc": { + "english_name": "Macushi" + }, + "mbd": { + "english_name": "Manobo, Dibabawon" + }, + "mbe": { + "english_name": "Molale" + }, + "mbf": { + "english_name": "Malay, Baba" + }, + "mbh": { + "english_name": "Mangseng" + }, + "mbi": { + "english_name": "Manobo, Ilianen" + }, + "mbj": { + "english_name": "Nad\u00ebb" + }, + "mbk": { + "english_name": "Malol" + }, + "mbl": { + "english_name": "Maxakal\u00ed" + }, + "mbm": { + "english_name": "Ombamba" + }, + "mbn": { + "english_name": "Macagu\u00e1n" + }, + "mbo": { + "english_name": "Mbo (Cameroon)" + }, + "mbp": { + "english_name": "Malayo" + }, + "mbq": { + "english_name": "Maisin" + }, + "mbr": { + "english_name": "Nukak Mak\u00fa" + }, + "mbs": { + "english_name": "Manobo, Sarangani" + }, + "mbt": { + "english_name": "Manobo, Matigsalug" + }, + "mbu": { + "english_name": "Mbula-Bwazza" + }, + "mbv": { + "english_name": "Mbulungish" + }, + "mbw": { + "english_name": "Maring" + }, + "mbx": { + "english_name": "Mari (East Sepik Province)" + }, + "mby": { + "english_name": "Memoni" + }, + "mbz": { + "english_name": "Mixtec, Amoltepec" + }, + "mca": { + "english_name": "Maca" + }, + "mcb": { + "english_name": "Machiguenga" + }, + "mcc": { + "english_name": "Bitur" + }, + "mcd": { + "english_name": "Sharanahua" + }, + "mce": { + "english_name": "Mixtec, Itundujia" + }, + "mcf": { + "english_name": "Mats\u00e9s" + }, + "mcg": { + "english_name": "Mapoyo" + }, + "mch": { + "english_name": "Maquiritari" + }, + "mci": { + "english_name": "Mese" + }, + "mcj": { + "english_name": "Mvanip" + }, + "mck": { + "english_name": "Mbunda" + }, + "mcl": { + "english_name": "Macaguaje" + }, + "mcm": { + "english_name": "Creole Portuguese, Malaccan" + }, + "mcn": { + "english_name": "Masana" + }, + "mco": { + "english_name": "Mixe, Coatl\u00e1n" + }, + "mcp": { + "english_name": "Makaa" + }, + "mcq": { + "english_name": "Ese" + }, + "mcr": { + "english_name": "Menya" + }, + "mcs": { + "english_name": "Mambai" + }, + "mct": { + "english_name": "Mengisa" + }, + "mcu": { + "english_name": "Mambila, Cameroon" + }, + "mcv": { + "english_name": "Minanibai" + }, + "mcw": { + "english_name": "Mawa (Chad)" + }, + "mcx": { + "english_name": "Mpiemo" + }, + "mcy": { + "english_name": "Watut, South" + }, + "mcz": { + "english_name": "Mawan" + }, + "mda": { + "english_name": "Mada (Nigeria)" + }, + "mdb": { + "english_name": "Morigi" + }, + "mdc": { + "english_name": "Male (Papua New Guinea)" + }, + "mdd": { + "english_name": "Mbum" + }, + "mde": { + "english_name": "Maba (Chad)" + }, + "mdf": { + "english_name": "Moksha" + }, + "mdg": { + "english_name": "Massalat" + }, + "mdh": { + "english_name": "Maguindanaon" + }, + "mdi": { + "english_name": "Mamvu" + }, + "mdj": { + "english_name": "Mangbetu" + }, + "mdk": { + "english_name": "Mangbutu" + }, + "mdl": { + "english_name": "Maltese Sign Language" + }, + "mdm": { + "english_name": "Mayogo" + }, + "mdn": { + "english_name": "Mbati" + }, + "mdp": { + "english_name": "Mbala" + }, + "mdq": { + "english_name": "Mbole" + }, + "mdr": { + "english_name": "Mandar" + }, + "mds": { + "english_name": "Maria (Papua New Guinea)" + }, + "mdt": { + "english_name": "Mbere" + }, + "mdu": { + "english_name": "Mboko" + }, + "mdv": { + "english_name": "Mixtec, Santa Luc\u00eda Monteverde" + }, + "mdw": { + "english_name": "Mbosi" + }, + "mdx": { + "english_name": "Dizin" + }, + "mdy": { + "english_name": "Male (Ethiopia)" + }, + "mdz": { + "english_name": "Suru\u00ed Do Par\u00e1" + }, + "mea": { + "english_name": "Menka" + }, + "meb": { + "english_name": "Ikobi" + }, + "mec": { + "english_name": "Mara" + }, + "med": { + "english_name": "Melpa" + }, + "mee": { + "english_name": "Mengen" + }, + "mef": { + "english_name": "Megam" + }, + "meh": { + "english_name": "Mixtec, Southwestern Tlaxiaco" + }, + "mei": { + "english_name": "Midob" + }, + "mej": { + "english_name": "Meyah" + }, + "mek": { + "english_name": "Mekeo" + }, + "mel": { + "english_name": "Melanau, Central" + }, + "mem": { + "english_name": "Mangala" + }, + "men": { + "english_name": "Mende (Sierra Leone)" + }, + "meo": { + "english_name": "Malay, Kedah" + }, + "mep": { + "english_name": "Miriwung" + }, + "meq": { + "english_name": "Merey" + }, + "mer": { + "english_name": "Meru" + }, + "mes": { + "english_name": "Masmaje" + }, + "met": { + "english_name": "Mato" + }, + "meu": { + "english_name": "Motu" + }, + "mev": { + "english_name": "Mano" + }, + "mew": { + "english_name": "Maaka" + }, + "mey": { + "english_name": "Hassaniyya" + }, + "mez": { + "english_name": "Menominee" + }, + "mfa": { + "english_name": "Malay, Pattani" + }, + "mfb": { + "english_name": "Bangka" + }, + "mfc": { + "english_name": "Mba" + }, + "mfd": { + "english_name": "Mendankwe-Nkwen" + }, + "mfe": { + "english_name": "Morisyen" + }, + "mff": { + "english_name": "Naki" + }, + "mfg": { + "english_name": "Mogofin" + }, + "mfh": { + "english_name": "Matal" + }, + "mfi": { + "english_name": "Wandala" + }, + "mfj": { + "english_name": "Mefele" + }, + "mfk": { + "english_name": "Mofu, North" + }, + "mfl": { + "english_name": "Putai" + }, + "mfm": { + "english_name": "Marghi South" + }, + "mfn": { + "english_name": "Mbembe, Cross River" + }, + "mfo": { + "english_name": "Mbe" + }, + "mfp": { + "english_name": "Malay, Makassar" + }, + "mfq": { + "english_name": "Moba" + }, + "mfr": { + "english_name": "Marithiel" + }, + "mfs": { + "english_name": "Mexican Sign Language" + }, + "mft": { + "english_name": "Mokerang" + }, + "mfu": { + "english_name": "Mbwela" + }, + "mfv": { + "english_name": "Mandjak" + }, + "mfw": { + "english_name": "Mulaha" + }, + "mfx": { + "english_name": "Melo" + }, + "mfy": { + "english_name": "Mayo" + }, + "mfz": { + "english_name": "Mabaan" + }, + "mg": { + "english_name": "Malagasy" + }, + "mga": { + "english_name": "Irish, Middle (900-1200)" + }, + "mgb": { + "english_name": "Mararit" + }, + "mgc": { + "english_name": "Morokodo" + }, + "mgd": { + "english_name": "Moru" + }, + "mge": { + "english_name": "Mango" + }, + "mgf": { + "english_name": "Maklew" + }, + "mgg": { + "english_name": "Mpumpong" + }, + "mgh": { + "english_name": "Makhuwa-Meetto" + }, + "mgi": { + "english_name": "Lijili" + }, + "mgj": { + "english_name": "Abureni" + }, + "mgk": { + "english_name": "Mawes" + }, + "mgl": { + "english_name": "Maleu-Kilenge" + }, + "mgm": { + "english_name": "Mambae" + }, + "mgn": { + "english_name": "Mbangi" + }, + "mgo": { + "english_name": "Meta'" + }, + "mgp": { + "english_name": "Magar, Eastern" + }, + "mgq": { + "english_name": "Malila" + }, + "mgr": { + "english_name": "Mambwe-Lungu" + }, + "mgs": { + "english_name": "Manda (Tanzania)" + }, + "mgt": { + "english_name": "Mongol" + }, + "mgu": { + "english_name": "Mailu" + }, + "mgv": { + "english_name": "Matengo" + }, + "mgw": { + "english_name": "Matumbi" + }, + "mgy": { + "english_name": "Mbunga" + }, + "mgz": { + "english_name": "Mbugwe" + }, + "mh": { + "english_name": "Marshallese" + }, + "mha": { + "english_name": "Manda (India)" + }, + "mhb": { + "english_name": "Mahongwe" + }, + "mhc": { + "english_name": "Mocho" + }, + "mhd": { + "english_name": "Mbugu" + }, + "mhe": { + "english_name": "Besisi" + }, + "mhf": { + "english_name": "Mamaa" + }, + "mhg": { + "english_name": "Margu" + }, + "mhi": { + "english_name": "Ma'di" + }, + "mhj": { + "english_name": "Mogholi" + }, + "mhk": { + "english_name": "Mungaka" + }, + "mhl": { + "english_name": "Mauwake" + }, + "mhm": { + "english_name": "Makhuwa-Moniga" + }, + "mhn": { + "english_name": "M\u00f3cheno" + }, + "mho": { + "english_name": "Mashi (Zambia)" + }, + "mhp": { + "english_name": "Malay, Balinese" + }, + "mhq": { + "english_name": "Mandan" + }, + "mhr": { + "english_name": "Mari, Eastern" + }, + "mhs": { + "english_name": "Buru (Indonesia)" + }, + "mht": { + "english_name": "Mandahuaca" + }, + "mhu": { + "english_name": "Digaro-Mishmi" + }, + "mhw": { + "english_name": "Mbukushu" + }, + "mhx": { + "english_name": "Maru" + }, + "mhy": { + "english_name": "Ma'anyan" + }, + "mhz": { + "english_name": "Mor (Mor Islands)" + }, + "mi": { + "english_name": "Maori", + "name": "Reo M\u0101ori" + }, + "mia": { + "english_name": "Miami" + }, + "mib": { + "english_name": "Mixtec, Atatl\u00e1huca" + }, + "mic": { + "english_name": "Mi'kmaq" + }, + "mid": { + "english_name": "Mandaic" + }, + "mie": { + "english_name": "Mixtec, Ocotepec" + }, + "mif": { + "english_name": "Mofu-Gudur" + }, + "mig": { + "english_name": "Mixtec, San Miguel El Grande" + }, + "mih": { + "english_name": "Mixtec, Chayuco" + }, + "mii": { + "english_name": "Mixtec, Chigmecatitl\u00e1n" + }, + "mij": { + "english_name": "Abar" + }, + "mik": { + "english_name": "Mikasuki" + }, + "mil": { + "english_name": "Mixtec, Pe\u00f1oles" + }, + "mim": { + "english_name": "Mixtec, Alacatlatzala" + }, + "min": { + "english_name": "Minangkabau" + }, + "mio": { + "english_name": "Mixtec, Pinotepa Nacional" + }, + "mip": { + "english_name": "Mixtec, Apasco-Apoala" + }, + "miq": { + "english_name": "M\u00edskito" + }, + "mir": { + "english_name": "Mixe, Isthmus" + }, + "mis": { + "english_name": "Uncoded languages" + }, + "mit": { + "english_name": "Mixtec, Southern Puebla" + }, + "miu": { + "english_name": "Mixtec, Cacaloxtepec" + }, + "miw": { + "english_name": "Akoye" + }, + "mix": { + "english_name": "Mixtec, Mixtepec" + }, + "miy": { + "english_name": "Mixtec, Ayutla" + }, + "miz": { + "english_name": "Mixtec, Coatzospan" + }, + "mjc": { + "english_name": "Mixtec, San Juan Colorado" + }, + "mjd": { + "english_name": "Maidu, Northwest" + }, + "mje": { + "english_name": "Muskum" + }, + "mjg": { + "english_name": "Tu" + }, + "mjh": { + "english_name": "Mwera (Nyasa)" + }, + "mji": { + "english_name": "Kim Mun" + }, + "mjj": { + "english_name": "Mawak" + }, + "mjk": { + "english_name": "Matukar" + }, + "mjl": { + "english_name": "Mandeali" + }, + "mjm": { + "english_name": "Medebur" + }, + "mjn": { + "english_name": "Ma (Papua New Guinea)" + }, + "mjo": { + "english_name": "Malankuravan" + }, + "mjp": { + "english_name": "Malapandaram" + }, + "mjq": { + "english_name": "Malaryan" + }, + "mjr": { + "english_name": "Malavedan" + }, + "mjs": { + "english_name": "Miship" + }, + "mjt": { + "english_name": "Sauria Paharia" + }, + "mju": { + "english_name": "Manna-Dora" + }, + "mjv": { + "english_name": "Mannan" + }, + "mjw": { + "english_name": "Karbi" + }, + "mjx": { + "english_name": "Mahali" + }, + "mjy": { + "english_name": "Mahican" + }, + "mjz": { + "english_name": "Majhi" + }, + "mk": { + "english_name": "Macedonian", + "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438" + }, + "mka": { + "english_name": "Mbre" + }, + "mkb": { + "english_name": "Mal Paharia" + }, + "mkc": { + "english_name": "Siliput" + }, + "mke": { + "english_name": "Mawchi" + }, + "mkf": { + "english_name": "Miya" + }, + "mkg": { + "english_name": "Mak (China)" + }, + "mki": { + "english_name": "Dhatki" + }, + "mkj": { + "english_name": "Mokilese" + }, + "mkk": { + "english_name": "Byep" + }, + "mkl": { + "english_name": "Mokole" + }, + "mkm": { + "english_name": "Moklen" + }, + "mkn": { + "english_name": "Malay, Kupang" + }, + "mko": { + "english_name": "Mingang Doso" + }, + "mkp": { + "english_name": "Moikodi" + }, + "mkq": { + "english_name": "Miwok, Bay" + }, + "mkr": { + "english_name": "Malas" + }, + "mks": { + "english_name": "Mixtec, Silacayoapan" + }, + "mkt": { + "english_name": "Vamale" + }, + "mku": { + "english_name": "Maninka, Konyanka" + }, + "mkv": { + "english_name": "Mafea" + }, + "mkw": { + "english_name": "Kituba (Congo)" + }, + "mkx": { + "english_name": "Manobo, Kinamiging" + }, + "mky": { + "english_name": "Makian, East" + }, + "mkz": { + "english_name": "Makasae" + }, + "ml": { + "english_name": "Malayalam" + }, + "mla": { + "english_name": "Malo" + }, + "mlb": { + "english_name": "Mbule" + }, + "mlc": { + "english_name": "Cao Lan" + }, + "mle": { + "english_name": "Manambu" + }, + "mlf": { + "english_name": "Mal" + }, + "mlh": { + "english_name": "Mape" + }, + "mli": { + "english_name": "Malimpung" + }, + "mlj": { + "english_name": "Miltu" + }, + "mlk": { + "english_name": "Ilwana" + }, + "mll": { + "english_name": "Malua Bay" + }, + "mlm": { + "english_name": "Mulam" + }, + "mln": { + "english_name": "Malango" + }, + "mlo": { + "english_name": "Mlomp" + }, + "mlp": { + "english_name": "Bargam" + }, + "mlq": { + "english_name": "Maninkakan, Western" + }, + "mlr": { + "english_name": "Vame" + }, + "mls": { + "english_name": "Masalit" + }, + "mlu": { + "english_name": "To'abaita" + }, + "mlv": { + "english_name": "Motlav" + }, + "mlw": { + "english_name": "Moloko" + }, + "mlx": { + "english_name": "Malfaxal" + }, + "mlz": { + "english_name": "Malaynon" + }, + "mma": { + "english_name": "Mama" + }, + "mmb": { + "english_name": "Momina" + }, + "mmc": { + "english_name": "Mazahua, Michoac\u00e1n" + }, + "mmd": { + "english_name": "Maonan" + }, + "mme": { + "english_name": "Mae" + }, + "mmf": { + "english_name": "Mundat" + }, + "mmg": { + "english_name": "Ambrym, North" + }, + "mmh": { + "english_name": "Mehin\u00e1ku" + }, + "mmi": { + "english_name": "Musar" + }, + "mmj": { + "english_name": "Majhwar" + }, + "mmk": { + "english_name": "Mukha-Dora" + }, + "mml": { + "english_name": "Man Met" + }, + "mmm": { + "english_name": "Maii" + }, + "mmn": { + "english_name": "Mamanwa" + }, + "mmo": { + "english_name": "Buang, Mangga" + }, + "mmp": { + "english_name": "Siawi" + }, + "mmq": { + "english_name": "Musak" + }, + "mmr": { + "english_name": "Miao, Western Xiangxi" + }, + "mmt": { + "english_name": "Malalamai" + }, + "mmu": { + "english_name": "Mmaala" + }, + "mmv": { + "english_name": "Miriti" + }, + "mmw": { + "english_name": "Emae" + }, + "mmx": { + "english_name": "Madak" + }, + "mmy": { + "english_name": "Migaama" + }, + "mmz": { + "english_name": "Mabaale" + }, + "mn": { + "english_name": "Mongolian", + "name": "\u041c\u043e\u043d\u0433\u043e\u043b" + }, + "mna": { + "english_name": "Mbula" + }, + "mnb": { + "english_name": "Muna" + }, + "mnc": { + "english_name": "Manchu" + }, + "mnd": { + "english_name": "Mond\u00e9" + }, + "mne": { + "english_name": "Naba" + }, + "mnf": { + "english_name": "Mundani" + }, + "mng": { + "english_name": "Mnong, Eastern" + }, + "mnh": { + "english_name": "Mono (Democratic Republic of Congo)" + }, + "mni": { + "english_name": "Manipuri" + }, + "mnj": { + "english_name": "Munji" + }, + "mnk": { + "english_name": "Mandinka" + }, + "mnl": { + "english_name": "Tiale" + }, + "mnm": { + "english_name": "Mapena" + }, + "mnn": { + "english_name": "Mnong, Southern" + }, + "mnp": { + "english_name": "Chinese, Min Bei" + }, + "mnq": { + "english_name": "Minriq" + }, + "mnr": { + "english_name": "Mono (USA)" + }, + "mns": { + "english_name": "Mansi" + }, + "mnu": { + "english_name": "Mer" + }, + "mnv": { + "english_name": "Rennell-Bellona" + }, + "mnw": { + "english_name": "Mon" + }, + "mnx": { + "english_name": "Manikion" + }, + "mny": { + "english_name": "Manyawa" + }, + "mnz": { + "english_name": "Moni" + }, + "moa": { + "english_name": "Mwan" + }, + "moc": { + "english_name": "Mocov\u00ed" + }, + "mod": { + "english_name": "Mobilian" + }, + "moe": { + "english_name": "Montagnais" + }, + "mog": { + "english_name": "Mongondow" + }, + "moh": { + "english_name": "Mohawk" + }, + "moi": { + "english_name": "Mboi" + }, + "moj": { + "english_name": "Monzombo" + }, + "mok": { + "english_name": "Morori" + }, + "mom": { + "english_name": "Mangue" + }, + "moo": { + "english_name": "Monom" + }, + "mop": { + "english_name": "Mop\u00e1n Maya" + }, + "moq": { + "english_name": "Mor (Bomberai Peninsula)" + }, + "mor": { + "english_name": "Moro" + }, + "mos": { + "english_name": "Mossi" + }, + "mot": { + "english_name": "Bar\u00ed" + }, + "mou": { + "english_name": "Mogum" + }, + "mov": { + "english_name": "Mohave" + }, + "mow": { + "english_name": "Moi (Congo)" + }, + "mox": { + "english_name": "Molima" + }, + "moy": { + "english_name": "Shekkacho" + }, + "moz": { + "english_name": "Mukulu" + }, + "mpa": { + "english_name": "Mpoto" + }, + "mpb": { + "english_name": "Mullukmulluk" + }, + "mpc": { + "english_name": "Mangarayi" + }, + "mpd": { + "english_name": "Machinere" + }, + "mpe": { + "english_name": "Majang" + }, + "mpg": { + "english_name": "Marba" + }, + "mph": { + "english_name": "Maung" + }, + "mpi": { + "english_name": "Mpade" + }, + "mpj": { + "english_name": "Martu Wangka" + }, + "mpk": { + "english_name": "Mbara (Chad)" + }, + "mpl": { + "english_name": "Watut, Middle" + }, + "mpm": { + "english_name": "Mixtec, Yosond\u00faa" + }, + "mpn": { + "english_name": "Mindiri" + }, + "mpo": { + "english_name": "Miu" + }, + "mpp": { + "english_name": "Migabac" + }, + "mpq": { + "english_name": "Mat\u00eds" + }, + "mpr": { + "english_name": "Vangunu" + }, + "mps": { + "english_name": "Dadibi" + }, + "mpt": { + "english_name": "Mian" + }, + "mpu": { + "english_name": "Makur\u00e1p" + }, + "mpv": { + "english_name": "Mungkip" + }, + "mpw": { + "english_name": "Mapidian" + }, + "mpx": { + "english_name": "Misima-Panaeati" + }, + "mpy": { + "english_name": "Mapia" + }, + "mpz": { + "english_name": "Mpi" + }, + "mqa": { + "english_name": "Maba (Indonesia)" + }, + "mqb": { + "english_name": "Mbuko" + }, + "mqc": { + "english_name": "Mangole" + }, + "mqe": { + "english_name": "Matepi" + }, + "mqf": { + "english_name": "Momuna" + }, + "mqg": { + "english_name": "Malay, Kota Bangun Kutai" + }, + "mqh": { + "english_name": "Mixtec, Tlazoyaltepec" + }, + "mqi": { + "english_name": "Mariri" + }, + "mqj": { + "english_name": "Mamasa" + }, + "mqk": { + "english_name": "Manobo, Rajah Kabunsuwan" + }, + "mql": { + "english_name": "Mbelime" + }, + "mqm": { + "english_name": "Marquesan, South" + }, + "mqn": { + "english_name": "Moronene" + }, + "mqo": { + "english_name": "Modole" + }, + "mqp": { + "english_name": "Manipa" + }, + "mqq": { + "english_name": "Minokok" + }, + "mqr": { + "english_name": "Mander" + }, + "mqs": { + "english_name": "Makian, West" + }, + "mqt": { + "english_name": "Mok" + }, + "mqu": { + "english_name": "Mandari" + }, + "mqv": { + "english_name": "Mosimo" + }, + "mqw": { + "english_name": "Murupi" + }, + "mqx": { + "english_name": "Mamuju" + }, + "mqy": { + "english_name": "Manggarai" + }, + "mqz": { + "english_name": "Pano" + }, + "mr": { + "english_name": "Marathi", + "name": "\u092e\u0930\u093e\u0920\u0940" + }, + "mra": { + "english_name": "Mlabri" + }, + "mrb": { + "english_name": "Marino" + }, + "mrc": { + "english_name": "Maricopa" + }, + "mrd": { + "english_name": "Magar, Western" + }, + "mre": { + "english_name": "Martha's Vineyard Sign Language" + }, + "mrf": { + "english_name": "Elseng" + }, + "mrg": { + "english_name": "Mising" + }, + "mrh": { + "english_name": "Chin, Mara" + }, + "mrj": { + "english_name": "Mari, Western" + }, + "mrk": { + "english_name": "Hmwaveke" + }, + "mrl": { + "english_name": "Mortlockese" + }, + "mrm": { + "english_name": "Merlav" + }, + "mrn": { + "english_name": "Cheke Holo" + }, + "mro": { + "english_name": "Mru" + }, + "mrp": { + "english_name": "Morouas" + }, + "mrq": { + "english_name": "Marquesan, North" + }, + "mrr": { + "english_name": "Maria (India)" + }, + "mrs": { + "english_name": "Maragus" + }, + "mrt": { + "english_name": "Marghi Central" + }, + "mru": { + "english_name": "Mono (Cameroon)" + }, + "mrv": { + "english_name": "Mangareva" + }, + "mrw": { + "english_name": "Maranao" + }, + "mrx": { + "english_name": "Maremgi" + }, + "mry": { + "english_name": "Mandaya" + }, + "mrz": { + "english_name": "Marind" + }, + "ms": { + "english_name": "Malay (macrolanguage)", + "name": "Malay (macrolanguage)" + }, + "msb": { + "english_name": "Masbatenyo" + }, + "msc": { + "english_name": "Maninka, Sankaran" + }, + "msd": { + "english_name": "Yucatec Maya Sign Language" + }, + "mse": { + "english_name": "Musey" + }, + "msf": { + "english_name": "Mekwei" + }, + "msg": { + "english_name": "Moraid" + }, + "msh": { + "english_name": "Malagasy, Masikoro" + }, + "msi": { + "english_name": "Malay, Sabah" + }, + "msj": { + "english_name": "Ma (Democratic Republic of Congo)" + }, + "msk": { + "english_name": "Mansaka" + }, + "msl": { + "english_name": "Molof" + }, + "msm": { + "english_name": "Manobo, Agusan" + }, + "msn": { + "english_name": "Vur\u00ebs" + }, + "mso": { + "english_name": "Mombum" + }, + "msp": { + "english_name": "Maritsau\u00e1" + }, + "msq": { + "english_name": "Caac" + }, + "msr": { + "english_name": "Mongolian Sign Language" + }, + "mss": { + "english_name": "Masela, West" + }, + "msu": { + "english_name": "Musom" + }, + "msv": { + "english_name": "Maslam" + }, + "msw": { + "english_name": "Mansoanka" + }, + "msx": { + "english_name": "Moresada" + }, + "msy": { + "english_name": "Aruamu" + }, + "msz": { + "english_name": "Momare" + }, + "mt": { + "english_name": "Maltese", + "name": "Malti" + }, + "mta": { + "english_name": "Manobo, Cotabato" + }, + "mtb": { + "english_name": "Anyin Morofo" + }, + "mtc": { + "english_name": "Munit" + }, + "mtd": { + "english_name": "Mualang" + }, + "mte": { + "english_name": "Mono (Solomon Islands)" + }, + "mtf": { + "english_name": "Murik (Papua New Guinea)" + }, + "mtg": { + "english_name": "Una" + }, + "mth": { + "english_name": "Munggui" + }, + "mti": { + "english_name": "Maiwa (Papua New Guinea)" + }, + "mtj": { + "english_name": "Moskona" + }, + "mtk": { + "english_name": "Mbe'" + }, + "mtl": { + "english_name": "Montol" + }, + "mtm": { + "english_name": "Mator" + }, + "mtn": { + "english_name": "Matagalpa" + }, + "mto": { + "english_name": "Mixe, Totontepec" + }, + "mtp": { + "english_name": "Wich\u00ed Lhamt\u00e9s Nocten" + }, + "mtq": { + "english_name": "Muong" + }, + "mtr": { + "english_name": "Mewari" + }, + "mts": { + "english_name": "Yora" + }, + "mtt": { + "english_name": "Mota" + }, + "mtu": { + "english_name": "Mixtec, Tututepec" + }, + "mtv": { + "english_name": "Asaro'o" + }, + "mtw": { + "english_name": "Binukidnon, Southern" + }, + "mtx": { + "english_name": "Mixtec, Tida\u00e1" + }, + "mty": { + "english_name": "Nabi" + }, + "mua": { + "english_name": "Mundang" + }, + "mub": { + "english_name": "Mubi" + }, + "muc": { + "english_name": "Ajumbu" + }, + "mud": { + "english_name": "Aleut, Mednyj" + }, + "mue": { + "english_name": "Media Lengua" + }, + "mug": { + "english_name": "Musgu" + }, + "muh": { + "english_name": "M\u00fcnd\u00fc" + }, + "mui": { + "english_name": "Musi" + }, + "muj": { + "english_name": "Mabire" + }, + "muk": { + "english_name": "Mugom" + }, + "mul": { + "english_name": "Multiple languages" + }, + "mum": { + "english_name": "Maiwala" + }, + "muo": { + "english_name": "Nyong" + }, + "mup": { + "english_name": "Malvi" + }, + "muq": { + "english_name": "Miao, Eastern Xiangxi" + }, + "mur": { + "english_name": "Murle" + }, + "mus": { + "english_name": "Creek" + }, + "mut": { + "english_name": "Muria, Western" + }, + "muu": { + "english_name": "Yaaku" + }, + "muv": { + "english_name": "Muthuvan" + }, + "mux": { + "english_name": "Bo-Ung" + }, + "muy": { + "english_name": "Muyang" + }, + "muz": { + "english_name": "Mursi" + }, + "mva": { + "english_name": "Manam" + }, + "mvb": { + "english_name": "Mattole" + }, + "mvd": { + "english_name": "Mamboru" + }, + "mve": { + "english_name": "Marwari (Pakistan)" + }, + "mvf": { + "english_name": "Mongolian, Peripheral" + }, + "mvg": { + "english_name": "Mixtec, Yucua\u00f1e" + }, + "mvh": { + "english_name": "Mulgi" + }, + "mvi": { + "english_name": "Miyako" + }, + "mvk": { + "english_name": "Mekmek" + }, + "mvl": { + "english_name": "Mbara (Australia)" + }, + "mvm": { + "english_name": "Muya" + }, + "mvn": { + "english_name": "Minaveha" + }, + "mvo": { + "english_name": "Marovo" + }, + "mvp": { + "english_name": "Duri" + }, + "mvq": { + "english_name": "Moere" + }, + "mvr": { + "english_name": "Marau" + }, + "mvs": { + "english_name": "Massep" + }, + "mvt": { + "english_name": "Mpotovoro" + }, + "mvu": { + "english_name": "Marfa" + }, + "mvv": { + "english_name": "Murut, Tagal" + }, + "mvw": { + "english_name": "Machinga" + }, + "mvx": { + "english_name": "Meoswar" + }, + "mvy": { + "english_name": "Kohistani, Indus" + }, + "mvz": { + "english_name": "Mesqan" + }, + "mwa": { + "english_name": "Mwatebu" + }, + "mwb": { + "english_name": "Juwal" + }, + "mwc": { + "english_name": "Are" + }, + "mwe": { + "english_name": "Mwera (Chimwera)" + }, + "mwf": { + "english_name": "Murrinh-Patha" + }, + "mwg": { + "english_name": "Aiklep" + }, + "mwh": { + "english_name": "Mouk-Aria" + }, + "mwi": { + "english_name": "Labo" + }, + "mwk": { + "english_name": "Maninkakan, Kita" + }, + "mwl": { + "english_name": "Mirandese" + }, + "mwm": { + "english_name": "Sar" + }, + "mwn": { + "english_name": "Nyamwanga" + }, + "mwo": { + "english_name": "Maewo, Central" + }, + "mwp": { + "english_name": "Kala Lagaw Ya" + }, + "mwq": { + "english_name": "Chin, M\u00fcn" + }, + "mwr": { + "english_name": "Marwari" + }, + "mws": { + "english_name": "Mwimbi-Muthambi" + }, + "mwt": { + "english_name": "Moken" + }, + "mwu": { + "english_name": "Mittu" + }, + "mwv": { + "english_name": "Mentawai" + }, + "mww": { + "english_name": "Hmong Daw" + }, + "mwx": { + "english_name": "Mediak" + }, + "mwy": { + "english_name": "Mosiro" + }, + "mwz": { + "english_name": "Moingi" + }, + "mxa": { + "english_name": "Mixtec, Northwest Oaxaca" + }, + "mxb": { + "english_name": "Mixtec, Tezoatl\u00e1n" + }, + "mxc": { + "english_name": "Manyika" + }, + "mxd": { + "english_name": "Modang" + }, + "mxe": { + "english_name": "Mele-Fila" + }, + "mxf": { + "english_name": "Malgbe" + }, + "mxg": { + "english_name": "Mbangala" + }, + "mxh": { + "english_name": "Mvuba" + }, + "mxi": { + "english_name": "Mozarabic" + }, + "mxj": { + "english_name": "Miju-Mishmi" + }, + "mxk": { + "english_name": "Monumbo" + }, + "mxl": { + "english_name": "Gbe, Maxi" + }, + "mxm": { + "english_name": "Meramera" + }, + "mxn": { + "english_name": "Moi (Indonesia)" + }, + "mxo": { + "english_name": "Mbowe" + }, + "mxp": { + "english_name": "Mixe, Tlahuitoltepec" + }, + "mxq": { + "english_name": "Mixe, Juquila" + }, + "mxr": { + "english_name": "Murik (Malaysia)" + }, + "mxs": { + "english_name": "Mixtec, Huitepec" + }, + "mxt": { + "english_name": "Mixtec, Jamiltepec" + }, + "mxu": { + "english_name": "Mada (Cameroon)" + }, + "mxv": { + "english_name": "Mixtec, Metlat\u00f3noc" + }, + "mxw": { + "english_name": "Namo" + }, + "mxx": { + "english_name": "Mahou" + }, + "mxy": { + "english_name": "Mixtec, Southeastern Nochixtl\u00e1n" + }, + "mxz": { + "english_name": "Masela, Central" + }, + "my": { + "english_name": "Burmese" + }, + "myb": { + "english_name": "Mbay" + }, + "myc": { + "english_name": "Mayeka" + }, + "myd": { + "english_name": "Maramba" + }, + "mye": { + "english_name": "Myene" + }, + "myf": { + "english_name": "Bambassi" + }, + "myg": { + "english_name": "Manta" + }, + "myh": { + "english_name": "Makah" + }, + "myi": { + "english_name": "Mina (India)" + }, + "myj": { + "english_name": "Mangayat" + }, + "myk": { + "english_name": "Senoufo, Mamara" + }, + "myl": { + "english_name": "Moma" + }, + "mym": { + "english_name": "Me'en" + }, + "myo": { + "english_name": "Anfillo" + }, + "myp": { + "english_name": "Pirah\u00e3" + }, + "myr": { + "english_name": "Muniche" + }, + "mys": { + "english_name": "Mesmes" + }, + "myu": { + "english_name": "Munduruk\u00fa" + }, + "myv": { + "english_name": "Erzya" + }, + "myw": { + "english_name": "Muyuw" + }, + "myx": { + "english_name": "Masaaba" + }, + "myy": { + "english_name": "Macuna" + }, + "myz": { + "english_name": "Mandaic, Classical" + }, + "mza": { + "english_name": "Mixtec, Santa Mar\u00eda Zacatepec" + }, + "mzb": { + "english_name": "Tumzabt" + }, + "mzc": { + "english_name": "Madagascar Sign Language" + }, + "mzd": { + "english_name": "Malimba" + }, + "mze": { + "english_name": "Morawa" + }, + "mzg": { + "english_name": "Monastic Sign Language" + }, + "mzh": { + "english_name": "Wich\u00ed Lhamt\u00e9s G\u00fcisnay" + }, + "mzi": { + "english_name": "Mazatec, Ixcatl\u00e1n" + }, + "mzj": { + "english_name": "Manya" + }, + "mzk": { + "english_name": "Mambila, Nigeria" + }, + "mzl": { + "english_name": "Mixe, Mazatl\u00e1n" + }, + "mzm": { + "english_name": "Mumuye" + }, + "mzn": { + "english_name": "Mazanderani" + }, + "mzo": { + "english_name": "Matipuhy" + }, + "mzp": { + "english_name": "Movima" + }, + "mzq": { + "english_name": "Mori Atas" + }, + "mzr": { + "english_name": "Mar\u00fabo" + }, + "mzs": { + "english_name": "Macanese" + }, + "mzt": { + "english_name": "Mintil" + }, + "mzu": { + "english_name": "Inapang" + }, + "mzv": { + "english_name": "Manza" + }, + "mzw": { + "english_name": "Deg" + }, + "mzx": { + "english_name": "Mawayana" + }, + "mzy": { + "english_name": "Mozambican Sign Language" + }, + "mzz": { + "english_name": "Maiadomu" + }, + "na": { + "english_name": "Nauru" + }, + "naa": { + "english_name": "Namla" + }, + "nab": { + "english_name": "Nambiku\u00e1ra, Southern" + }, + "nac": { + "english_name": "Narak" + }, + "nad": { + "english_name": "Nijadali" + }, + "nae": { + "english_name": "Naka'ela" + }, + "naf": { + "english_name": "Nabak" + }, + "nag": { + "english_name": "Naga Pidgin" + }, + "naj": { + "english_name": "Nalu" + }, + "nak": { + "english_name": "Nakanai" + }, + "nal": { + "english_name": "Nalik" + }, + "nam": { + "english_name": "Ngan'gityemerri" + }, + "nan": { + "english_name": "Chinese, Min Nan" + }, + "nao": { + "english_name": "Naaba" + }, + "nap": { + "english_name": "Neapolitan" + }, + "naq": { + "english_name": "Nama (Namibia)" + }, + "nar": { + "english_name": "Iguta" + }, + "nas": { + "english_name": "Naasioi" + }, + "nat": { + "english_name": "Hungworo" + }, + "naw": { + "english_name": "Nawuri" + }, + "nax": { + "english_name": "Nakwi" + }, + "nay": { + "english_name": "Narrinyeri" + }, + "naz": { + "english_name": "Nahuatl, Coatepec" + }, + "nb": { + "english_name": "Norwegian Bokm\u00e5l", + "name": "Norwegian Bokm\u00e5l" + }, + "nba": { + "english_name": "Nyemba" + }, + "nbb": { + "english_name": "Ndoe" + }, + "nbc": { + "english_name": "Naga, Chang" + }, + "nbd": { + "english_name": "Ngbinda" + }, + "nbe": { + "english_name": "Naga, Konyak" + }, + "nbg": { + "english_name": "Nagarchal" + }, + "nbh": { + "english_name": "Ngamo" + }, + "nbi": { + "english_name": "Naga, Mao" + }, + "nbj": { + "english_name": "Ngarinman" + }, + "nbk": { + "english_name": "Nake" + }, + "nbm": { + "english_name": "Ngbaka Ma'bo" + }, + "nbn": { + "english_name": "Kuri" + }, + "nbo": { + "english_name": "Nkukoli" + }, + "nbp": { + "english_name": "Nnam" + }, + "nbq": { + "english_name": "Nggem" + }, + "nbr": { + "english_name": "Numana-Nunku-Gbantu-Numbu" + }, + "nbs": { + "english_name": "Namibian Sign Language" + }, + "nbt": { + "english_name": "Na" + }, + "nbu": { + "english_name": "Naga, Rongmei" + }, + "nbv": { + "english_name": "Ngamambo" + }, + "nbw": { + "english_name": "Ngbandi, Southern" + }, + "nby": { + "english_name": "Ningera" + }, + "nca": { + "english_name": "Iyo" + }, + "ncb": { + "english_name": "Nicobarese, Central" + }, + "ncc": { + "english_name": "Ponam" + }, + "ncd": { + "english_name": "Nachering" + }, + "nce": { + "english_name": "Yale" + }, + "ncf": { + "english_name": "Notsi" + }, + "ncg": { + "english_name": "Nisga'a" + }, + "nch": { + "english_name": "Nahuatl, Central Huasteca" + }, + "nci": { + "english_name": "Nahuatl, Classical" + }, + "ncj": { + "english_name": "Nahuatl, Northern Puebla" + }, + "nck": { + "english_name": "Nakara" + }, + "ncl": { + "english_name": "Nahuatl, Michoac\u00e1n" + }, + "ncm": { + "english_name": "Nambo" + }, + "ncn": { + "english_name": "Nauna" + }, + "nco": { + "english_name": "Sibe" + }, + "ncp": { + "english_name": "Ndaktup" + }, + "ncr": { + "english_name": "Ncane" + }, + "ncs": { + "english_name": "Nicaraguan Sign Language" + }, + "nct": { + "english_name": "Naga, Chothe" + }, + "ncu": { + "english_name": "Chumburung" + }, + "ncx": { + "english_name": "Nahuatl, Central Puebla" + }, + "ncz": { + "english_name": "Natchez" + }, + "nd": { + "english_name": "Ndebele, North" + }, + "nda": { + "english_name": "Ndasa" + }, + "ndb": { + "english_name": "Kenswei Nsei" + }, + "ndc": { + "english_name": "Ndau" + }, + "ndd": { + "english_name": "Nde-Nsele-Nta" + }, + "ndf": { + "english_name": "Nadruvian" + }, + "ndg": { + "english_name": "Ndengereko" + }, + "ndh": { + "english_name": "Ndali" + }, + "ndi": { + "english_name": "Samba Leko" + }, + "ndj": { + "english_name": "Ndamba" + }, + "ndk": { + "english_name": "Ndaka" + }, + "ndl": { + "english_name": "Ndolo" + }, + "ndm": { + "english_name": "Ndam" + }, + "ndn": { + "english_name": "Ngundi" + }, + "ndp": { + "english_name": "Ndo" + }, + "ndq": { + "english_name": "Ndombe" + }, + "ndr": { + "english_name": "Ndoola" + }, + "nds": { + "english_name": "German, Low" + }, + "ndt": { + "english_name": "Ndunga" + }, + "ndu": { + "english_name": "Dugun" + }, + "ndv": { + "english_name": "Ndut" + }, + "ndw": { + "english_name": "Ndobo" + }, + "ndx": { + "english_name": "Nduga" + }, + "ndy": { + "english_name": "Lutos" + }, + "ndz": { + "english_name": "Ndogo" + }, + "ne": { + "english_name": "Nepali (macrolanguage)" + }, + "nea": { + "english_name": "Ngad'a, Eastern" + }, + "neb": { + "english_name": "Toura (C\u00f4te d'Ivoire)" + }, + "nec": { + "english_name": "Nedebang" + }, + "ned": { + "english_name": "Nde-Gbite" + }, + "nee": { + "english_name": "N\u00eal\u00eamwa-Nixumwak" + }, + "nef": { + "english_name": "Nefamese" + }, + "neg": { + "english_name": "Negidal" + }, + "neh": { + "english_name": "Nyenkha" + }, + "nei": { + "english_name": "Hittite, Neo-" + }, + "nej": { + "english_name": "Neko" + }, + "nek": { + "english_name": "Neku" + }, + "nem": { + "english_name": "Nemi" + }, + "nen": { + "english_name": "Nengone" + }, + "neo": { + "english_name": "N\u00e1-Meo" + }, + "neq": { + "english_name": "Mixe, North Central" + }, + "ner": { + "english_name": "Yahadian" + }, + "nes": { + "english_name": "Kinnauri, Bhoti" + }, + "net": { + "english_name": "Nete" + }, + "neu": { + "english_name": "Neo" + }, + "nev": { + "english_name": "Nyaheun" + }, + "new": { + "english_name": "Newari" + }, + "nex": { + "english_name": "Neme" + }, + "ney": { + "english_name": "Neyo" + }, + "nez": { + "english_name": "Nez Perce" + }, + "nfa": { + "english_name": "Dhao" + }, + "nfd": { + "english_name": "Ahwai" + }, + "nfl": { + "english_name": "Ayiwo" + }, + "nfr": { + "english_name": "Nafaanra" + }, + "nfu": { + "english_name": "Mfumte" + }, + "ng": { + "english_name": "Ndonga" + }, + "nga": { + "english_name": "Ngbaka" + }, + "ngb": { + "english_name": "Ngbandi, Northern" + }, + "ngc": { + "english_name": "Ngombe (Democratic Republic of Congo)" + }, + "ngd": { + "english_name": "Ngando (Central African Republic)" + }, + "nge": { + "english_name": "Ngemba" + }, + "ngg": { + "english_name": "Ngbaka Manza" + }, + "ngh": { + "english_name": "N/u" + }, + "ngi": { + "english_name": "Ngizim" + }, + "ngj": { + "english_name": "Ngie" + }, + "ngk": { + "english_name": "Dalabon" + }, + "ngl": { + "english_name": "Lomwe" + }, + "ngm": { + "english_name": "Ngatik Men's Creole" + }, + "ngn": { + "english_name": "Ngwo" + }, + "ngo": { + "english_name": "Ngoni" + }, + "ngp": { + "english_name": "Ngulu" + }, + "ngq": { + "english_name": "Ngurimi" + }, + "ngr": { + "english_name": "Engdewu" + }, + "ngs": { + "english_name": "Gvoko" + }, + "ngt": { + "english_name": "Ngeq" + }, + "ngu": { + "english_name": "Nahuatl, Guerrero" + }, + "ngv": { + "english_name": "Nagumi" + }, + "ngw": { + "english_name": "Ngwaba" + }, + "ngx": { + "english_name": "Nggwahyi" + }, + "ngy": { + "english_name": "Tibea" + }, + "ngz": { + "english_name": "Ngungwel" + }, + "nha": { + "english_name": "Nhanda" + }, + "nhb": { + "english_name": "Beng" + }, + "nhc": { + "english_name": "Nahuatl, Tabasco" + }, + "nhd": { + "english_name": "Chirip\u00e1" + }, + "nhe": { + "english_name": "Nahuatl, Eastern Huasteca" + }, + "nhf": { + "english_name": "Nhuwala" + }, + "nhg": { + "english_name": "Nahuatl, Tetelcingo" + }, + "nhh": { + "english_name": "Nahari" + }, + "nhi": { + "english_name": "Nahuatl, Zacatl\u00e1n-Ahuacatl\u00e1n-Tepetzintla" + }, + "nhk": { + "english_name": "Nahuatl, Isthmus-Cosoleacaque" + }, + "nhm": { + "english_name": "Nahuatl, Morelos" + }, + "nhn": { + "english_name": "Nahuatl, Central" + }, + "nho": { + "english_name": "Takuu" + }, + "nhp": { + "english_name": "Nahuatl, Isthmus-Pajapan" + }, + "nhq": { + "english_name": "Nahuatl, Huaxcaleca" + }, + "nhr": { + "english_name": "Naro" + }, + "nht": { + "english_name": "Nahuatl, Ometepec" + }, + "nhu": { + "english_name": "Noone" + }, + "nhv": { + "english_name": "Nahuatl, Temascaltepec" + }, + "nhw": { + "english_name": "Nahuatl, Western Huasteca" + }, + "nhx": { + "english_name": "Nahuatl, Isthmus-Mecayapan" + }, + "nhy": { + "english_name": "Nahuatl, Northern Oaxaca" + }, + "nhz": { + "english_name": "Nahuatl, Santa Mar\u00eda La Alta" + }, + "nia": { + "english_name": "Nias" + }, + "nib": { + "english_name": "Nakame" + }, + "nid": { + "english_name": "Ngandi" + }, + "nie": { + "english_name": "Niellim" + }, + "nif": { + "english_name": "Nek" + }, + "nig": { + "english_name": "Ngalakan" + }, + "nih": { + "english_name": "Nyiha (Tanzania)" + }, + "nii": { + "english_name": "Nii" + }, + "nij": { + "english_name": "Ngaju" + }, + "nik": { + "english_name": "Nicobarese, Southern" + }, + "nil": { + "english_name": "Nila" + }, + "nim": { + "english_name": "Nilamba" + }, + "nin": { + "english_name": "Ninzo" + }, + "nio": { + "english_name": "Nganasan" + }, + "niq": { + "english_name": "Nandi" + }, + "nir": { + "english_name": "Nimboran" + }, + "nis": { + "english_name": "Nimi" + }, + "nit": { + "english_name": "Kolami, Southeastern" + }, + "niu": { + "english_name": "Niuean" + }, + "niv": { + "english_name": "Gilyak" + }, + "niw": { + "english_name": "Nimo" + }, + "nix": { + "english_name": "Hema" + }, + "niy": { + "english_name": "Ngiti" + }, + "niz": { + "english_name": "Ningil" + }, + "nja": { + "english_name": "Nzanyi" + }, + "njb": { + "english_name": "Naga, Nocte" + }, + "njd": { + "english_name": "Ndonde Hamba" + }, + "njh": { + "english_name": "Naga, Lotha" + }, + "nji": { + "english_name": "Gudanji" + }, + "njj": { + "english_name": "Njen" + }, + "njl": { + "english_name": "Njalgulgule" + }, + "njm": { + "english_name": "Naga, Angami" + }, + "njn": { + "english_name": "Naga, Liangmai" + }, + "njo": { + "english_name": "Naga, Ao" + }, + "njr": { + "english_name": "Njerep" + }, + "njs": { + "english_name": "Nisa" + }, + "njt": { + "english_name": "Ndyuka-Trio Pidgin" + }, + "nju": { + "english_name": "Ngadjunmaya" + }, + "njx": { + "english_name": "Kunyi" + }, + "njy": { + "english_name": "Njyem" + }, + "njz": { + "english_name": "Nyishi" + }, + "nka": { + "english_name": "Nkoya" + }, + "nkb": { + "english_name": "Naga, Khoibu" + }, + "nkc": { + "english_name": "Nkongho" + }, + "nkd": { + "english_name": "Koireng" + }, + "nke": { + "english_name": "Duke" + }, + "nkf": { + "english_name": "Naga, Inpui" + }, + "nkg": { + "english_name": "Nekgini" + }, + "nkh": { + "english_name": "Naga, Khezha" + }, + "nki": { + "english_name": "Naga, Thangal" + }, + "nkj": { + "english_name": "Nakai" + }, + "nkk": { + "english_name": "Nokuku" + }, + "nkm": { + "english_name": "Namat" + }, + "nkn": { + "english_name": "Nkangala" + }, + "nko": { + "english_name": "Nkonya" + }, + "nkp": { + "english_name": "Niuatoputapu" + }, + "nkq": { + "english_name": "Nkami" + }, + "nkr": { + "english_name": "Nukuoro" + }, + "nks": { + "english_name": "Asmat, North" + }, + "nkt": { + "english_name": "Nyika (Tanzania)" + }, + "nku": { + "english_name": "Kulango, Bouna" + }, + "nkv": { + "english_name": "Nyika (Malawi and Zambia)" + }, + "nkw": { + "english_name": "Nkutu" + }, + "nkx": { + "english_name": "Nkoroo" + }, + "nkz": { + "english_name": "Nkari" + }, + "nl": { + "english_name": "Dutch", + "name": "Nederlands" + }, + "nla": { + "english_name": "Ngombale" + }, + "nlc": { + "english_name": "Nalca" + }, + "nle": { + "english_name": "Nyala, East" + }, + "nlg": { + "english_name": "Gela" + }, + "nli": { + "english_name": "Grangali" + }, + "nlj": { + "english_name": "Nyali" + }, + "nlk": { + "english_name": "Yali, Ninia" + }, + "nll": { + "english_name": "Nihali" + }, + "nlo": { + "english_name": "Ngul" + }, + "nlq": { + "english_name": "Naga, Lao" + }, + "nlu": { + "english_name": "Nchumbulu" + }, + "nlv": { + "english_name": "Nahuatl, Orizaba" + }, + "nlw": { + "english_name": "Walangama" + }, + "nlx": { + "english_name": "Nahali" + }, + "nly": { + "english_name": "Nyamal" + }, + "nlz": { + "english_name": "Nal\u00f6go" + }, + "nma": { + "english_name": "Naga, Maram" + }, + "nmb": { + "english_name": "Nambas, Big" + }, + "nmc": { + "english_name": "Ngam" + }, + "nmd": { + "english_name": "Ndumu" + }, + "nme": { + "english_name": "Naga, Mzieme" + }, + "nmf": { + "english_name": "Naga, Tangkhul (India)" + }, + "nmg": { + "english_name": "Kwasio" + }, + "nmh": { + "english_name": "Naga, Monsang" + }, + "nmi": { + "english_name": "Nyam" + }, + "nmj": { + "english_name": "Ngombe (Central African Republic)" + }, + "nmk": { + "english_name": "Namakura" + }, + "nml": { + "english_name": "Ndemli" + }, + "nmm": { + "english_name": "Manangba" + }, + "nmn": { + "english_name": "!X\u00f3\u00f5" + }, + "nmo": { + "english_name": "Naga, Moyon" + }, + "nmp": { + "english_name": "Nimanbur" + }, + "nmq": { + "english_name": "Nambya" + }, + "nmr": { + "english_name": "Nimbari" + }, + "nms": { + "english_name": "Letemboi" + }, + "nmt": { + "english_name": "Namonuito" + }, + "nmu": { + "english_name": "Maidu, Northeast" + }, + "nmv": { + "english_name": "Ngamini" + }, + "nmw": { + "english_name": "Nimoa" + }, + "nmx": { + "english_name": "Nama (Papua New Guinea)" + }, + "nmy": { + "english_name": "Namuyi" + }, + "nmz": { + "english_name": "Nawdm" + }, + "nn": { + "english_name": "Norwegian Nynorsk", + "name": "Norwegian Nynorsk" + }, + "nna": { + "english_name": "Nyangumarta" + }, + "nnb": { + "english_name": "Nande" + }, + "nnc": { + "english_name": "Nancere" + }, + "nnd": { + "english_name": "Ambae, West" + }, + "nne": { + "english_name": "Ngandyera" + }, + "nnf": { + "english_name": "Ngaing" + }, + "nng": { + "english_name": "Naga, Maring" + }, + "nnh": { + "english_name": "Ngiemboon" + }, + "nni": { + "english_name": "Nuaulu, North" + }, + "nnj": { + "english_name": "Nyangatom" + }, + "nnk": { + "english_name": "Nankina" + }, + "nnl": { + "english_name": "Naga, Northern Rengma" + }, + "nnm": { + "english_name": "Namia" + }, + "nnn": { + "english_name": "Ngete" + }, + "nnp": { + "english_name": "Naga, Wancho" + }, + "nnq": { + "english_name": "Ngindo" + }, + "nnr": { + "english_name": "Narungga" + }, + "nns": { + "english_name": "Ningye" + }, + "nnt": { + "english_name": "Nanticoke" + }, + "nnu": { + "english_name": "Dwang" + }, + "nnv": { + "english_name": "Nugunu (Australia)" + }, + "nnw": { + "english_name": "Nuni, Southern" + }, + "nny": { + "english_name": "Nyangga" + }, + "nnz": { + "english_name": "Nda'nda'" + }, + "no": { + "english_name": "Norwegian" + }, + "noa": { + "english_name": "Woun Meu" + }, + "noc": { + "english_name": "Nuk" + }, + "nod": { + "english_name": "Thai, Northern" + }, + "noe": { + "english_name": "Nimadi" + }, + "nof": { + "english_name": "Nomane" + }, + "nog": { + "english_name": "Nogai" + }, + "noh": { + "english_name": "Nomu" + }, + "noi": { + "english_name": "Noiri" + }, + "noj": { + "english_name": "Nonuya" + }, + "nok": { + "english_name": "Nooksack" + }, + "nol": { + "english_name": "Nomlaki" + }, + "nom": { + "english_name": "Nocam\u00e1n" + }, + "non": { + "english_name": "Norse, Old" + }, + "nop": { + "english_name": "Numanggang" + }, + "noq": { + "english_name": "Ngongo" + }, + "nos": { + "english_name": "Nisu, Eastern" + }, + "not": { + "english_name": "Nomatsiguenga" + }, + "nou": { + "english_name": "Ewage-Notu" + }, + "nov": { + "english_name": "Novial" + }, + "now": { + "english_name": "Nyambo" + }, + "noy": { + "english_name": "Noy" + }, + "noz": { + "english_name": "Nayi" + }, + "npa": { + "english_name": "Nar Phu" + }, + "npb": { + "english_name": "Nupbikha" + }, + "npg": { + "english_name": "Naga, Ponyo-Gongwang" + }, + "nph": { + "english_name": "Naga, Phom" + }, + "npi": { + "english_name": "Nepali (individual language)" + }, + "npl": { + "english_name": "Nahuatl, Southeastern Puebla" + }, + "npn": { + "english_name": "Mondropolon" + }, + "npo": { + "english_name": "Naga, Pochuri" + }, + "nps": { + "english_name": "Nipsan" + }, + "npu": { + "english_name": "Naga, Puimei" + }, + "npy": { + "english_name": "Napu" + }, + "nqg": { + "english_name": "Nago, Southern" + }, + "nqk": { + "english_name": "Ede Nago, Kura" + }, + "nqm": { + "english_name": "Ndom" + }, + "nqn": { + "english_name": "Nen" + }, + "nqo": { + "english_name": "N'Ko" + }, + "nqq": { + "english_name": "Naga, Kyan-Karyaw" + }, + "nqy": { + "english_name": "Naga, Akyaung Ari" + }, + "nr": { + "english_name": "Ndebele, South" + }, + "nra": { + "english_name": "Ngom" + }, + "nrb": { + "english_name": "Nara" + }, + "nrc": { + "english_name": "Noric" + }, + "nre": { + "english_name": "Naga, Southern Rengma" + }, + "nrg": { + "english_name": "Narango" + }, + "nri": { + "english_name": "Naga, Chokri" + }, + "nrk": { + "english_name": "Ngarla" + }, + "nrl": { + "english_name": "Ngarluma" + }, + "nrm": { + "english_name": "Narom" + }, + "nrn": { + "english_name": "Norn" + }, + "nrp": { + "english_name": "Picene, North" + }, + "nrr": { + "english_name": "Norra" + }, + "nrt": { + "english_name": "Kalapuya, Northern" + }, + "nru": { + "english_name": "Narua" + }, + "nrx": { + "english_name": "Ngurmbur" + }, + "nrz": { + "english_name": "Lala" + }, + "nsa": { + "english_name": "Naga, Sangtam" + }, + "nsc": { + "english_name": "Nshi" + }, + "nsd": { + "english_name": "Nisu, Southern" + }, + "nse": { + "english_name": "Nsenga" + }, + "nsf": { + "english_name": "Nisu, Northwestern" + }, + "nsg": { + "english_name": "Ngasa" + }, + "nsh": { + "english_name": "Ngoshie" + }, + "nsi": { + "english_name": "Nigerian Sign Language" + }, + "nsk": { + "english_name": "Naskapi" + }, + "nsl": { + "english_name": "Norwegian Sign Language" + }, + "nsm": { + "english_name": "Naga, Sumi" + }, + "nsn": { + "english_name": "Nehan" + }, + "nso": { + "english_name": "Pedi", + "name": "Pedi" + }, + "nsp": { + "english_name": "Nepalese Sign Language" + }, + "nsq": { + "english_name": "Miwok, Northern Sierra" + }, + "nsr": { + "english_name": "Maritime Sign Language" + }, + "nss": { + "english_name": "Nali" + }, + "nst": { + "english_name": "Naga, Tase" + }, + "nsu": { + "english_name": "Nahuatl, Sierra Negra" + }, + "nsv": { + "english_name": "Nisu, Southwestern" + }, + "nsw": { + "english_name": "Navut" + }, + "nsx": { + "english_name": "Nsongo" + }, + "nsy": { + "english_name": "Nasal" + }, + "nsz": { + "english_name": "Nisenan" + }, + "nte": { + "english_name": "Nathembo" + }, + "ntg": { + "english_name": "Ngantangarra" + }, + "nti": { + "english_name": "Natioro" + }, + "ntj": { + "english_name": "Ngaanyatjarra" + }, + "ntk": { + "english_name": "Ikoma-Nata-Isenye" + }, + "ntm": { + "english_name": "Nateni" + }, + "nto": { + "english_name": "Ntomba" + }, + "ntp": { + "english_name": "Tepehuan, Northern" + }, + "ntr": { + "english_name": "Delo" + }, + "nts": { + "english_name": "Natagaimas" + }, + "ntu": { + "english_name": "Nat\u00fcgu" + }, + "ntw": { + "english_name": "Nottoway" + }, + "ntx": { + "english_name": "Naga, Tangkhul (Myanmar)" + }, + "nty": { + "english_name": "Mantsi" + }, + "ntz": { + "english_name": "Natanzi" + }, + "nua": { + "english_name": "Yuanga" + }, + "nuc": { + "english_name": "Nukuini" + }, + "nud": { + "english_name": "Ngala" + }, + "nue": { + "english_name": "Ngundu" + }, + "nuf": { + "english_name": "Nusu" + }, + "nug": { + "english_name": "Nungali" + }, + "nuh": { + "english_name": "Ndunda" + }, + "nui": { + "english_name": "Ngumbi" + }, + "nuj": { + "english_name": "Nyole" + }, + "nuk": { + "english_name": "Nuu-chah-nulth" + }, + "nul": { + "english_name": "Nusa Laut" + }, + "num": { + "english_name": "Niuafo'ou" + }, + "nun": { + "english_name": "Anong" + }, + "nuo": { + "english_name": "Ngu\u00f4n" + }, + "nup": { + "english_name": "Nupe-Nupe-Tako" + }, + "nuq": { + "english_name": "Nukumanu" + }, + "nur": { + "english_name": "Nukuria" + }, + "nus": { + "english_name": "Nuer" + }, + "nut": { + "english_name": "Nung (Viet Nam)" + }, + "nuu": { + "english_name": "Ngbundu" + }, + "nuv": { + "english_name": "Nuni, Northern" + }, + "nuw": { + "english_name": "Nguluwan" + }, + "nux": { + "english_name": "Mehek" + }, + "nuy": { + "english_name": "Nunggubuyu" + }, + "nuz": { + "english_name": "Nahuatl, Tlamacazapa" + }, + "nv": { + "english_name": "Navajo" + }, + "nvh": { + "english_name": "Nasarian" + }, + "nvm": { + "english_name": "Namiae" + }, + "nvo": { + "english_name": "Nyokon" + }, + "nwa": { + "english_name": "Nawathinehena" + }, + "nwb": { + "english_name": "Nyabwa" + }, + "nwc": { + "english_name": "Newari, Classical" + }, + "nwe": { + "english_name": "Ngwe" + }, + "nwg": { + "english_name": "Ngayawung" + }, + "nwi": { + "english_name": "Tanna, Southwest" + }, + "nwm": { + "english_name": "Nyamusa-Molo" + }, + "nwo": { + "english_name": "Nauo" + }, + "nwr": { + "english_name": "Nawaru" + }, + "nwx": { + "english_name": "Newar, Middle" + }, + "nwy": { + "english_name": "Nottoway-Meherrin" + }, + "nxa": { + "english_name": "Nauete" + }, + "nxd": { + "english_name": "Ngando (Democratic Republic of Congo)" + }, + "nxe": { + "english_name": "Nage" + }, + "nxg": { + "english_name": "Ngad'a" + }, + "nxi": { + "english_name": "Nindi" + }, + "nxk": { + "english_name": "Naga, Koki" + }, + "nxl": { + "english_name": "Nuaulu, South" + }, + "nxm": { + "english_name": "Numidian" + }, + "nxn": { + "english_name": "Ngawun" + }, + "nxq": { + "english_name": "Naxi" + }, + "nxr": { + "english_name": "Ninggerum" + }, + "nxu": { + "english_name": "Narau" + }, + "nxx": { + "english_name": "Nafri" + }, + "ny": { + "english_name": "Nyanja" + }, + "nyb": { + "english_name": "Nyangbo" + }, + "nyc": { + "english_name": "Nyanga-li" + }, + "nyd": { + "english_name": "Nyore" + }, + "nye": { + "english_name": "Nyengo" + }, + "nyf": { + "english_name": "Giryama" + }, + "nyg": { + "english_name": "Nyindu" + }, + "nyh": { + "english_name": "Nyigina" + }, + "nyi": { + "english_name": "Ama (Sudan)" + }, + "nyj": { + "english_name": "Nyanga" + }, + "nyk": { + "english_name": "Nyaneka" + }, + "nyl": { + "english_name": "Nyeu" + }, + "nym": { + "english_name": "Nyamwezi" + }, + "nyn": { + "english_name": "Nyankole" + }, + "nyo": { + "english_name": "Nyoro" + }, + "nyp": { + "english_name": "Nyang'i" + }, + "nyq": { + "english_name": "Nayini" + }, + "nyr": { + "english_name": "Nyiha (Malawi)" + }, + "nys": { + "english_name": "Nyunga" + }, + "nyt": { + "english_name": "Nyawaygi" + }, + "nyu": { + "english_name": "Nyungwe" + }, + "nyv": { + "english_name": "Nyulnyul" + }, + "nyw": { + "english_name": "Nyaw" + }, + "nyx": { + "english_name": "Nganyaywana" + }, + "nyy": { + "english_name": "Nyakyusa-Ngonde" + }, + "nza": { + "english_name": "Mbembe, Tigon" + }, + "nzb": { + "english_name": "Njebi" + }, + "nzi": { + "english_name": "Nzima" + }, + "nzk": { + "english_name": "Nzakara" + }, + "nzm": { + "english_name": "Naga, Zeme" + }, + "nzs": { + "english_name": "New Zealand Sign Language" + }, + "nzu": { + "english_name": "Teke-Nzikou" + }, + "nzy": { + "english_name": "Nzakambay" + }, + "nzz": { + "english_name": "Dogon, Nanga Dama" + }, + "oaa": { + "english_name": "Orok" + }, + "oac": { + "english_name": "Oroch" + }, + "oar": { + "english_name": "Aramaic, Old (up to 700 BCE)" + }, + "oav": { + "english_name": "Avar, Old" + }, + "obi": { + "english_name": "Obispe\u00f1o" + }, + "obk": { + "english_name": "Bontok, Southern" + }, + "obl": { + "english_name": "Oblo" + }, + "obm": { + "english_name": "Moabite" + }, + "obo": { + "english_name": "Manobo, Obo" + }, + "obr": { + "english_name": "Burmese, Old" + }, + "obt": { + "english_name": "Breton, Old" + }, + "obu": { + "english_name": "Obulom" + }, + "oc": { + "english_name": "Occitan (post 1500)", + "name": "Occitan (apr\u00e8p 1500)" + }, + "oca": { + "english_name": "Ocaina" + }, + "och": { + "english_name": "Chinese, Old" + }, + "oco": { + "english_name": "Cornish, Old" + }, + "ocu": { + "english_name": "Matlatzinca, Atzingo" + }, + "oda": { + "english_name": "Odut" + }, + "odk": { + "english_name": "Od" + }, + "odt": { + "english_name": "Dutch, Old" + }, + "odu": { + "english_name": "Odual" + }, + "ofo": { + "english_name": "Ofo" + }, + "ofs": { + "english_name": "Frisian, Old" + }, + "ofu": { + "english_name": "Efutop" + }, + "ogb": { + "english_name": "Ogbia" + }, + "ogc": { + "english_name": "Ogbah" + }, + "oge": { + "english_name": "Georgian, Old" + }, + "ogg": { + "english_name": "Ogbogolo" + }, + "ogo": { + "english_name": "Khana" + }, + "ogu": { + "english_name": "Ogbronuagum" + }, + "oht": { + "english_name": "Hittite, Old" + }, + "ohu": { + "english_name": "Hungarian, Old" + }, + "oia": { + "english_name": "Oirata" + }, + "oin": { + "english_name": "One, Inebu" + }, + "oj": { + "english_name": "Ojibwa" + }, + "ojb": { + "english_name": "Ojibwa, Northwestern" + }, + "ojc": { + "english_name": "Ojibwa, Central" + }, + "ojg": { + "english_name": "Ojibwa, Eastern" + }, + "ojp": { + "english_name": "Japanese, Old" + }, + "ojs": { + "english_name": "Ojibwa, Severn" + }, + "ojv": { + "english_name": "Ontong Java" + }, + "ojw": { + "english_name": "Ojibwa, Western" + }, + "oka": { + "english_name": "Okanagan" + }, + "okb": { + "english_name": "Okobo" + }, + "okd": { + "english_name": "Okodia" + }, + "oke": { + "english_name": "Okpe (Southwestern Edo)" + }, + "okg": { + "english_name": "Koko Babangk" + }, + "okh": { + "english_name": "Koresh-e Rostam" + }, + "oki": { + "english_name": "Okiek" + }, + "okj": { + "english_name": "Oko-Juwoi" + }, + "okk": { + "english_name": "One, Kwamtim" + }, + "okl": { + "english_name": "Kentish Sign Language, Old" + }, + "okm": { + "english_name": "Korean, Middle (10th-16th cent.)" + }, + "okn": { + "english_name": "Oki-No-Erabu" + }, + "oko": { + "english_name": "Korean, Old (3rd-9th cent.)" + }, + "okr": { + "english_name": "Kirike" + }, + "oks": { + "english_name": "Oko-Eni-Osayen" + }, + "oku": { + "english_name": "Oku" + }, + "okv": { + "english_name": "Orokaiva" + }, + "okx": { + "english_name": "Okpe (Northwestern Edo)" + }, + "ola": { + "english_name": "Walungge" + }, + "old": { + "english_name": "Mochi" + }, + "ole": { + "english_name": "Olekha" + }, + "olk": { + "english_name": "Olkol" + }, + "olm": { + "english_name": "Oloma" + }, + "olo": { + "english_name": "Livvi" + }, + "olr": { + "english_name": "Olrat" + }, + "om": { + "english_name": "Oromo" + }, + "oma": { + "english_name": "Omaha-Ponca" + }, + "omb": { + "english_name": "Ambae, East" + }, + "omc": { + "english_name": "Mochica" + }, + "ome": { + "english_name": "Omejes" + }, + "omg": { + "english_name": "Omagua" + }, + "omi": { + "english_name": "Omi" + }, + "omk": { + "english_name": "Omok" + }, + "oml": { + "english_name": "Ombo" + }, + "omn": { + "english_name": "Minoan" + }, + "omo": { + "english_name": "Utarmbung" + }, + "omp": { + "english_name": "Manipuri, Old" + }, + "omr": { + "english_name": "Marathi, Old" + }, + "omt": { + "english_name": "Omotik" + }, + "omu": { + "english_name": "Omurano" + }, + "omw": { + "english_name": "Tairora, South" + }, + "omx": { + "english_name": "Mon, Old" + }, + "ona": { + "english_name": "Ona" + }, + "onb": { + "english_name": "Lingao" + }, + "one": { + "english_name": "Oneida" + }, + "ong": { + "english_name": "Olo" + }, + "oni": { + "english_name": "Onin" + }, + "onj": { + "english_name": "Onjob" + }, + "onk": { + "english_name": "One, Kabore" + }, + "onn": { + "english_name": "Onobasulu" + }, + "ono": { + "english_name": "Onondaga" + }, + "onp": { + "english_name": "Sartang" + }, + "onr": { + "english_name": "One, Northern" + }, + "ons": { + "english_name": "Ono" + }, + "ont": { + "english_name": "Ontenu" + }, + "onu": { + "english_name": "Unua" + }, + "onw": { + "english_name": "Nubian, Old" + }, + "onx": { + "english_name": "Onin Based Pidgin" + }, + "ood": { + "english_name": "Tohono O'odham" + }, + "oog": { + "english_name": "Ong" + }, + "oon": { + "english_name": "\u00d6nge" + }, + "oor": { + "english_name": "Oorlams" + }, + "oos": { + "english_name": "Ossetic, Old" + }, + "opa": { + "english_name": "Okpamheri" + }, + "opk": { + "english_name": "Kopkaka" + }, + "opm": { + "english_name": "Oksapmin" + }, + "opo": { + "english_name": "Opao" + }, + "opt": { + "english_name": "Opata" + }, + "opy": { + "english_name": "Ofay\u00e9" + }, + "or": { + "english_name": "Oriya (macrolanguage)", + "name": "Oriya (macrolanguage)" + }, + "ora": { + "english_name": "Oroha" + }, + "orc": { + "english_name": "Orma" + }, + "ore": { + "english_name": "Orej\u00f3n" + }, + "org": { + "english_name": "Oring" + }, + "orh": { + "english_name": "Oroqen" + }, + "orn": { + "english_name": "Orang Kanaq" + }, + "oro": { + "english_name": "Orokolo" + }, + "orr": { + "english_name": "Oruma" + }, + "ors": { + "english_name": "Orang Seletar" + }, + "ort": { + "english_name": "Oriya, Adivasi" + }, + "oru": { + "english_name": "Ormuri" + }, + "orv": { + "english_name": "Russian, Old" + }, + "orw": { + "english_name": "Oro Win" + }, + "orx": { + "english_name": "Oro" + }, + "ory": { + "english_name": "Oriya (individual language)" + }, + "orz": { + "english_name": "Ormu" + }, + "os": { + "english_name": "Ossetian" + }, + "osa": { + "english_name": "Osage" + }, + "osc": { + "english_name": "Oscan" + }, + "osi": { + "english_name": "Osing" + }, + "oso": { + "english_name": "Ososo" + }, + "osp": { + "english_name": "Spanish, Old" + }, + "ost": { + "english_name": "Osatu" + }, + "osu": { + "english_name": "One, Southern" + }, + "osx": { + "english_name": "Saxon, Old" + }, + "ota": { + "english_name": "Turkish, Ottoman (1500-1928)" + }, + "otb": { + "english_name": "Tibetan, Old" + }, + "otd": { + "english_name": "Ot Danum" + }, + "ote": { + "english_name": "Otomi, Mezquital" + }, + "oti": { + "english_name": "Oti" + }, + "otk": { + "english_name": "Turkish, Old" + }, + "otl": { + "english_name": "Otomi, Tilapa" + }, + "otm": { + "english_name": "Otomi, Eastern Highland" + }, + "otn": { + "english_name": "Otomi, Tenango" + }, + "otq": { + "english_name": "Otomi, Quer\u00e9taro" + }, + "otr": { + "english_name": "Otoro" + }, + "ots": { + "english_name": "Otomi, Estado de M\u00e9xico" + }, + "ott": { + "english_name": "Otomi, Temoaya" + }, + "otu": { + "english_name": "Otuke" + }, + "otw": { + "english_name": "Ottawa" + }, + "otx": { + "english_name": "Otomi, Texcatepec" + }, + "oty": { + "english_name": "Tamil, Old" + }, + "otz": { + "english_name": "Otomi, Ixtenco" + }, + "oua": { + "english_name": "Tagargrent" + }, + "oub": { + "english_name": "Glio-Oubi" + }, + "oue": { + "english_name": "Oune" + }, + "oui": { + "english_name": "Uighur, Old" + }, + "oum": { + "english_name": "Ouma" + }, + "owi": { + "english_name": "Owiniga" + }, + "owl": { + "english_name": "Welsh, Old" + }, + "oyb": { + "english_name": "Oy" + }, + "oyd": { + "english_name": "Oyda" + }, + "oym": { + "english_name": "Wayampi" + }, + "oyy": { + "english_name": "Oya'oya" + }, + "ozm": { + "english_name": "Koonzime" + }, + "pa": { + "english_name": "Panjabi", + "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40" + }, + "pab": { + "english_name": "Parec\u00eds" + }, + "pac": { + "english_name": "Pacoh" + }, + "pad": { + "english_name": "Paumar\u00ed" + }, + "pae": { + "english_name": "Pagibete" + }, + "paf": { + "english_name": "Paranaw\u00e1t" + }, + "pag": { + "english_name": "Pangasinan" + }, + "pah": { + "english_name": "Tenharim" + }, + "pai": { + "english_name": "Pe" + }, + "pak": { + "english_name": "Parakan\u00e3" + }, + "pal": { + "english_name": "Pahlavi" + }, + "pam": { + "english_name": "Pampanga" + }, + "pao": { + "english_name": "Paiute, Northern" + }, + "pap": { + "english_name": "Papiamento" + }, + "paq": { + "english_name": "Parya" + }, + "par": { + "english_name": "Panamint" + }, + "pas": { + "english_name": "Papasena" + }, + "pat": { + "english_name": "Papitalai" + }, + "pau": { + "english_name": "Palauan" + }, + "pav": { + "english_name": "Paka\u00e1snovos" + }, + "paw": { + "english_name": "Pawnee" + }, + "pax": { + "english_name": "Pankarar\u00e9" + }, + "pay": { + "english_name": "Pech" + }, + "paz": { + "english_name": "Pankarar\u00fa" + }, + "pbb": { + "english_name": "P\u00e1ez" + }, + "pbc": { + "english_name": "Patamona" + }, + "pbe": { + "english_name": "Popoloca, Mezontla" + }, + "pbf": { + "english_name": "Popoloca, Coyotepec" + }, + "pbg": { + "english_name": "Paraujano" + }, + "pbh": { + "english_name": "E'\u00f1apa Woromaipu" + }, + "pbi": { + "english_name": "Parkwa" + }, + "pbl": { + "english_name": "Mak (Nigeria)" + }, + "pbn": { + "english_name": "Kpasam" + }, + "pbo": { + "english_name": "Papel" + }, + "pbp": { + "english_name": "Badyara" + }, + "pbr": { + "english_name": "Pangwa" + }, + "pbs": { + "english_name": "Pame, Central" + }, + "pbt": { + "english_name": "Pashto, Southern" + }, + "pbu": { + "english_name": "Pashto, Northern" + }, + "pbv": { + "english_name": "Pnar" + }, + "pby": { + "english_name": "Pyu" + }, + "pca": { + "english_name": "Popoloca, Santa In\u00e9s Ahuatempan" + }, + "pcb": { + "english_name": "Pear" + }, + "pcc": { + "english_name": "Bouyei" + }, + "pcd": { + "english_name": "Picard" + }, + "pce": { + "english_name": "Palaung, Ruching" + }, + "pcf": { + "english_name": "Paliyan" + }, + "pcg": { + "english_name": "Paniya" + }, + "pch": { + "english_name": "Pardhan" + }, + "pci": { + "english_name": "Duruwa" + }, + "pcj": { + "english_name": "Parenga" + }, + "pck": { + "english_name": "Chin, Paite" + }, + "pcl": { + "english_name": "Pardhi" + }, + "pcm": { + "english_name": "Pidgin, Nigerian" + }, + "pcn": { + "english_name": "Piti" + }, + "pcp": { + "english_name": "Pacahuara" + }, + "pcw": { + "english_name": "Pyapun" + }, + "pda": { + "english_name": "Anam" + }, + "pdc": { + "english_name": "German, Pennsylvania" + }, + "pdi": { + "english_name": "Pa Di" + }, + "pdn": { + "english_name": "Podena" + }, + "pdo": { + "english_name": "Padoe" + }, + "pdt": { + "english_name": "Plautdietsch" + }, + "pdu": { + "english_name": "Kayan" + }, + "pea": { + "english_name": "Indonesian, Peranakan" + }, + "peb": { + "english_name": "Pomo, Eastern" + }, + "ped": { + "english_name": "Mala (Papua New Guinea)" + }, + "pee": { + "english_name": "Taje" + }, + "pef": { + "english_name": "Pomo, Northeastern" + }, + "peg": { + "english_name": "Pengo" + }, + "peh": { + "english_name": "Bonan" + }, + "pei": { + "english_name": "Chichimeca-Jonaz" + }, + "pej": { + "english_name": "Pomo, Northern" + }, + "pek": { + "english_name": "Penchal" + }, + "pel": { + "english_name": "Pekal" + }, + "pem": { + "english_name": "Phende" + }, + "peo": { + "english_name": "Persian, Old (ca. 600-400 B.C.)" + }, + "pep": { + "english_name": "Kunja" + }, + "peq": { + "english_name": "Pomo, Southern" + }, + "pes": { + "english_name": "Persian, Iranian" + }, + "pev": { + "english_name": "P\u00e9mono" + }, + "pex": { + "english_name": "Petats" + }, + "pey": { + "english_name": "Petjo" + }, + "pez": { + "english_name": "Penan, Eastern" + }, + "pfa": { + "english_name": "P\u00e1\u00e1fang" + }, + "pfe": { + "english_name": "Peere" + }, + "pfl": { + "english_name": "Pfaelzisch" + }, + "pga": { + "english_name": "Creole Arabic, Sudanese" + }, + "pgg": { + "english_name": "Pangwali" + }, + "pgi": { + "english_name": "Pagi" + }, + "pgk": { + "english_name": "Rerep" + }, + "pgl": { + "english_name": "Irish, Primitive" + }, + "pgn": { + "english_name": "Paelignian" + }, + "pgs": { + "english_name": "Pangseng" + }, + "pgu": { + "english_name": "Pagu" + }, + "pha": { + "english_name": "Pa-Hng" + }, + "phd": { + "english_name": "Phudagi" + }, + "phg": { + "english_name": "Phuong" + }, + "phh": { + "english_name": "Phukha" + }, + "phk": { + "english_name": "Phake" + }, + "phl": { + "english_name": "Phalura" + }, + "phm": { + "english_name": "Phimbi" + }, + "phn": { + "english_name": "Phoenician" + }, + "pho": { + "english_name": "Phunoi" + }, + "phq": { + "english_name": "Phana'" + }, + "phr": { + "english_name": "Pahari-Potwari" + }, + "pht": { + "english_name": "Phu Thai" + }, + "phu": { + "english_name": "Phuan" + }, + "phv": { + "english_name": "Pahlavani" + }, + "phw": { + "english_name": "Phangduwali" + }, + "pi": { + "english_name": "Pali" + }, + "pia": { + "english_name": "Pima Bajo" + }, + "pib": { + "english_name": "Yine" + }, + "pic": { + "english_name": "Pinji" + }, + "pid": { + "english_name": "Piaroa" + }, + "pie": { + "english_name": "Piro" + }, + "pif": { + "english_name": "Pingelapese" + }, + "pig": { + "english_name": "Pisabo" + }, + "pih": { + "english_name": "Pitcairn-Norfolk" + }, + "pii": { + "english_name": "Pini" + }, + "pij": { + "english_name": "Pijao" + }, + "pil": { + "english_name": "Yom" + }, + "pim": { + "english_name": "Powhatan" + }, + "pin": { + "english_name": "Piame" + }, + "pio": { + "english_name": "Piapoco" + }, + "pip": { + "english_name": "Pero" + }, + "pir": { + "english_name": "Piratapuyo" + }, + "pis": { + "english_name": "Pijin" + }, + "pit": { + "english_name": "Pitta Pitta" + }, + "piu": { + "english_name": "Pintupi-Luritja" + }, + "piv": { + "english_name": "Pileni" + }, + "piw": { + "english_name": "Pimbwe" + }, + "pix": { + "english_name": "Piu" + }, + "piy": { + "english_name": "Piya-Kwonci" + }, + "piz": { + "english_name": "Pije" + }, + "pjt": { + "english_name": "Pitjantjatjara" + }, + "pka": { + "english_name": "Pr\u0101krit, Ardham\u0101gadh\u012b" + }, + "pkb": { + "english_name": "Pokomo" + }, + "pkc": { + "english_name": "Paekche" + }, + "pkg": { + "english_name": "Pak-Tong" + }, + "pkh": { + "english_name": "Pankhu" + }, + "pkn": { + "english_name": "Pakanha" + }, + "pko": { + "english_name": "P\u00f6koot" + }, + "pkp": { + "english_name": "Pukapuka" + }, + "pkr": { + "english_name": "Kurumba, Attapady" + }, + "pks": { + "english_name": "Pakistan Sign Language" + }, + "pkt": { + "english_name": "Maleng" + }, + "pku": { + "english_name": "Paku" + }, + "pl": { + "english_name": "Polish", + "name": "polski" + }, + "pla": { + "english_name": "Miani" + }, + "plb": { + "english_name": "Polonombauk" + }, + "plc": { + "english_name": "Palawano, Central" + }, + "pld": { + "english_name": "Polari" + }, + "ple": { + "english_name": "Palu'e" + }, + "plg": { + "english_name": "Pilag\u00e1" + }, + "plh": { + "english_name": "Paulohi" + }, + "plj": { + "english_name": "Polci" + }, + "plk": { + "english_name": "Shina, Kohistani" + }, + "pll": { + "english_name": "Palaung, Shwe" + }, + "pln": { + "english_name": "Palenquero" + }, + "plo": { + "english_name": "Popoluca, Oluta" + }, + "plp": { + "english_name": "Palpa" + }, + "plq": { + "english_name": "Palaic" + }, + "plr": { + "english_name": "Senoufo, Palaka" + }, + "pls": { + "english_name": "Popoloca, San Marcos Tlalcoyalco" + }, + "plt": { + "english_name": "Malagasy, Plateau" + }, + "plu": { + "english_name": "Palik\u00far" + }, + "plv": { + "english_name": "Palawano, Southwest" + }, + "plw": { + "english_name": "Palawano, Brooke's Point" + }, + "ply": { + "english_name": "Bolyu" + }, + "plz": { + "english_name": "Paluan" + }, + "pma": { + "english_name": "Paama" + }, + "pmb": { + "english_name": "Pambia" + }, + "pmc": { + "english_name": "Palumata" + }, + "pmd": { + "english_name": "Pallanganmiddang" + }, + "pme": { + "english_name": "Pwaamei" + }, + "pmf": { + "english_name": "Pamona" + }, + "pmh": { + "english_name": "Pr\u0101krit, M\u0101h\u0101r\u0101\u1e63\u1e6dri" + }, + "pmi": { + "english_name": "Pumi, Northern" + }, + "pmj": { + "english_name": "Pumi, Southern" + }, + "pmk": { + "english_name": "Pamlico" + }, + "pml": { + "english_name": "Lingua Franca" + }, + "pmm": { + "english_name": "Pomo" + }, + "pmn": { + "english_name": "Pam" + }, + "pmo": { + "english_name": "Pom" + }, + "pmq": { + "english_name": "Pame, Northern" + }, + "pmr": { + "english_name": "Paynamar" + }, + "pms": { + "english_name": "Piemontese" + }, + "pmt": { + "english_name": "Tuamotuan" + }, + "pmw": { + "english_name": "Miwok, Plains" + }, + "pmx": { + "english_name": "Naga, Poumei" + }, + "pmy": { + "english_name": "Malay, Papuan" + }, + "pmz": { + "english_name": "Pame, Southern" + }, + "pna": { + "english_name": "Punan Bah-Biau" + }, + "pnb": { + "english_name": "Panjabi, Western" + }, + "pnc": { + "english_name": "Pannei" + }, + "pne": { + "english_name": "Penan, Western" + }, + "png": { + "english_name": "Pongu" + }, + "pnh": { + "english_name": "Penrhyn" + }, + "pni": { + "english_name": "Aoheng" + }, + "pnj": { + "english_name": "Pinjarup" + }, + "pnk": { + "english_name": "Paunaka" + }, + "pnl": { + "english_name": "Paleni" + }, + "pnm": { + "english_name": "Punan Batu 1" + }, + "pnn": { + "english_name": "Pinai-Hagahai" + }, + "pno": { + "english_name": "Panobo" + }, + "pnp": { + "english_name": "Pancana" + }, + "pnq": { + "english_name": "Pana (Burkina Faso)" + }, + "pnr": { + "english_name": "Panim" + }, + "pns": { + "english_name": "Ponosakan" + }, + "pnt": { + "english_name": "Pontic" + }, + "pnu": { + "english_name": "Bunu, Jiongnai" + }, + "pnv": { + "english_name": "Pinigura" + }, + "pnw": { + "english_name": "Panytyima" + }, + "pnx": { + "english_name": "Phong-Kniang" + }, + "pny": { + "english_name": "Pinyin" + }, + "pnz": { + "english_name": "Pana (Central African Republic)" + }, + "poc": { + "english_name": "Poqomam" + }, + "pod": { + "english_name": "Ponares" + }, + "poe": { + "english_name": "Popoloca, San Juan Atzingo" + }, + "pof": { + "english_name": "Poke" + }, + "pog": { + "english_name": "Potigu\u00e1ra" + }, + "poh": { + "english_name": "Poqomchi'" + }, + "poi": { + "english_name": "Popoluca, Highland" + }, + "pok": { + "english_name": "Pokang\u00e1" + }, + "pom": { + "english_name": "Pomo, Southeastern" + }, + "pon": { + "english_name": "Pohnpeian" + }, + "poo": { + "english_name": "Pomo, Central" + }, + "pop": { + "english_name": "Pwapw\u00e2" + }, + "poq": { + "english_name": "Popoluca, Texistepec" + }, + "pos": { + "english_name": "Popoluca, Sayula" + }, + "pot": { + "english_name": "Potawatomi" + }, + "pov": { + "english_name": "Crioulo, Upper Guinea" + }, + "pow": { + "english_name": "Popoloca, San Felipe Otlaltepec" + }, + "pox": { + "english_name": "Polabian" + }, + "poy": { + "english_name": "Pogolo" + }, + "ppa": { + "english_name": "Pao" + }, + "ppe": { + "english_name": "Papi" + }, + "ppi": { + "english_name": "Paipai" + }, + "ppk": { + "english_name": "Uma" + }, + "ppl": { + "english_name": "Pipil" + }, + "ppm": { + "english_name": "Papuma" + }, + "ppn": { + "english_name": "Papapana" + }, + "ppo": { + "english_name": "Folopa" + }, + "ppp": { + "english_name": "Pelende" + }, + "ppq": { + "english_name": "Pei" + }, + "pps": { + "english_name": "Popoloca, San Lu\u00eds Temalacayuca" + }, + "ppt": { + "english_name": "Pare" + }, + "ppu": { + "english_name": "Papora" + }, + "pqa": { + "english_name": "Pa'a" + }, + "pqm": { + "english_name": "Malecite-Passamaquoddy" + }, + "prb": { + "english_name": "Lua'" + }, + "prc": { + "english_name": "Parachi" + }, + "prd": { + "english_name": "Parsi-Dari" + }, + "pre": { + "english_name": "Principense" + }, + "prf": { + "english_name": "Paranan" + }, + "prg": { + "english_name": "Prussian" + }, + "prh": { + "english_name": "Porohanon" + }, + "pri": { + "english_name": "Paic\u00ee" + }, + "prk": { + "english_name": "Parauk" + }, + "prl": { + "english_name": "Peruvian Sign Language" + }, + "prm": { + "english_name": "Kibiri" + }, + "prn": { + "english_name": "Prasuni" + }, + "pro": { + "english_name": "Proven\u00e7al, Old (to 1500)" + }, + "prp": { + "english_name": "Parsi" + }, + "prq": { + "english_name": "Ash\u00e9ninka Peren\u00e9" + }, + "prr": { + "english_name": "Puri" + }, + "prs": { + "english_name": "Dari" + }, + "prt": { + "english_name": "Phai" + }, + "pru": { + "english_name": "Puragi" + }, + "prw": { + "english_name": "Parawen" + }, + "prx": { + "english_name": "Purik" + }, + "pry": { + "english_name": "Pray 3" + }, + "prz": { + "english_name": "Providencia Sign Language" + }, + "ps": { + "english_name": "Pushto", + "name": "Pushto" + }, + "psa": { + "english_name": "Awyu, Asue" + }, + "psc": { + "english_name": "Persian Sign Language" + }, + "psd": { + "english_name": "Plains Indian Sign Language" + }, + "pse": { + "english_name": "Malay, Central" + }, + "psg": { + "english_name": "Penang Sign Language" + }, + "psh": { + "english_name": "Pashayi, Southwest" + }, + "psi": { + "english_name": "Pashayi, Southeast" + }, + "psl": { + "english_name": "Puerto Rican Sign Language" + }, + "psm": { + "english_name": "Pauserna" + }, + "psn": { + "english_name": "Panasuan" + }, + "pso": { + "english_name": "Polish Sign Language" + }, + "psp": { + "english_name": "Philippine Sign Language" + }, + "psq": { + "english_name": "Pasi" + }, + "psr": { + "english_name": "Portuguese Sign Language" + }, + "pss": { + "english_name": "Kaulong" + }, + "pst": { + "english_name": "Pashto, Central" + }, + "psu": { + "english_name": "Pr\u0101krit, Sauraseni" + }, + "psw": { + "english_name": "Port Sandwich" + }, + "psy": { + "english_name": "Piscataway" + }, + "pt": { + "english_name": "Portuguese", + "name": "Portugu\u00eas" + }, + "pta": { + "english_name": "Pai Tavytera" + }, + "pth": { + "english_name": "Patax\u00f3 H\u00e3-Ha-H\u00e3e" + }, + "pti": { + "english_name": "Pintiini" + }, + "ptn": { + "english_name": "Patani" + }, + "pto": { + "english_name": "Zo'\u00e9" + }, + "ptp": { + "english_name": "Patep" + }, + "ptr": { + "english_name": "Piamatsina" + }, + "ptt": { + "english_name": "Enrekang" + }, + "ptu": { + "english_name": "Bambam" + }, + "ptv": { + "english_name": "Port Vato" + }, + "ptw": { + "english_name": "Pentlatch" + }, + "pty": { + "english_name": "Pathiya" + }, + "pua": { + "english_name": "Purepecha, Western Highland" + }, + "pub": { + "english_name": "Purum" + }, + "puc": { + "english_name": "Punan Merap" + }, + "pud": { + "english_name": "Punan Aput" + }, + "pue": { + "english_name": "Puelche" + }, + "puf": { + "english_name": "Punan Merah" + }, + "pug": { + "english_name": "Phuie" + }, + "pui": { + "english_name": "Puinave" + }, + "puj": { + "english_name": "Punan Tubu" + }, + "puk": { + "english_name": "Pu Ko" + }, + "pum": { + "english_name": "Puma" + }, + "puo": { + "english_name": "Puoc" + }, + "pup": { + "english_name": "Pulabu" + }, + "puq": { + "english_name": "Puquina" + }, + "pur": { + "english_name": "Purubor\u00e1" + }, + "put": { + "english_name": "Putoh" + }, + "puu": { + "english_name": "Punu" + }, + "puw": { + "english_name": "Puluwatese" + }, + "pux": { + "english_name": "Puare" + }, + "puy": { + "english_name": "Purisime\u00f1o" + }, + "pwa": { + "english_name": "Pawaia" + }, + "pwb": { + "english_name": "Panawa" + }, + "pwg": { + "english_name": "Gapapaiwa" + }, + "pwi": { + "english_name": "Patwin" + }, + "pwm": { + "english_name": "Molbog" + }, + "pwn": { + "english_name": "Paiwan" + }, + "pwo": { + "english_name": "Karen, Pwo Western" + }, + "pwr": { + "english_name": "Powari" + }, + "pww": { + "english_name": "Karen, Pwo Northern" + }, + "pxm": { + "english_name": "Mixe, Quetzaltepec" + }, + "pye": { + "english_name": "Krumen, Pye" + }, + "pym": { + "english_name": "Fyam" + }, + "pyn": { + "english_name": "Poyan\u00e1wa" + }, + "pys": { + "english_name": "Paraguayan Sign Language" + }, + "pyu": { + "english_name": "Puyuma" + }, + "pyx": { + "english_name": "Pyu (Myanmar)" + }, + "pyy": { + "english_name": "Pyen" + }, + "pzn": { + "english_name": "Naga, Para" + }, + "qu": { + "english_name": "Quechua" + }, + "qua": { + "english_name": "Quapaw" + }, + "qub": { + "english_name": "Quechua, Huallaga Hu\u00e1nuco" + }, + "quc": { + "english_name": "K'iche'" + }, + "qud": { + "english_name": "Quichua, Calder\u00f3n Highland" + }, + "quf": { + "english_name": "Quechua, Lambayeque" + }, + "qug": { + "english_name": "Quichua, Chimborazo Highland" + }, + "quh": { + "english_name": "Quechua, South Bolivian" + }, + "qui": { + "english_name": "Quileute" + }, + "quk": { + "english_name": "Quechua, Chachapoyas" + }, + "qul": { + "english_name": "Quechua, North Bolivian" + }, + "qum": { + "english_name": "Sipacapense" + }, + "qun": { + "english_name": "Quinault" + }, + "qup": { + "english_name": "Quechua, Southern Pastaza" + }, + "quq": { + "english_name": "Quinqui" + }, + "qur": { + "english_name": "Quechua, Yanahuanca Pasco" + }, + "qus": { + "english_name": "Quichua, Santiago del Estero" + }, + "quv": { + "english_name": "Sacapulteco" + }, + "quw": { + "english_name": "Quichua, Tena Lowland" + }, + "qux": { + "english_name": "Quechua, Yauyos" + }, + "quy": { + "english_name": "Quechua, Ayacucho" + }, + "quz": { + "english_name": "Quechua, Cusco" + }, + "qva": { + "english_name": "Quechua, Ambo-Pasco" + }, + "qvc": { + "english_name": "Quechua, Cajamarca" + }, + "qve": { + "english_name": "Quechua, Eastern Apur\u00edmac" + }, + "qvh": { + "english_name": "Quechua, Huamal\u00edes-Dos de Mayo Hu\u00e1nuco" + }, + "qvi": { + "english_name": "Quichua, Imbabura Highland" + }, + "qvj": { + "english_name": "Quichua, Loja Highland" + }, + "qvl": { + "english_name": "Quechua, Cajatambo North Lima" + }, + "qvm": { + "english_name": "Quechua, Margos-Yarowilca-Lauricocha" + }, + "qvn": { + "english_name": "Quechua, North Jun\u00edn" + }, + "qvo": { + "english_name": "Quechua, Napo Lowland" + }, + "qvp": { + "english_name": "Quechua, Pacaraos" + }, + "qvs": { + "english_name": "Quechua, San Mart\u00edn" + }, + "qvw": { + "english_name": "Quechua, Huaylla Wanca" + }, + "qvy": { + "english_name": "Queyu" + }, + "qvz": { + "english_name": "Quichua, Northern Pastaza" + }, + "qwa": { + "english_name": "Quechua, Corongo Ancash" + }, + "qwc": { + "english_name": "Quechua, Classical" + }, + "qwh": { + "english_name": "Quechua, Huaylas Ancash" + }, + "qwm": { + "english_name": "Kuman (Russia)" + }, + "qws": { + "english_name": "Quechua, Sihuas Ancash" + }, + "qwt": { + "english_name": "Kwalhioqua-Tlatskanai" + }, + "qxa": { + "english_name": "Quechua, Chiqui\u00e1n Ancash" + }, + "qxc": { + "english_name": "Quechua, Chincha" + }, + "qxh": { + "english_name": "Quechua, Panao Hu\u00e1nuco" + }, + "qxl": { + "english_name": "Quichua, Salasaca Highland" + }, + "qxn": { + "english_name": "Quechua, Northern Conchucos Ancash" + }, + "qxo": { + "english_name": "Quechua, Southern Conchucos Ancash" + }, + "qxp": { + "english_name": "Quechua, Puno" + }, + "qxq": { + "english_name": "Qashqa'i" + }, + "qxr": { + "english_name": "Quichua, Ca\u00f1ar Highland" + }, + "qxs": { + "english_name": "Qiang, Southern" + }, + "qxt": { + "english_name": "Quechua, Santa Ana de Tusi Pasco" + }, + "qxu": { + "english_name": "Quechua, Arequipa-La Uni\u00f3n" + }, + "qxw": { + "english_name": "Quechua, Jauja Wanca" + }, + "qya": { + "english_name": "Quenya" + }, + "qyp": { + "english_name": "Quiripi" + }, + "raa": { + "english_name": "Dungmali" + }, + "rab": { + "english_name": "Camling" + }, + "rac": { + "english_name": "Rasawa" + }, + "rad": { + "english_name": "Rade" + }, + "raf": { + "english_name": "Meohang, Western" + }, + "rag": { + "english_name": "Logooli" + }, + "rah": { + "english_name": "Rabha" + }, + "rai": { + "english_name": "Ramoaaina" + }, + "raj": { + "english_name": "Rajasthani" + }, + "rak": { + "english_name": "Tulu-Bohuai" + }, + "ral": { + "english_name": "Ralte" + }, + "ram": { + "english_name": "Canela" + }, + "ran": { + "english_name": "Riantana" + }, + "rao": { + "english_name": "Rao" + }, + "rap": { + "english_name": "Rapanui" + }, + "raq": { + "english_name": "Saam" + }, + "rar": { + "english_name": "Rarotongan" + }, + "ras": { + "english_name": "Tegali" + }, + "rat": { + "english_name": "Razajerdi" + }, + "rau": { + "english_name": "Raute" + }, + "rav": { + "english_name": "Sampang" + }, + "raw": { + "english_name": "Rawang" + }, + "rax": { + "english_name": "Rang" + }, + "ray": { + "english_name": "Rapa" + }, + "raz": { + "english_name": "Rahambuu" + }, + "rbb": { + "english_name": "Palaung, Rumai" + }, + "rbk": { + "english_name": "Bontok, Northern" + }, + "rbl": { + "english_name": "Bikol, Miraya" + }, + "rbp": { + "english_name": "Barababaraba" + }, + "rcf": { + "english_name": "Creole French, R\u00e9union" + }, + "rdb": { + "english_name": "Rudbari" + }, + "rea": { + "english_name": "Rerau" + }, + "reb": { + "english_name": "Rembong" + }, + "ree": { + "english_name": "Kayan, Rejang" + }, + "reg": { + "english_name": "Kara (Tanzania)" + }, + "rei": { + "english_name": "Reli" + }, + "rej": { + "english_name": "Rejang" + }, + "rel": { + "english_name": "Rendille" + }, + "rem": { + "english_name": "Remo" + }, + "ren": { + "english_name": "Rengao" + }, + "rer": { + "english_name": "Rer Bare" + }, + "res": { + "english_name": "Reshe" + }, + "ret": { + "english_name": "Retta" + }, + "rey": { + "english_name": "Reyesano" + }, + "rga": { + "english_name": "Roria" + }, + "rge": { + "english_name": "Romano-Greek" + }, + "rgk": { + "english_name": "Rangkas" + }, + "rgn": { + "english_name": "Romagnol" + }, + "rgr": { + "english_name": "Res\u00edgaro" + }, + "rgs": { + "english_name": "Roglai, Southern" + }, + "rgu": { + "english_name": "Ringgou" + }, + "rhg": { + "english_name": "Rohingya" + }, + "rhp": { + "english_name": "Yahang" + }, + "ria": { + "english_name": "Riang (India)" + }, + "rie": { + "english_name": "Rien" + }, + "rif": { + "english_name": "Tarifit" + }, + "ril": { + "english_name": "Riang (Myanmar)" + }, + "rim": { + "english_name": "Nyaturu" + }, + "rin": { + "english_name": "Nungu" + }, + "rir": { + "english_name": "Ribun" + }, + "rit": { + "english_name": "Ritarungo" + }, + "riu": { + "english_name": "Riung" + }, + "rjg": { + "english_name": "Rajong" + }, + "rji": { + "english_name": "Raji" + }, + "rjs": { + "english_name": "Rajbanshi" + }, + "rka": { + "english_name": "Kraol" + }, + "rkb": { + "english_name": "Rikbaktsa" + }, + "rkh": { + "english_name": "Rakahanga-Manihiki" + }, + "rki": { + "english_name": "Rakhine" + }, + "rkm": { + "english_name": "Marka" + }, + "rkt": { + "english_name": "Rangpuri" + }, + "rkw": { + "english_name": "Arakwal" + }, + "rm": { + "english_name": "Romansh" + }, + "rma": { + "english_name": "Rama" + }, + "rmb": { + "english_name": "Rembarunga" + }, + "rmc": { + "english_name": "Romani, Carpathian" + }, + "rmd": { + "english_name": "Danish, Traveller" + }, + "rme": { + "english_name": "Angloromani" + }, + "rmf": { + "english_name": "Romani, Kalo Finnish" + }, + "rmg": { + "english_name": "Norwegian, Traveller" + }, + "rmh": { + "english_name": "Murkim" + }, + "rmi": { + "english_name": "Lomavren" + }, + "rmk": { + "english_name": "Romkun" + }, + "rml": { + "english_name": "Romani, Baltic" + }, + "rmm": { + "english_name": "Roma" + }, + "rmn": { + "english_name": "Romani, Balkan" + }, + "rmo": { + "english_name": "Romani, Sinte" + }, + "rmp": { + "english_name": "Rempi" + }, + "rmq": { + "english_name": "Cal\u00f3" + }, + "rms": { + "english_name": "Romanian Sign Language" + }, + "rmt": { + "english_name": "Domari" + }, + "rmu": { + "english_name": "Romani, Tavringer" + }, + "rmv": { + "english_name": "Romanova" + }, + "rmw": { + "english_name": "Romani, Welsh" + }, + "rmx": { + "english_name": "Romam" + }, + "rmy": { + "english_name": "Romani, Vlax" + }, + "rmz": { + "english_name": "Marma" + }, + "rn": { + "english_name": "Rundi" + }, + "rna": { + "english_name": "Runa" + }, + "rnd": { + "english_name": "Ruund" + }, + "rng": { + "english_name": "Ronga" + }, + "rnl": { + "english_name": "Ranglong" + }, + "rnn": { + "english_name": "Roon" + }, + "rnp": { + "english_name": "Rongpo" + }, + "rnr": { + "english_name": "Nari Nari" + }, + "rnw": { + "english_name": "Rungwa" + }, + "ro": { + "english_name": "Romanian", + "name": "Rom\u00e2n\u0103" + }, + "rob": { + "english_name": "Tae'" + }, + "roc": { + "english_name": "Roglai, Cacgia" + }, + "rod": { + "english_name": "Rogo" + }, + "roe": { + "english_name": "Ronji" + }, + "rof": { + "english_name": "Rombo" + }, + "rog": { + "english_name": "Roglai, Northern" + }, + "rol": { + "english_name": "Romblomanon" + }, + "rom": { + "english_name": "Romany" + }, + "roo": { + "english_name": "Rotokas" + }, + "rop": { + "english_name": "Kriol" + }, + "ror": { + "english_name": "Rongga" + }, + "rou": { + "english_name": "Runga" + }, + "row": { + "english_name": "Dela-Oenale" + }, + "rpn": { + "english_name": "Repanbitip" + }, + "rpt": { + "english_name": "Rapting" + }, + "rri": { + "english_name": "Ririo" + }, + "rro": { + "english_name": "Waima" + }, + "rrt": { + "english_name": "Arritinngithigh" + }, + "rsb": { + "english_name": "Romano-Serbian" + }, + "rsi": { + "english_name": "Rennellese Sign Language" + }, + "rsl": { + "english_name": "Russian Sign Language" + }, + "rtc": { + "english_name": "Chin, Rungtu" + }, + "rth": { + "english_name": "Ratahan" + }, + "rtm": { + "english_name": "Rotuman" + }, + "rtw": { + "english_name": "Rathawi" + }, + "ru": { + "english_name": "Russian", + "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439" + }, + "rub": { + "english_name": "Gungu" + }, + "ruc": { + "english_name": "Ruuli" + }, + "rue": { + "english_name": "Rusyn" + }, + "ruf": { + "english_name": "Luguru" + }, + "rug": { + "english_name": "Roviana" + }, + "ruh": { + "english_name": "Ruga" + }, + "rui": { + "english_name": "Rufiji" + }, + "ruk": { + "english_name": "Che" + }, + "ruo": { + "english_name": "Romanian, Istro" + }, + "rup": { + "english_name": "Romanian, Macedo-" + }, + "ruq": { + "english_name": "Romanian, Megleno" + }, + "rut": { + "english_name": "Rutul" + }, + "ruu": { + "english_name": "Lobu, Lanas" + }, + "ruy": { + "english_name": "Mala (Nigeria)" + }, + "ruz": { + "english_name": "Ruma" + }, + "rw": { + "english_name": "Kinyarwanda", + "name": "Ikinyarwanda" + }, + "rwa": { + "english_name": "Rawo" + }, + "rwk": { + "english_name": "Rwa" + }, + "rwm": { + "english_name": "Amba (Uganda)" + }, + "rwo": { + "english_name": "Rawa" + }, + "rwr": { + "english_name": "Marwari (India)" + }, + "rxd": { + "english_name": "Ngardi" + }, + "rxw": { + "english_name": "Karuwali" + }, + "ryn": { + "english_name": "Amami-Oshima, Northern" + }, + "rys": { + "english_name": "Yaeyama" + }, + "ryu": { + "english_name": "Okinawan, Central" + }, + "sa": { + "english_name": "Sanskrit" + }, + "saa": { + "english_name": "Saba" + }, + "sab": { + "english_name": "Buglere" + }, + "sac": { + "english_name": "Meskwaki" + }, + "sad": { + "english_name": "Sandawe" + }, + "sae": { + "english_name": "Saban\u00ea" + }, + "saf": { + "english_name": "Safaliba" + }, + "sah": { + "english_name": "Yakut" + }, + "saj": { + "english_name": "Sahu" + }, + "sak": { + "english_name": "Sake" + }, + "sam": { + "english_name": "Aramaic, Samaritan" + }, + "sao": { + "english_name": "Sause" + }, + "saq": { + "english_name": "Samburu" + }, + "sar": { + "english_name": "Saraveca" + }, + "sas": { + "english_name": "Sasak" + }, + "sat": { + "english_name": "Santali" + }, + "sau": { + "english_name": "Saleman" + }, + "sav": { + "english_name": "Saafi-Saafi" + }, + "saw": { + "english_name": "Sawi" + }, + "sax": { + "english_name": "Sa" + }, + "say": { + "english_name": "Saya" + }, + "saz": { + "english_name": "Saurashtra" + }, + "sba": { + "english_name": "Ngambay" + }, + "sbb": { + "english_name": "Simbo" + }, + "sbc": { + "english_name": "Kele (Papua New Guinea)" + }, + "sbd": { + "english_name": "Samo, Southern" + }, + "sbe": { + "english_name": "Saliba" + }, + "sbf": { + "english_name": "Shabo" + }, + "sbg": { + "english_name": "Seget" + }, + "sbh": { + "english_name": "Sori-Harengan" + }, + "sbi": { + "english_name": "Seti" + }, + "sbj": { + "english_name": "Surbakhal" + }, + "sbk": { + "english_name": "Safwa" + }, + "sbl": { + "english_name": "Sambal, Botolan" + }, + "sbm": { + "english_name": "Sagala" + }, + "sbn": { + "english_name": "Bhil, Sindhi" + }, + "sbo": { + "english_name": "Sab\u00fcm" + }, + "sbp": { + "english_name": "Sangu (Tanzania)" + }, + "sbq": { + "english_name": "Sileibi" + }, + "sbr": { + "english_name": "Sembakung Murut" + }, + "sbs": { + "english_name": "Subiya" + }, + "sbt": { + "english_name": "Kimki" + }, + "sbu": { + "english_name": "Bhoti, Stod" + }, + "sbv": { + "english_name": "Sabine" + }, + "sbw": { + "english_name": "Simba" + }, + "sbx": { + "english_name": "Seberuang" + }, + "sby": { + "english_name": "Soli" + }, + "sbz": { + "english_name": "Sara Kaba" + }, + "sc": { + "english_name": "Sardinian" + }, + "scb": { + "english_name": "Chut" + }, + "sce": { + "english_name": "Dongxiang" + }, + "scf": { + "english_name": "Creole French, San Miguel" + }, + "scg": { + "english_name": "Sanggau" + }, + "sch": { + "english_name": "Sakachep" + }, + "sci": { + "english_name": "Creole Malay, Sri Lankan" + }, + "sck": { + "english_name": "Sadri" + }, + "scl": { + "english_name": "Shina" + }, + "scn": { + "english_name": "Sicilian" + }, + "sco": { + "english_name": "Scots" + }, + "scp": { + "english_name": "Helambu Sherpa" + }, + "scq": { + "english_name": "Sa'och" + }, + "scs": { + "english_name": "Slavey, North" + }, + "scu": { + "english_name": "Shumcho" + }, + "scv": { + "english_name": "Sheni" + }, + "scw": { + "english_name": "Sha" + }, + "scx": { + "english_name": "Sicel" + }, + "sd": { + "english_name": "Sindhi" + }, + "sda": { + "english_name": "Toraja-Sa'dan" + }, + "sdb": { + "english_name": "Shabak" + }, + "sdc": { + "english_name": "Sardinian, Sassarese" + }, + "sde": { + "english_name": "Surubu" + }, + "sdf": { + "english_name": "Sarli" + }, + "sdg": { + "english_name": "Savi" + }, + "sdh": { + "english_name": "Kurdish, Southern" + }, + "sdj": { + "english_name": "Suundi" + }, + "sdk": { + "english_name": "Sos Kundi" + }, + "sdl": { + "english_name": "Saudi Arabian Sign Language" + }, + "sdm": { + "english_name": "Semandang" + }, + "sdn": { + "english_name": "Sardinian, Gallurese" + }, + "sdo": { + "english_name": "Bidayuh, Bukar-Sadung" + }, + "sdp": { + "english_name": "Sherdukpen" + }, + "sdr": { + "english_name": "Sadri, Oraon" + }, + "sds": { + "english_name": "Sened" + }, + "sdt": { + "english_name": "Shuadit" + }, + "sdu": { + "english_name": "Sarudu" + }, + "sdx": { + "english_name": "Melanau, Sibu" + }, + "sdz": { + "english_name": "Sallands" + }, + "se": { + "english_name": "Sami, Northern" + }, + "sea": { + "english_name": "Semai" + }, + "seb": { + "english_name": "Senoufo, Shempire" + }, + "sec": { + "english_name": "Sechelt" + }, + "sed": { + "english_name": "Sedang" + }, + "see": { + "english_name": "Seneca" + }, + "sef": { + "english_name": "Senoufo, Cebaara" + }, + "seg": { + "english_name": "Segeju" + }, + "seh": { + "english_name": "Sena" + }, + "sei": { + "english_name": "Seri" + }, + "sej": { + "english_name": "Sene" + }, + "sek": { + "english_name": "Sekani" + }, + "sel": { + "english_name": "Selkup" + }, + "sen": { + "english_name": "S\u00e9noufo, Nanerig\u00e9" + }, + "seo": { + "english_name": "Suarmin" + }, + "sep": { + "english_name": "S\u00e9noufo, S\u00ecc\u00ect\u00e9" + }, + "seq": { + "english_name": "S\u00e9noufo, Senara" + }, + "ser": { + "english_name": "Serrano" + }, + "ses": { + "english_name": "Songhai, Koyraboro Senni" + }, + "set": { + "english_name": "Sentani" + }, + "seu": { + "english_name": "Serui-Laut" + }, + "sev": { + "english_name": "Senoufo, Nyarafolo" + }, + "sew": { + "english_name": "Sewa Bay" + }, + "sey": { + "english_name": "Secoya" + }, + "sez": { + "english_name": "Chin, Senthang" + }, + "sfb": { + "english_name": "Langue des signes de Belgique Francophone" + }, + "sfe": { + "english_name": "Subanen, Eastern" + }, + "sfm": { + "english_name": "Miao, Small Flowery" + }, + "sfs": { + "english_name": "South African Sign Language" + }, + "sfw": { + "english_name": "Sehwi" + }, + "sg": { + "english_name": "Sango" + }, + "sga": { + "english_name": "Irish, Old (to 900)" + }, + "sgb": { + "english_name": "Ayta, Mag-antsi" + }, + "sgc": { + "english_name": "Kipsigis" + }, + "sgd": { + "english_name": "Surigaonon" + }, + "sge": { + "english_name": "Segai" + }, + "sgg": { + "english_name": "Swiss-German Sign Language" + }, + "sgh": { + "english_name": "Shughni" + }, + "sgi": { + "english_name": "Suga" + }, + "sgj": { + "english_name": "Surgujia" + }, + "sgk": { + "english_name": "Sangkong" + }, + "sgm": { + "english_name": "Singa" + }, + "sgp": { + "english_name": "Singpho" + }, + "sgr": { + "english_name": "Sangisari" + }, + "sgs": { + "english_name": "Samogitian" + }, + "sgt": { + "english_name": "Brokpake" + }, + "sgu": { + "english_name": "Salas" + }, + "sgw": { + "english_name": "Sebat Bet Gurage" + }, + "sgx": { + "english_name": "Sierra Leone Sign Language" + }, + "sgy": { + "english_name": "Sanglechi" + }, + "sgz": { + "english_name": "Sursurunga" + }, + "sha": { + "english_name": "Shall-Zwall" + }, + "shb": { + "english_name": "Ninam" + }, + "shc": { + "english_name": "Sonde" + }, + "shd": { + "english_name": "Kundal Shahi" + }, + "she": { + "english_name": "Sheko" + }, + "shg": { + "english_name": "Shua" + }, + "shh": { + "english_name": "Shoshoni" + }, + "shi": { + "english_name": "Tachelhit" + }, + "shj": { + "english_name": "Shatt" + }, + "shk": { + "english_name": "Shilluk" + }, + "shl": { + "english_name": "Shendu" + }, + "shm": { + "english_name": "Shahrudi" + }, + "shn": { + "english_name": "Shan" + }, + "sho": { + "english_name": "Shanga" + }, + "shp": { + "english_name": "Shipibo-Conibo" + }, + "shq": { + "english_name": "Sala" + }, + "shr": { + "english_name": "Shi" + }, + "shs": { + "english_name": "Shuswap" + }, + "sht": { + "english_name": "Shasta" + }, + "shu": { + "english_name": "Arabic, Chadian" + }, + "shv": { + "english_name": "Shehri" + }, + "shw": { + "english_name": "Shwai" + }, + "shx": { + "english_name": "She" + }, + "shy": { + "english_name": "Tachawit" + }, + "shz": { + "english_name": "Senoufo, Syenara" + }, + "si": { + "english_name": "Sinhala" + }, + "sia": { + "english_name": "Sami, Akkala" + }, + "sib": { + "english_name": "Sebop" + }, + "sid": { + "english_name": "Sidamo" + }, + "sie": { + "english_name": "Simaa" + }, + "sif": { + "english_name": "Siamou" + }, + "sig": { + "english_name": "Paasaal" + }, + "sih": { + "english_name": "Zire" + }, + "sii": { + "english_name": "Shom Peng" + }, + "sij": { + "english_name": "Numbami" + }, + "sik": { + "english_name": "Sikiana" + }, + "sil": { + "english_name": "Sisaala, Tumulung" + }, + "sim": { + "english_name": "Mende (Papua New Guinea)" + }, + "sip": { + "english_name": "Sikkimese" + }, + "siq": { + "english_name": "Sonia" + }, + "sir": { + "english_name": "Siri" + }, + "sis": { + "english_name": "Siuslaw" + }, + "siu": { + "english_name": "Sinagen" + }, + "siv": { + "english_name": "Sumariup" + }, + "siw": { + "english_name": "Siwai" + }, + "six": { + "english_name": "Sumau" + }, + "siy": { + "english_name": "Sivandi" + }, + "siz": { + "english_name": "Siwi" + }, + "sja": { + "english_name": "Epena" + }, + "sjb": { + "english_name": "Sajau Basap" + }, + "sjd": { + "english_name": "Sami, Kildin" + }, + "sje": { + "english_name": "Sami, Pite" + }, + "sjg": { + "english_name": "Assangori" + }, + "sjk": { + "english_name": "Sami, Kemi" + }, + "sjl": { + "english_name": "Sajalong" + }, + "sjm": { + "english_name": "Mapun" + }, + "sjn": { + "english_name": "Sindarin" + }, + "sjo": { + "english_name": "Xibe" + }, + "sjp": { + "english_name": "Surjapuri" + }, + "sjr": { + "english_name": "Siar-Lak" + }, + "sjs": { + "english_name": "Senhaja De Srair" + }, + "sjt": { + "english_name": "Sami, Ter" + }, + "sju": { + "english_name": "Sami, Ume" + }, + "sjw": { + "english_name": "Shawnee" + }, + "sk": { + "english_name": "Slovak", + "name": "Slovensk\u00fd" + }, + "ska": { + "english_name": "Skagit" + }, + "skb": { + "english_name": "Saek" + }, + "skc": { + "english_name": "Ma Manda" + }, + "skd": { + "english_name": "Miwok, Southern Sierra" + }, + "ske": { + "english_name": "Seke (Vanuatu)" + }, + "skf": { + "english_name": "Sakirabi\u00e1" + }, + "skg": { + "english_name": "Malagasy, Sakalava" + }, + "skh": { + "english_name": "Sikule" + }, + "ski": { + "english_name": "Sika" + }, + "skj": { + "english_name": "Seke (Nepal)" + }, + "skk": { + "english_name": "Sok" + }, + "skm": { + "english_name": "Kutong" + }, + "skn": { + "english_name": "Subanon, Kolibugan" + }, + "sko": { + "english_name": "Seko Tengah" + }, + "skp": { + "english_name": "Sekapan" + }, + "skq": { + "english_name": "Sininkere" + }, + "skr": { + "english_name": "Seraiki" + }, + "sks": { + "english_name": "Maia" + }, + "skt": { + "english_name": "Sakata" + }, + "sku": { + "english_name": "Sakao" + }, + "skv": { + "english_name": "Skou" + }, + "skw": { + "english_name": "Creole Dutch, Skepi" + }, + "skx": { + "english_name": "Seko Padang" + }, + "sky": { + "english_name": "Sikaiana" + }, + "skz": { + "english_name": "Sekar" + }, + "sl": { + "english_name": "Slovenian", + "name": "sloven\u0161\u010dina" + }, + "slc": { + "english_name": "S\u00e1liba" + }, + "sld": { + "english_name": "Sissala" + }, + "sle": { + "english_name": "Sholaga" + }, + "slf": { + "english_name": "Swiss-Italian Sign Language" + }, + "slg": { + "english_name": "Selungai Murut" + }, + "slh": { + "english_name": "Salish, Southern Puget Sound" + }, + "sli": { + "english_name": "Silesian, Lower" + }, + "slj": { + "english_name": "Salum\u00e1" + }, + "sll": { + "english_name": "Salt-Yui" + }, + "slm": { + "english_name": "Sama, Pangutaran" + }, + "sln": { + "english_name": "Salinan" + }, + "slp": { + "english_name": "Lamaholot" + }, + "slq": { + "english_name": "Salchuq" + }, + "slr": { + "english_name": "Salar" + }, + "sls": { + "english_name": "Singapore Sign Language" + }, + "slt": { + "english_name": "Sila" + }, + "slu": { + "english_name": "Selaru" + }, + "slw": { + "english_name": "Sialum" + }, + "slx": { + "english_name": "Salampasu" + }, + "sly": { + "english_name": "Selayar" + }, + "slz": { + "english_name": "Ma'ya" + }, + "sm": { + "english_name": "Samoan" + }, + "sma": { + "english_name": "Sami, Southern" + }, + "smb": { + "english_name": "Simbari" + }, + "smc": { + "english_name": "Som" + }, + "smd": { + "english_name": "Sama" + }, + "smf": { + "english_name": "Auwe" + }, + "smg": { + "english_name": "Simbali" + }, + "smh": { + "english_name": "Samei" + }, + "smj": { + "english_name": "Lule Sami" + }, + "smk": { + "english_name": "Bolinao" + }, + "sml": { + "english_name": "Sama, Central" + }, + "smm": { + "english_name": "Musasa" + }, + "smn": { + "english_name": "Sami, Inari" + }, + "smp": { + "english_name": "Samaritan" + }, + "smq": { + "english_name": "Samo" + }, + "smr": { + "english_name": "Simeulue" + }, + "sms": { + "english_name": "Sami, Skolt" + }, + "smt": { + "english_name": "Simte" + }, + "smu": { + "english_name": "Somray" + }, + "smv": { + "english_name": "Samvedi" + }, + "smw": { + "english_name": "Sumbawa" + }, + "smx": { + "english_name": "Samba" + }, + "smy": { + "english_name": "Semnani" + }, + "smz": { + "english_name": "Simeku" + }, + "sn": { + "english_name": "Shona" + }, + "snb": { + "english_name": "Sebuyau" + }, + "snc": { + "english_name": "Sinaugoro" + }, + "sne": { + "english_name": "Bidayuh, Bau" + }, + "snf": { + "english_name": "Noon" + }, + "sng": { + "english_name": "Sanga (Democratic Republic of Congo)" + }, + "snh": { + "english_name": "Shinabo" + }, + "sni": { + "english_name": "Sensi" + }, + "snj": { + "english_name": "Sango, Riverain" + }, + "snk": { + "english_name": "Soninke" + }, + "snl": { + "english_name": "Sangil" + }, + "snm": { + "english_name": "Ma'di, Southern" + }, + "snn": { + "english_name": "Siona" + }, + "sno": { + "english_name": "Snohomish" + }, + "snp": { + "english_name": "Siane" + }, + "snq": { + "english_name": "Sangu (Gabon)" + }, + "snr": { + "english_name": "Sihan" + }, + "sns": { + "english_name": "South West Bay" + }, + "snu": { + "english_name": "Senggi" + }, + "snv": { + "english_name": "Sa'ban" + }, + "snw": { + "english_name": "Selee" + }, + "snx": { + "english_name": "Sam" + }, + "sny": { + "english_name": "Saniyo-Hiyewe" + }, + "snz": { + "english_name": "Sinsauru" + }, + "so": { + "english_name": "Somali" + }, + "soa": { + "english_name": "Thai Song" + }, + "sob": { + "english_name": "Sobei" + }, + "soc": { + "english_name": "So (Democratic Republic of Congo)" + }, + "sod": { + "english_name": "Songoora" + }, + "soe": { + "english_name": "Songomeno" + }, + "sog": { + "english_name": "Sogdian" + }, + "soh": { + "english_name": "Aka" + }, + "soi": { + "english_name": "Sonha" + }, + "soj": { + "english_name": "Soi" + }, + "sok": { + "english_name": "Sokoro" + }, + "sol": { + "english_name": "Solos" + }, + "soo": { + "english_name": "Songo" + }, + "sop": { + "english_name": "Songe" + }, + "soq": { + "english_name": "Kanasi" + }, + "sor": { + "english_name": "Somrai" + }, + "sos": { + "english_name": "Seeku" + }, + "sou": { + "english_name": "Thai, Southern" + }, + "sov": { + "english_name": "Sonsorol" + }, + "sow": { + "english_name": "Sowanda" + }, + "sox": { + "english_name": "Swo" + }, + "soy": { + "english_name": "Miyobe" + }, + "soz": { + "english_name": "Temi" + }, + "spb": { + "english_name": "Sepa (Indonesia)" + }, + "spc": { + "english_name": "Sap\u00e9" + }, + "spd": { + "english_name": "Saep" + }, + "spe": { + "english_name": "Sepa (Papua New Guinea)" + }, + "spg": { + "english_name": "Sian" + }, + "spi": { + "english_name": "Saponi" + }, + "spk": { + "english_name": "Sengo" + }, + "spl": { + "english_name": "Selepet" + }, + "spm": { + "english_name": "Akukem" + }, + "spo": { + "english_name": "Spokane" + }, + "spp": { + "english_name": "Senoufo, Supyire" + }, + "spq": { + "english_name": "Spanish, Loreto-Ucayali" + }, + "spr": { + "english_name": "Saparua" + }, + "sps": { + "english_name": "Saposa" + }, + "spt": { + "english_name": "Bhoti, Spiti" + }, + "spu": { + "english_name": "Sapuan" + }, + "spv": { + "english_name": "Sambalpuri" + }, + "spx": { + "english_name": "Picene, South" + }, + "spy": { + "english_name": "Sabaot" + }, + "sq": { + "english_name": "Albanian" + }, + "sqa": { + "english_name": "Shama-Sambuga" + }, + "sqh": { + "english_name": "Shau" + }, + "sqk": { + "english_name": "Albanian Sign Language" + }, + "sqm": { + "english_name": "Suma" + }, + "sqn": { + "english_name": "Susquehannock" + }, + "sqo": { + "english_name": "Sorkhei" + }, + "sqq": { + "english_name": "Sou" + }, + "sqr": { + "english_name": "Arabic, Siculo" + }, + "sqs": { + "english_name": "Sri Lankan Sign Language" + }, + "sqt": { + "english_name": "Soqotri" + }, + "squ": { + "english_name": "Squamish" + }, + "sr": { + "english_name": "Serbian", + "name": "\u0441\u0440\u043f\u0441\u043a\u0438" + }, + "sra": { + "english_name": "Saruga" + }, + "srb": { + "english_name": "Sora" + }, + "src": { + "english_name": "Sardinian, Logudorese" + }, + "sre": { + "english_name": "Sara" + }, + "srf": { + "english_name": "Nafi" + }, + "srg": { + "english_name": "Sulod" + }, + "srh": { + "english_name": "Sarikoli" + }, + "sri": { + "english_name": "Siriano" + }, + "srk": { + "english_name": "Serudung Murut" + }, + "srl": { + "english_name": "Isirawa" + }, + "srm": { + "english_name": "Saramaccan" + }, + "srn": { + "english_name": "Sranan Tongo" + }, + "sro": { + "english_name": "Sardinian, Campidanese" + }, + "srq": { + "english_name": "Sirion\u00f3" + }, + "srr": { + "english_name": "Serer" + }, + "srs": { + "english_name": "Sarsi" + }, + "srt": { + "english_name": "Sauri" + }, + "sru": { + "english_name": "Suru\u00ed" + }, + "srv": { + "english_name": "Sorsoganon, Southern" + }, + "srw": { + "english_name": "Serua" + }, + "srx": { + "english_name": "Sirmauri" + }, + "sry": { + "english_name": "Sera" + }, + "srz": { + "english_name": "Shahmirzadi" + }, + "ss": { + "english_name": "Swati" + }, + "ssb": { + "english_name": "Sama, Southern" + }, + "ssc": { + "english_name": "Suba-Simbiti" + }, + "ssd": { + "english_name": "Siroi" + }, + "sse": { + "english_name": "Balangingi" + }, + "ssf": { + "english_name": "Thao" + }, + "ssg": { + "english_name": "Seimat" + }, + "ssh": { + "english_name": "Arabic, Shihhi" + }, + "ssi": { + "english_name": "Sansi" + }, + "ssj": { + "english_name": "Sausi" + }, + "ssk": { + "english_name": "Sunam" + }, + "ssl": { + "english_name": "Sisaala, Western" + }, + "ssm": { + "english_name": "Semnam" + }, + "ssn": { + "english_name": "Waata" + }, + "sso": { + "english_name": "Sissano" + }, + "ssp": { + "english_name": "Spanish Sign Language" + }, + "ssq": { + "english_name": "So'a" + }, + "ssr": { + "english_name": "Swiss-French Sign Language" + }, + "sss": { + "english_name": "S\u00f4" + }, + "sst": { + "english_name": "Sinasina" + }, + "ssu": { + "english_name": "Susuami" + }, + "ssv": { + "english_name": "Shark Bay" + }, + "ssx": { + "english_name": "Samberigi" + }, + "ssy": { + "english_name": "Saho" + }, + "ssz": { + "english_name": "Sengseng" + }, + "st": { + "english_name": "Sotho, Southern" + }, + "sta": { + "english_name": "Settla" + }, + "stb": { + "english_name": "Subanen, Northern" + }, + "std": { + "english_name": "Sentinel" + }, + "ste": { + "english_name": "Liana-Seti" + }, + "stf": { + "english_name": "Seta" + }, + "stg": { + "english_name": "Trieng" + }, + "sth": { + "english_name": "Shelta" + }, + "sti": { + "english_name": "Stieng, Bulo" + }, + "stj": { + "english_name": "Samo, Matya" + }, + "stk": { + "english_name": "Arammba" + }, + "stl": { + "english_name": "Stellingwerfs" + }, + "stm": { + "english_name": "Setaman" + }, + "stn": { + "english_name": "Owa" + }, + "sto": { + "english_name": "Stoney" + }, + "stp": { + "english_name": "Tepehuan, Southeastern" + }, + "stq": { + "english_name": "Saterfriesisch" + }, + "str": { + "english_name": "Salish, Straits" + }, + "sts": { + "english_name": "Shumashti" + }, + "stt": { + "english_name": "Stieng, Budeh" + }, + "stu": { + "english_name": "Samtao" + }, + "stv": { + "english_name": "Silt'e" + }, + "stw": { + "english_name": "Satawalese" + }, + "sty": { + "english_name": "Tatar, Siberian" + }, + "su": { + "english_name": "Sundanese" + }, + "sua": { + "english_name": "Sulka" + }, + "sub": { + "english_name": "Suku" + }, + "suc": { + "english_name": "Subanon, Western" + }, + "sue": { + "english_name": "Suena" + }, + "sug": { + "english_name": "Suganga" + }, + "sui": { + "english_name": "Suki" + }, + "suj": { + "english_name": "Shubi" + }, + "suk": { + "english_name": "Sukuma" + }, + "suq": { + "english_name": "Suri" + }, + "sur": { + "english_name": "Mwaghavul" + }, + "sus": { + "english_name": "Susu" + }, + "sut": { + "english_name": "Subtiaba" + }, + "suv": { + "english_name": "Puroik" + }, + "suw": { + "english_name": "Sumbwa" + }, + "sux": { + "english_name": "Sumerian" + }, + "suy": { + "english_name": "Suy\u00e1" + }, + "suz": { + "english_name": "Sunwar" + }, + "sv": { + "english_name": "Swedish", + "name": "Svenska" + }, + "sva": { + "english_name": "Svan" + }, + "svb": { + "english_name": "Ulau-Suain" + }, + "svc": { + "english_name": "Creole English, Vincentian" + }, + "sve": { + "english_name": "Serili" + }, + "svk": { + "english_name": "Slovakian Sign Language" + }, + "svm": { + "english_name": "Slavomolisano" + }, + "svr": { + "english_name": "Savara" + }, + "svs": { + "english_name": "Savosavo" + }, + "svx": { + "english_name": "Skalvian" + }, + "sw": { + "english_name": "Swahili (macrolanguage)" + }, + "swb": { + "english_name": "Comorian, Maore" + }, + "swc": { + "english_name": "Swahili, Congo" + }, + "swf": { + "english_name": "Sere" + }, + "swg": { + "english_name": "Swabian" + }, + "swh": { + "english_name": "Swahili (individual language)" + }, + "swi": { + "english_name": "Sui" + }, + "swj": { + "english_name": "Sira" + }, + "swk": { + "english_name": "Sena, Malawi" + }, + "swl": { + "english_name": "Swedish Sign Language" + }, + "swm": { + "english_name": "Samosa" + }, + "swn": { + "english_name": "Sawknah" + }, + "swo": { + "english_name": "Shanenawa" + }, + "swp": { + "english_name": "Suau" + }, + "swq": { + "english_name": "Sharwa" + }, + "swr": { + "english_name": "Saweru" + }, + "sws": { + "english_name": "Seluwasan" + }, + "swt": { + "english_name": "Sawila" + }, + "swu": { + "english_name": "Suwawa" + }, + "swv": { + "english_name": "Shekhawati" + }, + "sww": { + "english_name": "Sowa" + }, + "swx": { + "english_name": "Suruah\u00e1" + }, + "swy": { + "english_name": "Sarua" + }, + "sxb": { + "english_name": "Suba" + }, + "sxc": { + "english_name": "Sicanian" + }, + "sxe": { + "english_name": "Sighu" + }, + "sxg": { + "english_name": "Shixing" + }, + "sxk": { + "english_name": "Kalapuya, Southern" + }, + "sxl": { + "english_name": "Selian" + }, + "sxm": { + "english_name": "Samre" + }, + "sxn": { + "english_name": "Sangir" + }, + "sxo": { + "english_name": "Sorothaptic" + }, + "sxr": { + "english_name": "Saaroa" + }, + "sxs": { + "english_name": "Sasaru" + }, + "sxu": { + "english_name": "Saxon, Upper" + }, + "sxw": { + "english_name": "Gbe, Saxwe" + }, + "sya": { + "english_name": "Siang" + }, + "syb": { + "english_name": "Subanen, Central" + }, + "syc": { + "english_name": "Syriac, Classical" + }, + "syi": { + "english_name": "Seki" + }, + "syk": { + "english_name": "Sukur" + }, + "syl": { + "english_name": "Sylheti" + }, + "sym": { + "english_name": "Samo, Maya" + }, + "syn": { + "english_name": "Senaya" + }, + "syo": { + "english_name": "Suoy" + }, + "syr": { + "english_name": "Syriac" + }, + "sys": { + "english_name": "Sinyar" + }, + "syw": { + "english_name": "Kagate" + }, + "syy": { + "english_name": "Al-Sayyid Bedouin Sign Language" + }, + "sza": { + "english_name": "Semelai" + }, + "szb": { + "english_name": "Ngalum" + }, + "szc": { + "english_name": "Semaq Beri" + }, + "szd": { + "english_name": "Seru" + }, + "sze": { + "english_name": "Seze" + }, + "szg": { + "english_name": "Sengele" + }, + "szl": { + "english_name": "Silesian" + }, + "szn": { + "english_name": "Sula" + }, + "szp": { + "english_name": "Suabo" + }, + "szv": { + "english_name": "Isu (Fako Division)" + }, + "szw": { + "english_name": "Sawai" + }, + "ta": { + "english_name": "Tamil", + "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" + }, + "taa": { + "english_name": "Tanana, Lower" + }, + "tab": { + "english_name": "Tabassaran" + }, + "tac": { + "english_name": "Tarahumara, Lowland" + }, + "tad": { + "english_name": "Tause" + }, + "tae": { + "english_name": "Tariana" + }, + "taf": { + "english_name": "Tapirap\u00e9" + }, + "tag": { + "english_name": "Tagoi" + }, + "taj": { + "english_name": "Tamang, Eastern" + }, + "tak": { + "english_name": "Tala" + }, + "tal": { + "english_name": "Tal" + }, + "tan": { + "english_name": "Tangale" + }, + "tao": { + "english_name": "Yami" + }, + "tap": { + "english_name": "Taabwa" + }, + "taq": { + "english_name": "Tamasheq" + }, + "tar": { + "english_name": "Tarahumara, Central" + }, + "tas": { + "english_name": "Tay Boi" + }, + "tau": { + "english_name": "Tanana, Upper" + }, + "tav": { + "english_name": "Tatuyo" + }, + "taw": { + "english_name": "Tai" + }, + "tax": { + "english_name": "Tamki" + }, + "tay": { + "english_name": "Atayal" + }, + "taz": { + "english_name": "Tocho" + }, + "tba": { + "english_name": "Aikan\u00e3" + }, + "tbb": { + "english_name": "Tapeba" + }, + "tbc": { + "english_name": "Takia" + }, + "tbd": { + "english_name": "Kaki Ae" + }, + "tbe": { + "english_name": "Tanimbili" + }, + "tbf": { + "english_name": "Mandara" + }, + "tbg": { + "english_name": "Tairora, North" + }, + "tbh": { + "english_name": "Thurawal" + }, + "tbi": { + "english_name": "Gaam" + }, + "tbj": { + "english_name": "Tiang" + }, + "tbk": { + "english_name": "Tagbanwa, Calamian" + }, + "tbl": { + "english_name": "Tboli" + }, + "tbm": { + "english_name": "Tagbu" + }, + "tbn": { + "english_name": "Tunebo, Barro Negro" + }, + "tbo": { + "english_name": "Tawala" + }, + "tbp": { + "english_name": "Taworta" + }, + "tbr": { + "english_name": "Tumtum" + }, + "tbs": { + "english_name": "Tanguat" + }, + "tbt": { + "english_name": "Tembo (Kitembo)" + }, + "tbu": { + "english_name": "Tubar" + }, + "tbv": { + "english_name": "Tobo" + }, + "tbw": { + "english_name": "Tagbanwa" + }, + "tbx": { + "english_name": "Kapin" + }, + "tby": { + "english_name": "Tabaru" + }, + "tbz": { + "english_name": "Ditammari" + }, + "tca": { + "english_name": "Ticuna" + }, + "tcb": { + "english_name": "Tanacross" + }, + "tcc": { + "english_name": "Datooga" + }, + "tcd": { + "english_name": "Tafi" + }, + "tce": { + "english_name": "Tutchone, Southern" + }, + "tcf": { + "english_name": "Me'phaa, Malinaltepec" + }, + "tcg": { + "english_name": "Tamagario" + }, + "tch": { + "english_name": "Creole English, Turks And Caicos" + }, + "tci": { + "english_name": "W\u00e1ra" + }, + "tck": { + "english_name": "Tchitchege" + }, + "tcl": { + "english_name": "Taman (Myanmar)" + }, + "tcm": { + "english_name": "Tanahmerah" + }, + "tcn": { + "english_name": "Tichurong" + }, + "tco": { + "english_name": "Taungyo" + }, + "tcp": { + "english_name": "Chin, Tawr" + }, + "tcq": { + "english_name": "Kaiy" + }, + "tcs": { + "english_name": "Creole, Torres Strait" + }, + "tct": { + "english_name": "T'en" + }, + "tcu": { + "english_name": "Tarahumara, Southeastern" + }, + "tcw": { + "english_name": "Totonac, Tecpatl\u00e1n" + }, + "tcx": { + "english_name": "Toda" + }, + "tcy": { + "english_name": "Tulu" + }, + "tcz": { + "english_name": "Chin, Thado" + }, + "tda": { + "english_name": "Tagdal" + }, + "tdb": { + "english_name": "Panchpargania" + }, + "tdc": { + "english_name": "Ember\u00e1-Tad\u00f3" + }, + "tdd": { + "english_name": "Tai N\u00fca" + }, + "tde": { + "english_name": "Dogon, Tiranige Diga" + }, + "tdf": { + "english_name": "Talieng" + }, + "tdg": { + "english_name": "Tamang, Western" + }, + "tdh": { + "english_name": "Thulung" + }, + "tdi": { + "english_name": "Tomadino" + }, + "tdj": { + "english_name": "Tajio" + }, + "tdk": { + "english_name": "Tambas" + }, + "tdl": { + "english_name": "Sur" + }, + "tdn": { + "english_name": "Tondano" + }, + "tdo": { + "english_name": "Teme" + }, + "tdq": { + "english_name": "Tita" + }, + "tdr": { + "english_name": "Todrah" + }, + "tds": { + "english_name": "Doutai" + }, + "tdt": { + "english_name": "Tetun Dili" + }, + "tdu": { + "english_name": "Dusun, Tempasuk" + }, + "tdv": { + "english_name": "Toro" + }, + "tdx": { + "english_name": "Malagasy, Tandroy-Mahafaly" + }, + "tdy": { + "english_name": "Tadyawan" + }, + "te": { + "english_name": "Telugu" + }, + "tea": { + "english_name": "Temiar" + }, + "teb": { + "english_name": "Tetete" + }, + "tec": { + "english_name": "Terik" + }, + "ted": { + "english_name": "Krumen, Tepo" + }, + "tee": { + "english_name": "Tepehua, Huehuetla" + }, + "tef": { + "english_name": "Teressa" + }, + "teg": { + "english_name": "Teke-Tege" + }, + "teh": { + "english_name": "Tehuelche" + }, + "tei": { + "english_name": "Torricelli" + }, + "tek": { + "english_name": "Teke, Ibali" + }, + "tem": { + "english_name": "Timne" + }, + "ten": { + "english_name": "Tama (Colombia)" + }, + "teo": { + "english_name": "Teso" + }, + "tep": { + "english_name": "Tepecano" + }, + "teq": { + "english_name": "Temein" + }, + "ter": { + "english_name": "Tereno" + }, + "tes": { + "english_name": "Tengger" + }, + "tet": { + "english_name": "Tetum" + }, + "teu": { + "english_name": "Soo" + }, + "tev": { + "english_name": "Teor" + }, + "tew": { + "english_name": "Tewa (USA)" + }, + "tex": { + "english_name": "Tennet" + }, + "tey": { + "english_name": "Tulishi" + }, + "tfi": { + "english_name": "Gbe, Tofin" + }, + "tfn": { + "english_name": "Tanaina" + }, + "tfo": { + "english_name": "Tefaro" + }, + "tfr": { + "english_name": "Teribe" + }, + "tft": { + "english_name": "Ternate" + }, + "tg": { + "english_name": "Tajik" + }, + "tga": { + "english_name": "Sagalla" + }, + "tgb": { + "english_name": "Tobilung" + }, + "tgc": { + "english_name": "Tigak" + }, + "tgd": { + "english_name": "Ciwogai" + }, + "tge": { + "english_name": "Tamang, Eastern Gorkha" + }, + "tgf": { + "english_name": "Chalikha" + }, + "tgh": { + "english_name": "Creole English, Tobagonian" + }, + "tgi": { + "english_name": "Lawunuia" + }, + "tgj": { + "english_name": "Tagin" + }, + "tgn": { + "english_name": "Tandaganon" + }, + "tgo": { + "english_name": "Sudest" + }, + "tgp": { + "english_name": "Tangoa" + }, + "tgq": { + "english_name": "Tring" + }, + "tgr": { + "english_name": "Tareng" + }, + "tgs": { + "english_name": "Nume" + }, + "tgt": { + "english_name": "Tagbanwa, Central" + }, + "tgu": { + "english_name": "Tanggu" + }, + "tgv": { + "english_name": "Tingui-Boto" + }, + "tgw": { + "english_name": "Senoufo, Tagwana" + }, + "tgx": { + "english_name": "Tagish" + }, + "tgy": { + "english_name": "Togoyo" + }, + "tgz": { + "english_name": "Tagalaka" + }, + "th": { + "english_name": "Thai", + "name": "\u0e44\u0e17\u0e22" + }, + "thc": { + "english_name": "Tai Hang Tong" + }, + "thd": { + "english_name": "Thayore" + }, + "the": { + "english_name": "Tharu, Chitwania" + }, + "thf": { + "english_name": "Thangmi" + }, + "thh": { + "english_name": "Tarahumara, Northern" + }, + "thi": { + "english_name": "Tai Long" + }, + "thk": { + "english_name": "Tharaka" + }, + "thl": { + "english_name": "Tharu, Dangaura" + }, + "thm": { + "english_name": "Aheu" + }, + "thn": { + "english_name": "Thachanadan" + }, + "thp": { + "english_name": "Thompson" + }, + "thq": { + "english_name": "Tharu, Kochila" + }, + "thr": { + "english_name": "Tharu, Rana" + }, + "ths": { + "english_name": "Thakali" + }, + "tht": { + "english_name": "Tahltan" + }, + "thu": { + "english_name": "Thuri" + }, + "thv": { + "english_name": "Tamahaq, Tahaggart" + }, + "thw": { + "english_name": "Thudam" + }, + "thy": { + "english_name": "Tha" + }, + "thz": { + "english_name": "Tamajeq, Tayart" + }, + "ti": { + "english_name": "Tigrinya", + "name": "\u1275\u130d\u122d\u129b" + }, + "tia": { + "english_name": "Tamazight, Tidikelt" + }, + "tic": { + "english_name": "Tira" + }, + "tid": { + "english_name": "Tidong" + }, + "tif": { + "english_name": "Tifal" + }, + "tig": { + "english_name": "Tigre", + "name": "\u1275\u130d\u1228" + }, + "tih": { + "english_name": "Murut, Timugon" + }, + "tii": { + "english_name": "Tiene" + }, + "tij": { + "english_name": "Tilung" + }, + "tik": { + "english_name": "Tikar" + }, + "til": { + "english_name": "Tillamook" + }, + "tim": { + "english_name": "Timbe" + }, + "tin": { + "english_name": "Tindi" + }, + "tio": { + "english_name": "Teop" + }, + "tip": { + "english_name": "Trimuris" + }, + "tiq": { + "english_name": "Ti\u00e9fo" + }, + "tis": { + "english_name": "Itneg, Masadiit" + }, + "tit": { + "english_name": "Tinigua" + }, + "tiu": { + "english_name": "Adasen" + }, + "tiv": { + "english_name": "Tiv" + }, + "tiw": { + "english_name": "Tiwi" + }, + "tix": { + "english_name": "Tiwa, Southern" + }, + "tiy": { + "english_name": "Tiruray" + }, + "tiz": { + "english_name": "Tai Hongjin" + }, + "tja": { + "english_name": "Tajuasohn" + }, + "tjg": { + "english_name": "Tunjung" + }, + "tji": { + "english_name": "Tujia, Northern" + }, + "tjl": { + "english_name": "Tai Laing" + }, + "tjm": { + "english_name": "Timucua" + }, + "tjn": { + "english_name": "Tonjon" + }, + "tjo": { + "english_name": "Tamazight, Temacine" + }, + "tjs": { + "english_name": "Tujia, Southern" + }, + "tju": { + "english_name": "Tjurruru" + }, + "tjw": { + "english_name": "Djabwurrung" + }, + "tk": { + "english_name": "Turkmen" + }, + "tka": { + "english_name": "Truk\u00e1" + }, + "tkb": { + "english_name": "Buksa" + }, + "tkd": { + "english_name": "Tukudede" + }, + "tke": { + "english_name": "Takwane" + }, + "tkf": { + "english_name": "Tukumanf\u00e9d" + }, + "tkg": { + "english_name": "Malagasy, Tesaka" + }, + "tkl": { + "english_name": "Tokelau" + }, + "tkm": { + "english_name": "Takelma" + }, + "tkn": { + "english_name": "Toku-No-Shima" + }, + "tkp": { + "english_name": "Tikopia" + }, + "tkq": { + "english_name": "Tee" + }, + "tkr": { + "english_name": "Tsakhur" + }, + "tks": { + "english_name": "Takestani" + }, + "tkt": { + "english_name": "Tharu, Kathoriya" + }, + "tku": { + "english_name": "Totonac, Upper Necaxa" + }, + "tkw": { + "english_name": "Teanu" + }, + "tkx": { + "english_name": "Tangko" + }, + "tkz": { + "english_name": "Takua" + }, + "tl": { + "english_name": "Tagalog" + }, + "tla": { + "english_name": "Tepehuan, Southwestern" + }, + "tlb": { + "english_name": "Tobelo" + }, + "tlc": { + "english_name": "Totonac, Yecuatla" + }, + "tld": { + "english_name": "Talaud" + }, + "tlf": { + "english_name": "Telefol" + }, + "tlg": { + "english_name": "Tofanma" + }, + "tlh": { + "english_name": "Klingon" + }, + "tli": { + "english_name": "Tlingit" + }, + "tlj": { + "english_name": "Talinga-Bwisi" + }, + "tlk": { + "english_name": "Taloki" + }, + "tll": { + "english_name": "Tetela" + }, + "tlm": { + "english_name": "Tolomako" + }, + "tln": { + "english_name": "Talondo'" + }, + "tlo": { + "english_name": "Talodi" + }, + "tlp": { + "english_name": "Totonac, Filomena Mata-Coahuitl\u00e1n" + }, + "tlq": { + "english_name": "Tai Loi" + }, + "tlr": { + "english_name": "Talise" + }, + "tls": { + "english_name": "Tambotalo" + }, + "tlt": { + "english_name": "Teluti" + }, + "tlu": { + "english_name": "Tulehu" + }, + "tlv": { + "english_name": "Taliabu" + }, + "tlx": { + "english_name": "Khehek" + }, + "tly": { + "english_name": "Talysh" + }, + "tma": { + "english_name": "Tama (Chad)" + }, + "tmb": { + "english_name": "Katbol" + }, + "tmc": { + "english_name": "Tumak" + }, + "tmd": { + "english_name": "Haruai" + }, + "tme": { + "english_name": "Trememb\u00e9" + }, + "tmf": { + "english_name": "Toba-Maskoy" + }, + "tmg": { + "english_name": "Ternate\u00f1o" + }, + "tmh": { + "english_name": "Tamashek" + }, + "tmi": { + "english_name": "Tutuba" + }, + "tmj": { + "english_name": "Samarokena" + }, + "tmk": { + "english_name": "Tamang, Northwestern" + }, + "tml": { + "english_name": "Citak, Tamnim" + }, + "tmm": { + "english_name": "Tai Thanh" + }, + "tmn": { + "english_name": "Taman (Indonesia)" + }, + "tmo": { + "english_name": "Temoq" + }, + "tmp": { + "english_name": "Tai M\u00e8ne" + }, + "tmq": { + "english_name": "Tumleo" + }, + "tmr": { + "english_name": "Aramaic, Jewish Babylonian (ca. 200-1200 CE)" + }, + "tms": { + "english_name": "Tima" + }, + "tmt": { + "english_name": "Tasmate" + }, + "tmu": { + "english_name": "Iau" + }, + "tmv": { + "english_name": "Tembo (Motembo)" + }, + "tmw": { + "english_name": "Temuan" + }, + "tmy": { + "english_name": "Tami" + }, + "tmz": { + "english_name": "Tamanaku" + }, + "tn": { + "english_name": "Tswana" + }, + "tna": { + "english_name": "Tacana" + }, + "tnb": { + "english_name": "Tunebo, Western" + }, + "tnc": { + "english_name": "Tanimuca-Retuar\u00e3" + }, + "tnd": { + "english_name": "Tunebo, Angosturas" + }, + "tne": { + "english_name": "Kallahan, Tinoc" + }, + "tng": { + "english_name": "Tobanga" + }, + "tnh": { + "english_name": "Maiani" + }, + "tni": { + "english_name": "Tandia" + }, + "tnk": { + "english_name": "Kwamera" + }, + "tnl": { + "english_name": "Lenakel" + }, + "tnm": { + "english_name": "Tabla" + }, + "tnn": { + "english_name": "Tanna, North" + }, + "tno": { + "english_name": "Toromono" + }, + "tnp": { + "english_name": "Whitesands" + }, + "tnq": { + "english_name": "Taino" + }, + "tnr": { + "english_name": "M\u00e9nik" + }, + "tns": { + "english_name": "Tenis" + }, + "tnt": { + "english_name": "Tontemboan" + }, + "tnu": { + "english_name": "Tay Khang" + }, + "tnv": { + "english_name": "Tangchangya" + }, + "tnw": { + "english_name": "Tonsawang" + }, + "tnx": { + "english_name": "Tanema" + }, + "tny": { + "english_name": "Tongwe" + }, + "tnz": { + "english_name": "Tonga (Thailand)" + }, + "to": { + "english_name": "Tonga (Tonga Islands)" + }, + "tob": { + "english_name": "Toba" + }, + "toc": { + "english_name": "Totonac, Coyutla" + }, + "tod": { + "english_name": "Toma" + }, + "toe": { + "english_name": "Tomedes" + }, + "tof": { + "english_name": "Gizrra" + }, + "tog": { + "english_name": "Tonga (Nyasa)" + }, + "toh": { + "english_name": "Gitonga" + }, + "toi": { + "english_name": "Tonga (Zambia)" + }, + "toj": { + "english_name": "Tojolabal" + }, + "tol": { + "english_name": "Tolowa" + }, + "tom": { + "english_name": "Tombulu" + }, + "too": { + "english_name": "Totonac, Xicotepec De Ju\u00e1rez" + }, + "top": { + "english_name": "Totonac, Papantla" + }, + "toq": { + "english_name": "Toposa" + }, + "tor": { + "english_name": "Banda, Togbo-Vara" + }, + "tos": { + "english_name": "Totonac, Highland" + }, + "tou": { + "english_name": "Tho" + }, + "tov": { + "english_name": "Taromi, Upper" + }, + "tow": { + "english_name": "Jemez" + }, + "tox": { + "english_name": "Tobian" + }, + "toy": { + "english_name": "Topoiyo" + }, + "toz": { + "english_name": "To" + }, + "tpa": { + "english_name": "Taupota" + }, + "tpc": { + "english_name": "Me'phaa, Azoy\u00fa" + }, + "tpe": { + "english_name": "Tippera" + }, + "tpf": { + "english_name": "Tarpia" + }, + "tpg": { + "english_name": "Kula" + }, + "tpi": { + "english_name": "Tok Pisin" + }, + "tpj": { + "english_name": "Tapiet\u00e9" + }, + "tpk": { + "english_name": "Tupinikin" + }, + "tpl": { + "english_name": "Me'phaa, Tlacoapa" + }, + "tpm": { + "english_name": "Tampulma" + }, + "tpn": { + "english_name": "Tupinamb\u00e1" + }, + "tpo": { + "english_name": "Tai Pao" + }, + "tpp": { + "english_name": "Tepehua, Pisaflores" + }, + "tpq": { + "english_name": "Tukpa" + }, + "tpr": { + "english_name": "Tupar\u00ed" + }, + "tpt": { + "english_name": "Tepehua, Tlachichilco" + }, + "tpu": { + "english_name": "Tampuan" + }, + "tpv": { + "english_name": "Tanapag" + }, + "tpw": { + "english_name": "Tup\u00ed" + }, + "tpx": { + "english_name": "Me'phaa, Acatepec" + }, + "tpy": { + "english_name": "Trumai" + }, + "tpz": { + "english_name": "Tinputz" + }, + "tqb": { + "english_name": "Temb\u00e9" + }, + "tql": { + "english_name": "Lehali" + }, + "tqm": { + "english_name": "Turumsa" + }, + "tqn": { + "english_name": "Tenino" + }, + "tqo": { + "english_name": "Toaripi" + }, + "tqp": { + "english_name": "Tomoip" + }, + "tqq": { + "english_name": "Tunni" + }, + "tqr": { + "english_name": "Torona" + }, + "tqt": { + "english_name": "Totonac, Western" + }, + "tqu": { + "english_name": "Touo" + }, + "tqw": { + "english_name": "Tonkawa" + }, + "tr": { + "english_name": "Turkish", + "name": "T\u00fcrk\u00e7e" + }, + "tra": { + "english_name": "Tirahi" + }, + "trb": { + "english_name": "Terebu" + }, + "trc": { + "english_name": "Triqui, Copala" + }, + "trd": { + "english_name": "Turi" + }, + "tre": { + "english_name": "Tarangan, East" + }, + "trf": { + "english_name": "Creole English, Trinidadian" + }, + "trg": { + "english_name": "Lish\u00e1n Did\u00e1n" + }, + "trh": { + "english_name": "Turaka" + }, + "tri": { + "english_name": "Tri\u00f3" + }, + "trj": { + "english_name": "Toram" + }, + "trl": { + "english_name": "Scottish, Traveller" + }, + "trm": { + "english_name": "Tregami" + }, + "trn": { + "english_name": "Trinitario" + }, + "tro": { + "english_name": "Naga, Tarao" + }, + "trp": { + "english_name": "Kok Borok" + }, + "trq": { + "english_name": "Triqui, San Mart\u00edn Itunyoso" + }, + "trr": { + "english_name": "Taushiro" + }, + "trs": { + "english_name": "Triqui, Chicahuaxtla" + }, + "trt": { + "english_name": "Tunggare" + }, + "tru": { + "english_name": "Turoyo" + }, + "trv": { + "english_name": "Taroko" + }, + "trw": { + "english_name": "Torwali" + }, + "trx": { + "english_name": "Bidayuh, Tringgus-Sembaan" + }, + "try": { + "english_name": "Turung" + }, + "trz": { + "english_name": "Tor\u00e1" + }, + "ts": { + "english_name": "Tsonga" + }, + "tsa": { + "english_name": "Tsaangi" + }, + "tsb": { + "english_name": "Tsamai" + }, + "tsc": { + "english_name": "Tswa" + }, + "tsd": { + "english_name": "Tsakonian" + }, + "tse": { + "english_name": "Tunisian Sign Language" + }, + "tsg": { + "english_name": "Tausug" + }, + "tsh": { + "english_name": "Tsuvan" + }, + "tsi": { + "english_name": "Tsimshian" + }, + "tsj": { + "english_name": "Tshangla" + }, + "tsk": { + "english_name": "Tseku" + }, + "tsl": { + "english_name": "Ts'\u00fcn-Lao" + }, + "tsm": { + "english_name": "Turkish Sign Language" + }, + "tsp": { + "english_name": "Toussian, Northern" + }, + "tsq": { + "english_name": "Thai Sign Language" + }, + "tsr": { + "english_name": "Akei" + }, + "tss": { + "english_name": "Taiwan Sign Language" + }, + "tst": { + "english_name": "Songway Kiini, Tondi" + }, + "tsu": { + "english_name": "Tsou" + }, + "tsv": { + "english_name": "Tsogo" + }, + "tsw": { + "english_name": "Tsishingini" + }, + "tsx": { + "english_name": "Mubami" + }, + "tsy": { + "english_name": "Tebul Sign Language" + }, + "tsz": { + "english_name": "Purepecha" + }, + "tt": { + "english_name": "Tatar", + "name": "\u0422\u0430\u0442\u0430\u0440\u0447\u0430" + }, + "tta": { + "english_name": "Tutelo" + }, + "ttb": { + "english_name": "Gaa" + }, + "ttc": { + "english_name": "Tektiteko" + }, + "ttd": { + "english_name": "Tauade" + }, + "tte": { + "english_name": "Bwanabwana" + }, + "ttf": { + "english_name": "Tuotomb" + }, + "ttg": { + "english_name": "Tutong" + }, + "tth": { + "english_name": "Ta'oih, Upper" + }, + "tti": { + "english_name": "Tobati" + }, + "ttj": { + "english_name": "Tooro" + }, + "ttk": { + "english_name": "Totoro" + }, + "ttl": { + "english_name": "Totela" + }, + "ttm": { + "english_name": "Tutchone, Northern" + }, + "ttn": { + "english_name": "Towei" + }, + "tto": { + "english_name": "Ta'oih, Lower" + }, + "ttp": { + "english_name": "Tombelala" + }, + "ttq": { + "english_name": "Tamajaq, Tawallammat" + }, + "ttr": { + "english_name": "Tera" + }, + "tts": { + "english_name": "Thai, Northeastern" + }, + "ttt": { + "english_name": "Tat, Muslim" + }, + "ttu": { + "english_name": "Torau" + }, + "ttv": { + "english_name": "Titan" + }, + "ttw": { + "english_name": "Long Wat" + }, + "tty": { + "english_name": "Sikaritai" + }, + "ttz": { + "english_name": "Tsum" + }, + "tua": { + "english_name": "Wiarumus" + }, + "tub": { + "english_name": "T\u00fcbatulabal" + }, + "tuc": { + "english_name": "Mutu" + }, + "tud": { + "english_name": "Tux\u00e1" + }, + "tue": { + "english_name": "Tuyuca" + }, + "tuf": { + "english_name": "Tunebo, Central" + }, + "tug": { + "english_name": "Tunia" + }, + "tuh": { + "english_name": "Taulil" + }, + "tui": { + "english_name": "Tupuri" + }, + "tuj": { + "english_name": "Tugutil" + }, + "tul": { + "english_name": "Tula" + }, + "tum": { + "english_name": "Tumbuka" + }, + "tun": { + "english_name": "Tunica" + }, + "tuo": { + "english_name": "Tucano" + }, + "tuq": { + "english_name": "Tedaga" + }, + "tus": { + "english_name": "Tuscarora" + }, + "tuu": { + "english_name": "Tututni" + }, + "tuv": { + "english_name": "Turkana" + }, + "tux": { + "english_name": "Tuxin\u00e1wa" + }, + "tuy": { + "english_name": "Tugen" + }, + "tuz": { + "english_name": "Turka" + }, + "tva": { + "english_name": "Vaghua" + }, + "tvd": { + "english_name": "Tsuvadi" + }, + "tve": { + "english_name": "Te'un" + }, + "tvk": { + "english_name": "Ambrym, Southeast" + }, + "tvl": { + "english_name": "Tuvalu" + }, + "tvm": { + "english_name": "Tela-Masbuar" + }, + "tvn": { + "english_name": "Tavoyan" + }, + "tvo": { + "english_name": "Tidore" + }, + "tvs": { + "english_name": "Taveta" + }, + "tvt": { + "english_name": "Naga, Tutsa" + }, + "tvu": { + "english_name": "Tunen" + }, + "tvw": { + "english_name": "Sedoa" + }, + "tvy": { + "english_name": "Pidgin, Timor" + }, + "tw": { + "english_name": "Twi" + }, + "twa": { + "english_name": "Twana" + }, + "twb": { + "english_name": "Tawbuid, Western" + }, + "twc": { + "english_name": "Teshenawa" + }, + "twd": { + "english_name": "Twents" + }, + "twe": { + "english_name": "Tewa (Indonesia)" + }, + "twf": { + "english_name": "Tiwa, Northern" + }, + "twg": { + "english_name": "Tereweng" + }, + "twh": { + "english_name": "Tai D\u00f3n" + }, + "twl": { + "english_name": "Tawara" + }, + "twm": { + "english_name": "Monpa, Tawang" + }, + "twn": { + "english_name": "Twendi" + }, + "two": { + "english_name": "Tswapong" + }, + "twp": { + "english_name": "Ere" + }, + "twq": { + "english_name": "Tasawaq" + }, + "twr": { + "english_name": "Tarahumara, Southwestern" + }, + "twt": { + "english_name": "Turiw\u00e1ra" + }, + "twu": { + "english_name": "Termanu" + }, + "tww": { + "english_name": "Tuwari" + }, + "twx": { + "english_name": "Tewe" + }, + "twy": { + "english_name": "Tawoyan" + }, + "txa": { + "english_name": "Tombonuo" + }, + "txb": { + "english_name": "Tokharian B" + }, + "txc": { + "english_name": "Tsetsaut" + }, + "txe": { + "english_name": "Totoli" + }, + "txg": { + "english_name": "Tangut" + }, + "txh": { + "english_name": "Thracian" + }, + "txi": { + "english_name": "Ikpeng" + }, + "txm": { + "english_name": "Tomini" + }, + "txn": { + "english_name": "Tarangan, West" + }, + "txo": { + "english_name": "Toto" + }, + "txq": { + "english_name": "Tii" + }, + "txr": { + "english_name": "Tartessian" + }, + "txs": { + "english_name": "Tonsea" + }, + "txt": { + "english_name": "Citak" + }, + "txu": { + "english_name": "Kayap\u00f3" + }, + "txx": { + "english_name": "Tatana" + }, + "txy": { + "english_name": "Malagasy, Tanosy" + }, + "ty": { + "english_name": "Tahitian" + }, + "tya": { + "english_name": "Tauya" + }, + "tye": { + "english_name": "Kyanga" + }, + "tyh": { + "english_name": "O'du" + }, + "tyi": { + "english_name": "Teke-Tsaayi" + }, + "tyj": { + "english_name": "Tai Do" + }, + "tyl": { + "english_name": "Thu Lao" + }, + "tyn": { + "english_name": "Kombai" + }, + "typ": { + "english_name": "Thaypan" + }, + "tyr": { + "english_name": "Tai Daeng" + }, + "tys": { + "english_name": "T\u00e0y Sa Pa" + }, + "tyt": { + "english_name": "T\u00e0y Tac" + }, + "tyu": { + "english_name": "Kua" + }, + "tyv": { + "english_name": "Tuvinian" + }, + "tyx": { + "english_name": "Teke-Tyee" + }, + "tyz": { + "english_name": "T\u00e0y" + }, + "tza": { + "english_name": "Tanzanian Sign Language" + }, + "tzh": { + "english_name": "Tzeltal" + }, + "tzj": { + "english_name": "Tz'utujil" + }, + "tzl": { + "english_name": "Talossan" + }, + "tzm": { + "english_name": "Tamazight, Central Atlas" + }, + "tzn": { + "english_name": "Tugun" + }, + "tzo": { + "english_name": "Tzotzil" + }, + "tzx": { + "english_name": "Tabriak" + }, + "uam": { + "english_name": "Uamu\u00e9" + }, + "uan": { + "english_name": "Kuan" + }, + "uar": { + "english_name": "Tairuma" + }, + "uba": { + "english_name": "Ubang" + }, + "ubi": { + "english_name": "Ubi" + }, + "ubl": { + "english_name": "Bikol, Buhi'non" + }, + "ubr": { + "english_name": "Ubir" + }, + "ubu": { + "english_name": "Umbu-Ungu" + }, + "uby": { + "english_name": "Ubykh" + }, + "uda": { + "english_name": "Uda" + }, + "ude": { + "english_name": "Udihe" + }, + "udg": { + "english_name": "Muduga" + }, + "udi": { + "english_name": "Udi" + }, + "udj": { + "english_name": "Ujir" + }, + "udl": { + "english_name": "Wuzlam" + }, + "udm": { + "english_name": "Udmurt" + }, + "udu": { + "english_name": "Uduk" + }, + "ues": { + "english_name": "Kioko" + }, + "ufi": { + "english_name": "Ufim" + }, + "ug": { + "english_name": "Uighur" + }, + "uga": { + "english_name": "Ugaritic" + }, + "ugb": { + "english_name": "Kuku-Ugbanh" + }, + "uge": { + "english_name": "Ughele" + }, + "ugn": { + "english_name": "Ugandan Sign Language" + }, + "ugo": { + "english_name": "Ugong" + }, + "ugy": { + "english_name": "Uruguayan Sign Language" + }, + "uha": { + "english_name": "Uhami" + }, + "uhn": { + "english_name": "Damal" + }, + "uis": { + "english_name": "Uisai" + }, + "uiv": { + "english_name": "Iyive" + }, + "uji": { + "english_name": "Tanjijili" + }, + "uk": { + "english_name": "Ukrainian", + "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" + }, + "uka": { + "english_name": "Kaburi" + }, + "ukg": { + "english_name": "Ukuriguma" + }, + "ukh": { + "english_name": "Ukhwejo" + }, + "ukl": { + "english_name": "Ukrainian Sign Language" + }, + "ukp": { + "english_name": "Ukpe-Bayobiri" + }, + "ukq": { + "english_name": "Ukwa" + }, + "uks": { + "english_name": "Urub\u00fa-Kaapor Sign Language" + }, + "uku": { + "english_name": "Ukue" + }, + "ukw": { + "english_name": "Ukwuani-Aboh-Ndoni" + }, + "uky": { + "english_name": "Kuuk-Yak" + }, + "ula": { + "english_name": "Fungwa" + }, + "ulb": { + "english_name": "Ulukwumi" + }, + "ulc": { + "english_name": "Ulch" + }, + "ule": { + "english_name": "Lule" + }, + "ulf": { + "english_name": "Usku" + }, + "uli": { + "english_name": "Ulithian" + }, + "ulk": { + "english_name": "Meriam" + }, + "ull": { + "english_name": "Ullatan" + }, + "ulm": { + "english_name": "Ulumanda'" + }, + "uln": { + "english_name": "Unserdeutsch" + }, + "ulu": { + "english_name": "Uma' Lung" + }, + "ulw": { + "english_name": "Ulwa" + }, + "uma": { + "english_name": "Umatilla" + }, + "umb": { + "english_name": "Umbundu" + }, + "umc": { + "english_name": "Marrucinian" + }, + "umd": { + "english_name": "Umbindhamu" + }, + "umg": { + "english_name": "Umbuygamu" + }, + "umi": { + "english_name": "Ukit" + }, + "umm": { + "english_name": "Umon" + }, + "umn": { + "english_name": "Naga, Makyan" + }, + "umo": { + "english_name": "Umot\u00edna" + }, + "ump": { + "english_name": "Umpila" + }, + "umr": { + "english_name": "Umbugarla" + }, + "ums": { + "english_name": "Pendau" + }, + "umu": { + "english_name": "Munsee" + }, + "una": { + "english_name": "Watut, North" + }, + "und": { + "english_name": "Undetermined" + }, + "une": { + "english_name": "Uneme" + }, + "ung": { + "english_name": "Ngarinyin" + }, + "unk": { + "english_name": "Enawen\u00e9-Naw\u00e9" + }, + "unm": { + "english_name": "Unami" + }, + "unn": { + "english_name": "Kurnai" + }, + "unr": { + "english_name": "Mundari" + }, + "unu": { + "english_name": "Unubahe" + }, + "unx": { + "english_name": "Munda" + }, + "unz": { + "english_name": "Kaili, Unde" + }, + "upi": { + "english_name": "Umeda" + }, + "upv": { + "english_name": "Uripiv-Wala-Rano-Atchin" + }, + "ur": { + "english_name": "Urdu" + }, + "ura": { + "english_name": "Urarina" + }, + "urb": { + "english_name": "Urub\u00fa-Kaapor" + }, + "urc": { + "english_name": "Urningangg" + }, + "ure": { + "english_name": "Uru" + }, + "urf": { + "english_name": "Uradhi" + }, + "urg": { + "english_name": "Urigina" + }, + "urh": { + "english_name": "Urhobo" + }, + "uri": { + "english_name": "Urim" + }, + "urk": { + "english_name": "Urak Lawoi'" + }, + "url": { + "english_name": "Urali" + }, + "urm": { + "english_name": "Urapmin" + }, + "urn": { + "english_name": "Uruangnirin" + }, + "uro": { + "english_name": "Ura (Papua New Guinea)" + }, + "urp": { + "english_name": "Uru-Pa-In" + }, + "urr": { + "english_name": "Lehalurup" + }, + "urt": { + "english_name": "Urat" + }, + "uru": { + "english_name": "Urumi" + }, + "urv": { + "english_name": "Uruava" + }, + "urw": { + "english_name": "Sop" + }, + "urx": { + "english_name": "Urimo" + }, + "ury": { + "english_name": "Orya" + }, + "urz": { + "english_name": "Uru-Eu-Wau-Wau" + }, + "usa": { + "english_name": "Usarufa" + }, + "ush": { + "english_name": "Ushojo" + }, + "usi": { + "english_name": "Usui" + }, + "usk": { + "english_name": "Usaghade" + }, + "usp": { + "english_name": "Uspanteco" + }, + "usu": { + "english_name": "Uya" + }, + "uta": { + "english_name": "Otank" + }, + "ute": { + "english_name": "Ute-Southern Paiute" + }, + "utp": { + "english_name": "Amba (Solomon Islands)" + }, + "utr": { + "english_name": "Etulo" + }, + "utu": { + "english_name": "Utu" + }, + "uum": { + "english_name": "Urum" + }, + "uun": { + "english_name": "Kulon-Pazeh" + }, + "uur": { + "english_name": "Ura (Vanuatu)" + }, + "uuu": { + "english_name": "U" + }, + "uve": { + "english_name": "Uvean, West" + }, + "uvh": { + "english_name": "Uri" + }, + "uvl": { + "english_name": "Lote" + }, + "uwa": { + "english_name": "Kuku-Uwanh" + }, + "uya": { + "english_name": "Doko-Uyanga" + }, + "uz": { + "english_name": "Uzbek" + }, + "uzn": { + "english_name": "Uzbek, Northern" + }, + "uzs": { + "english_name": "Uzbek, Southern" + }, + "vaa": { + "english_name": "Vaagri Booli" + }, + "vae": { + "english_name": "Vale" + }, + "vaf": { + "english_name": "Vafsi" + }, + "vag": { + "english_name": "Vagla" + }, + "vah": { + "english_name": "Varhadi-Nagpuri" + }, + "vai": { + "english_name": "Vai" + }, + "vaj": { + "english_name": "Vasekela Bushman" + }, + "val": { + "english_name": "Vehes" + }, + "vam": { + "english_name": "Vanimo" + }, + "van": { + "english_name": "Valman" + }, + "vao": { + "english_name": "Vao" + }, + "vap": { + "english_name": "Vaiphei" + }, + "var": { + "english_name": "Huarijio" + }, + "vas": { + "english_name": "Vasavi" + }, + "vau": { + "english_name": "Vanuma" + }, + "vav": { + "english_name": "Varli" + }, + "vay": { + "english_name": "Wayu" + }, + "vbb": { + "english_name": "Babar, Southeast" + }, + "vbk": { + "english_name": "Bontok, Southwestern" + }, + "ve": { + "english_name": "Venda", + "name": "Venda" + }, + "vec": { + "english_name": "Venetian" + }, + "ved": { + "english_name": "Veddah" + }, + "vel": { + "english_name": "Veluws" + }, + "vem": { + "english_name": "Vemgo-Mabas" + }, + "veo": { + "english_name": "Venture\u00f1o" + }, + "vep": { + "english_name": "Veps" + }, + "ver": { + "english_name": "Mom Jango" + }, + "vgr": { + "english_name": "Vaghri" + }, + "vgt": { + "english_name": "Vlaamse Gebarentaal" + }, + "vi": { + "english_name": "Vietnamese", + "name": "Ti\u1ebfng Vi\u1ec7t" + }, + "vic": { + "english_name": "Creole English, Virgin Islands" + }, + "vid": { + "english_name": "Vidunda" + }, + "vif": { + "english_name": "Vili" + }, + "vig": { + "english_name": "Viemo" + }, + "vil": { + "english_name": "Vilela" + }, + "vin": { + "english_name": "Vinza" + }, + "vis": { + "english_name": "Vishavan" + }, + "vit": { + "english_name": "Viti" + }, + "viv": { + "english_name": "Iduna" + }, + "vka": { + "english_name": "Kariyarra" + }, + "vki": { + "english_name": "Ija-Zuba" + }, + "vkj": { + "english_name": "Kujarge" + }, + "vkk": { + "english_name": "Kaur" + }, + "vkl": { + "english_name": "Kulisusu" + }, + "vkm": { + "english_name": "Kamakan" + }, + "vko": { + "english_name": "Kodeoha" + }, + "vkp": { + "english_name": "Creole Portuguese, Korlai" + }, + "vkt": { + "english_name": "Malay, Tenggarong Kutai" + }, + "vku": { + "english_name": "Kurrama" + }, + "vlp": { + "english_name": "Valpei" + }, + "vls": { + "english_name": "Vlaams" + }, + "vma": { + "english_name": "Martuyhunira" + }, + "vmb": { + "english_name": "Barbaram" + }, + "vmc": { + "english_name": "Mixtec, Juxtlahuaca" + }, + "vmd": { + "english_name": "Koraga, Mudu" + }, + "vme": { + "english_name": "Masela, East" + }, + "vmf": { + "english_name": "Mainfr\u00e4nkisch" + }, + "vmg": { + "english_name": "Lungalunga" + }, + "vmh": { + "english_name": "Maraghei" + }, + "vmi": { + "english_name": "Miwa" + }, + "vmj": { + "english_name": "Mixtec, Ixtayutla" + }, + "vmk": { + "english_name": "Makhuwa-Shirima" + }, + "vml": { + "english_name": "Malgana" + }, + "vmm": { + "english_name": "Mixtec, Mitlatongo" + }, + "vmp": { + "english_name": "Mazatec, Soyaltepec" + }, + "vmq": { + "english_name": "Mixtec, Soyaltepec" + }, + "vmr": { + "english_name": "Marenje" + }, + "vms": { + "english_name": "Moksela" + }, + "vmu": { + "english_name": "Muluridyi" + }, + "vmv": { + "english_name": "Maidu, Valley" + }, + "vmw": { + "english_name": "Makhuwa" + }, + "vmx": { + "english_name": "Mixtec, Tamazola" + }, + "vmy": { + "english_name": "Mazatec, Ayautla" + }, + "vmz": { + "english_name": "Mazatec, Mazatl\u00e1n" + }, + "vnk": { + "english_name": "Vano" + }, + "vnm": { + "english_name": "Vinmavis" + }, + "vnp": { + "english_name": "Vunapu" + }, + "vo": { + "english_name": "Volap\u00fck" + }, + "vor": { + "english_name": "Voro" + }, + "vot": { + "english_name": "Votic" + }, + "vra": { + "english_name": "Vera'a" + }, + "vro": { + "english_name": "V\u00f5ro" + }, + "vrs": { + "english_name": "Varisi" + }, + "vrt": { + "english_name": "Burmbar" + }, + "vsi": { + "english_name": "Moldova Sign Language" + }, + "vsl": { + "english_name": "Venezuelan Sign Language" + }, + "vsv": { + "english_name": "Valencian Sign Language" + }, + "vto": { + "english_name": "Vitou" + }, + "vum": { + "english_name": "Vumbu" + }, + "vun": { + "english_name": "Vunjo" + }, + "vut": { + "english_name": "Vute" + }, + "vwa": { + "english_name": "Awa (China)" + }, + "wa": { + "english_name": "Walloon", + "name": "Walon" + }, + "waa": { + "english_name": "Walla Walla" + }, + "wab": { + "english_name": "Wab" + }, + "wac": { + "english_name": "Wasco-Wishram" + }, + "wad": { + "english_name": "Wandamen" + }, + "wae": { + "english_name": "Walser" + }, + "waf": { + "english_name": "Wakon\u00e1" + }, + "wag": { + "english_name": "Wa'ema" + }, + "wah": { + "english_name": "Watubela" + }, + "wai": { + "english_name": "Wares" + }, + "waj": { + "english_name": "Waffa" + }, + "wal": { + "english_name": "Wolaytta" + }, + "wam": { + "english_name": "Wampanoag" + }, + "wan": { + "english_name": "Wan" + }, + "wao": { + "english_name": "Wappo" + }, + "wap": { + "english_name": "Wapishana" + }, + "waq": { + "english_name": "Wageman" + }, + "war": { + "english_name": "Waray (Philippines)" + }, + "was": { + "english_name": "Washo" + }, + "wat": { + "english_name": "Kaninuwa" + }, + "wau": { + "english_name": "Waur\u00e1" + }, + "wav": { + "english_name": "Waka" + }, + "waw": { + "english_name": "Waiwai" + }, + "wax": { + "english_name": "Watam" + }, + "way": { + "english_name": "Wayana" + }, + "waz": { + "english_name": "Wampur" + }, + "wba": { + "english_name": "Warao" + }, + "wbb": { + "english_name": "Wabo" + }, + "wbe": { + "english_name": "Waritai" + }, + "wbf": { + "english_name": "Wara" + }, + "wbh": { + "english_name": "Wanda" + }, + "wbi": { + "english_name": "Vwanji" + }, + "wbj": { + "english_name": "Alagwa" + }, + "wbk": { + "english_name": "Waigali" + }, + "wbl": { + "english_name": "Wakhi" + }, + "wbm": { + "english_name": "Wa" + }, + "wbp": { + "english_name": "Warlpiri" + }, + "wbq": { + "english_name": "Waddar" + }, + "wbr": { + "english_name": "Wagdi" + }, + "wbt": { + "english_name": "Wanman" + }, + "wbv": { + "english_name": "Wajarri" + }, + "wbw": { + "english_name": "Woi" + }, + "wca": { + "english_name": "Yanom\u00e1mi" + }, + "wci": { + "english_name": "Gbe, Waci" + }, + "wdd": { + "english_name": "Wandji" + }, + "wdg": { + "english_name": "Wadaginam" + }, + "wdj": { + "english_name": "Wadjiginy" + }, + "wdk": { + "english_name": "Wadikali" + }, + "wdu": { + "english_name": "Wadjigu" + }, + "wdy": { + "english_name": "Wadjabangayi" + }, + "wea": { + "english_name": "Wewaw" + }, + "wec": { + "english_name": "W\u00e8 Western" + }, + "wed": { + "english_name": "Wedau" + }, + "weg": { + "english_name": "Wergaia" + }, + "weh": { + "english_name": "Weh" + }, + "wei": { + "english_name": "Kiunum" + }, + "wem": { + "english_name": "Gbe, Weme" + }, + "weo": { + "english_name": "Wemale" + }, + "wep": { + "english_name": "Westphalien" + }, + "wer": { + "english_name": "Weri" + }, + "wes": { + "english_name": "Pidgin, Cameroon" + }, + "wet": { + "english_name": "Perai" + }, + "weu": { + "english_name": "Chin, Rawngtu" + }, + "wew": { + "english_name": "Wejewa" + }, + "wfg": { + "english_name": "Yafi" + }, + "wga": { + "english_name": "Wagaya" + }, + "wgb": { + "english_name": "Wagawaga" + }, + "wgg": { + "english_name": "Wangganguru" + }, + "wgi": { + "english_name": "Wahgi" + }, + "wgo": { + "english_name": "Waigeo" + }, + "wgu": { + "english_name": "Wirangu" + }, + "wgy": { + "english_name": "Warrgamay" + }, + "wha": { + "english_name": "Manusela" + }, + "whg": { + "english_name": "Wahgi, North" + }, + "whk": { + "english_name": "Kenyah, Wahau" + }, + "whu": { + "english_name": "Kayan, Wahau" + }, + "wib": { + "english_name": "Toussian, Southern" + }, + "wic": { + "english_name": "Wichita" + }, + "wie": { + "english_name": "Wik-Epa" + }, + "wif": { + "english_name": "Wik-Keyangan" + }, + "wig": { + "english_name": "Wik-Ngathana" + }, + "wih": { + "english_name": "Wik-Me'anha" + }, + "wii": { + "english_name": "Minidien" + }, + "wij": { + "english_name": "Wik-Iiyanh" + }, + "wik": { + "english_name": "Wikalkan" + }, + "wil": { + "english_name": "Wilawila" + }, + "wim": { + "english_name": "Wik-Mungkan" + }, + "win": { + "english_name": "Ho-Chunk" + }, + "wir": { + "english_name": "Wiraf\u00e9d" + }, + "wiu": { + "english_name": "Wiru" + }, + "wiv": { + "english_name": "Vitu" + }, + "wiy": { + "english_name": "Wiyot" + }, + "wja": { + "english_name": "Waja" + }, + "wji": { + "english_name": "Warji" + }, + "wka": { + "english_name": "Kw'adza" + }, + "wkb": { + "english_name": "Kumbaran" + }, + "wkd": { + "english_name": "Wakde" + }, + "wkl": { + "english_name": "Kalanadi" + }, + "wku": { + "english_name": "Kunduvadi" + }, + "wkw": { + "english_name": "Wakawaka" + }, + "wky": { + "english_name": "Wangkayutyuru" + }, + "wla": { + "english_name": "Walio" + }, + "wlc": { + "english_name": "Comorian, Mwali" + }, + "wle": { + "english_name": "Wolane" + }, + "wlg": { + "english_name": "Kunbarlang" + }, + "wli": { + "english_name": "Waioli" + }, + "wlk": { + "english_name": "Wailaki" + }, + "wll": { + "english_name": "Wali (Sudan)" + }, + "wlm": { + "english_name": "Welsh, Middle" + }, + "wlo": { + "english_name": "Wolio" + }, + "wlr": { + "english_name": "Wailapa" + }, + "wls": { + "english_name": "Wallisian" + }, + "wlu": { + "english_name": "Wuliwuli" + }, + "wlv": { + "english_name": "Wich\u00ed Lhamt\u00e9s Vejoz" + }, + "wlw": { + "english_name": "Walak" + }, + "wlx": { + "english_name": "Wali (Ghana)" + }, + "wly": { + "english_name": "Waling" + }, + "wma": { + "english_name": "Mawa (Nigeria)" + }, + "wmb": { + "english_name": "Wambaya" + }, + "wmc": { + "english_name": "Wamas" + }, + "wmd": { + "english_name": "Mamaind\u00e9" + }, + "wme": { + "english_name": "Wambule" + }, + "wmh": { + "english_name": "Waima'a" + }, + "wmi": { + "english_name": "Wamin" + }, + "wmm": { + "english_name": "Maiwa (Indonesia)" + }, + "wmn": { + "english_name": "Waamwang" + }, + "wmo": { + "english_name": "Wom (Papua New Guinea)" + }, + "wms": { + "english_name": "Wambon" + }, + "wmt": { + "english_name": "Walmajarri" + }, + "wmw": { + "english_name": "Mwani" + }, + "wmx": { + "english_name": "Womo" + }, + "wnb": { + "english_name": "Wanambre" + }, + "wnc": { + "english_name": "Wantoat" + }, + "wnd": { + "english_name": "Wandarang" + }, + "wne": { + "english_name": "Waneci" + }, + "wng": { + "english_name": "Wanggom" + }, + "wni": { + "english_name": "Comorian, Ndzwani" + }, + "wnk": { + "english_name": "Wanukaka" + }, + "wnm": { + "english_name": "Wanggamala" + }, + "wnn": { + "english_name": "Wunumara" + }, + "wno": { + "english_name": "Wano" + }, + "wnp": { + "english_name": "Wanap" + }, + "wnu": { + "english_name": "Usan" + }, + "wnw": { + "english_name": "Wintu" + }, + "wny": { + "english_name": "Wanyi" + }, + "wo": { + "english_name": "Wolof" + }, + "woa": { + "english_name": "Tyaraity" + }, + "wob": { + "english_name": "W\u00e8 Northern" + }, + "woc": { + "english_name": "Wogeo" + }, + "wod": { + "english_name": "Wolani" + }, + "woe": { + "english_name": "Woleaian" + }, + "wof": { + "english_name": "Wolof, Gambian" + }, + "wog": { + "english_name": "Wogamusin" + }, + "woi": { + "english_name": "Kamang" + }, + "wok": { + "english_name": "Longto" + }, + "wom": { + "english_name": "Wom (Nigeria)" + }, + "won": { + "english_name": "Wongo" + }, + "woo": { + "english_name": "Manombai" + }, + "wor": { + "english_name": "Woria" + }, + "wos": { + "english_name": "Hanga Hundi" + }, + "wow": { + "english_name": "Wawonii" + }, + "woy": { + "english_name": "Weyto" + }, + "wpc": { + "english_name": "Maco" + }, + "wra": { + "english_name": "Warapu" + }, + "wrb": { + "english_name": "Warluwara" + }, + "wrd": { + "english_name": "Warduji" + }, + "wrg": { + "english_name": "Warungu" + }, + "wrh": { + "english_name": "Wiradhuri" + }, + "wri": { + "english_name": "Wariyangga" + }, + "wrk": { + "english_name": "Garrwa" + }, + "wrl": { + "english_name": "Warlmanpa" + }, + "wrm": { + "english_name": "Warumungu" + }, + "wrn": { + "english_name": "Warnang" + }, + "wro": { + "english_name": "Worrorra" + }, + "wrp": { + "english_name": "Waropen" + }, + "wrr": { + "english_name": "Wardaman" + }, + "wrs": { + "english_name": "Waris" + }, + "wru": { + "english_name": "Waru" + }, + "wrv": { + "english_name": "Waruna" + }, + "wrw": { + "english_name": "Gugu Warra" + }, + "wrx": { + "english_name": "Wae Rana" + }, + "wry": { + "english_name": "Merwari" + }, + "wrz": { + "english_name": "Waray (Australia)" + }, + "wsa": { + "english_name": "Warembori" + }, + "wsi": { + "english_name": "Wusi" + }, + "wsk": { + "english_name": "Waskia" + }, + "wsr": { + "english_name": "Owenia" + }, + "wss": { + "english_name": "Wasa" + }, + "wsu": { + "english_name": "Wasu" + }, + "wsv": { + "english_name": "Wotapuri-Katarqalai" + }, + "wtf": { + "english_name": "Watiwa" + }, + "wth": { + "english_name": "Wathawurrung" + }, + "wti": { + "english_name": "Berta" + }, + "wtk": { + "english_name": "Watakataui" + }, + "wtm": { + "english_name": "Mewati" + }, + "wtw": { + "english_name": "Wotu" + }, + "wua": { + "english_name": "Wikngenchera" + }, + "wub": { + "english_name": "Wunambal" + }, + "wud": { + "english_name": "Wudu" + }, + "wuh": { + "english_name": "Wutunhua" + }, + "wul": { + "english_name": "Silimo" + }, + "wum": { + "english_name": "Wumbvu" + }, + "wun": { + "english_name": "Bungu" + }, + "wur": { + "english_name": "Wurrugu" + }, + "wut": { + "english_name": "Wutung" + }, + "wuu": { + "english_name": "Chinese, Wu" + }, + "wuv": { + "english_name": "Wuvulu-Aua" + }, + "wux": { + "english_name": "Wulna" + }, + "wuy": { + "english_name": "Wauyai" + }, + "wwa": { + "english_name": "Waama" + }, + "wwb": { + "english_name": "Wakabunga" + }, + "wwo": { + "english_name": "Wetamut" + }, + "wwr": { + "english_name": "Warrwa" + }, + "www": { + "english_name": "Wawa" + }, + "wxa": { + "english_name": "Waxianghua" + }, + "wxw": { + "english_name": "Wardandi" + }, + "wya": { + "english_name": "Wyandot" + }, + "wyb": { + "english_name": "Wangaaybuwan-Ngiyambaa" + }, + "wyi": { + "english_name": "Woiwurrung" + }, + "wym": { + "english_name": "Wymysorys" + }, + "wyr": { + "english_name": "Wayor\u00f3" + }, + "wyy": { + "english_name": "Fijian, Western" + }, + "xaa": { + "english_name": "Arabic, Andalusian" + }, + "xab": { + "english_name": "Sambe" + }, + "xac": { + "english_name": "Kachari" + }, + "xad": { + "english_name": "Adai" + }, + "xae": { + "english_name": "Aequian" + }, + "xag": { + "english_name": "Aghwan" + }, + "xai": { + "english_name": "Kaimb\u00e9" + }, + "xal": { + "english_name": "Kalmyk" + }, + "xam": { + "english_name": "/Xam" + }, + "xan": { + "english_name": "Xamtanga" + }, + "xao": { + "english_name": "Khao" + }, + "xap": { + "english_name": "Apalachee" + }, + "xaq": { + "english_name": "Aquitanian" + }, + "xar": { + "english_name": "Karami" + }, + "xas": { + "english_name": "Kamas" + }, + "xat": { + "english_name": "Katawixi" + }, + "xau": { + "english_name": "Kauwera" + }, + "xav": { + "english_name": "Xav\u00e1nte" + }, + "xaw": { + "english_name": "Kawaiisu" + }, + "xay": { + "english_name": "Kayan Mahakam" + }, + "xba": { + "english_name": "Kamba (Brazil)" + }, + "xbb": { + "english_name": "Burdekin, Lower" + }, + "xbc": { + "english_name": "Bactrian" + }, + "xbd": { + "english_name": "Bindal" + }, + "xbe": { + "english_name": "Bigambal" + }, + "xbg": { + "english_name": "Bunganditj" + }, + "xbi": { + "english_name": "Kombio" + }, + "xbj": { + "english_name": "Birrpayi" + }, + "xbm": { + "english_name": "Breton, Middle" + }, + "xbn": { + "english_name": "Kenaboi" + }, + "xbo": { + "english_name": "Bolgarian" + }, + "xbp": { + "english_name": "Bibbulman" + }, + "xbr": { + "english_name": "Kambera" + }, + "xbw": { + "english_name": "Kambiw\u00e1" + }, + "xbx": { + "english_name": "Kabix\u00ed" + }, + "xby": { + "english_name": "Batyala" + }, + "xcb": { + "english_name": "Cumbric" + }, + "xcc": { + "english_name": "Camunic" + }, + "xce": { + "english_name": "Celtiberian" + }, + "xcg": { + "english_name": "Gaulish, Cisalpine" + }, + "xch": { + "english_name": "Chemakum" + }, + "xcl": { + "english_name": "Armenian, Classical" + }, + "xcm": { + "english_name": "Comecrudo" + }, + "xcn": { + "english_name": "Cotoname" + }, + "xco": { + "english_name": "Chorasmian" + }, + "xcr": { + "english_name": "Carian" + }, + "xct": { + "english_name": "Tibetan, Classical" + }, + "xcu": { + "english_name": "Curonian" + }, + "xcv": { + "english_name": "Chuvantsy" + }, + "xcw": { + "english_name": "Coahuilteco" + }, + "xcy": { + "english_name": "Cayuse" + }, + "xda": { + "english_name": "Darkinyung" + }, + "xdc": { + "english_name": "Dacian" + }, + "xdk": { + "english_name": "Dharuk" + }, + "xdm": { + "english_name": "Edomite" + }, + "xdy": { + "english_name": "Dayak, Malayic" + }, + "xeb": { + "english_name": "Eblan" + }, + "xed": { + "english_name": "Hdi" + }, + "xeg": { + "english_name": "//Xegwi" + }, + "xel": { + "english_name": "Kelo" + }, + "xem": { + "english_name": "Kembayan" + }, + "xep": { + "english_name": "Epi-Olmec" + }, + "xer": { + "english_name": "Xer\u00e9nte" + }, + "xes": { + "english_name": "Kesawai" + }, + "xet": { + "english_name": "Xet\u00e1" + }, + "xeu": { + "english_name": "Keoru-Ahia" + }, + "xfa": { + "english_name": "Faliscan" + }, + "xga": { + "english_name": "Galatian" + }, + "xgb": { + "english_name": "Gbin" + }, + "xgd": { + "english_name": "Gudang" + }, + "xgf": { + "english_name": "Gabrielino-Fernande\u00f1o" + }, + "xgg": { + "english_name": "Goreng" + }, + "xgi": { + "english_name": "Garingbal" + }, + "xgl": { + "english_name": "Galindan" + }, + "xgm": { + "english_name": "Guwinmal" + }, + "xgr": { + "english_name": "Garza" + }, + "xgu": { + "english_name": "Unggumi" + }, + "xgw": { + "english_name": "Guwa" + }, + "xh": { + "english_name": "Xhosa", + "name": "Xhosa" + }, + "xha": { + "english_name": "Harami" + }, + "xhc": { + "english_name": "Hunnic" + }, + "xhd": { + "english_name": "Hadrami" + }, + "xhe": { + "english_name": "Khetrani" + }, + "xhr": { + "english_name": "Hernican" + }, + "xht": { + "english_name": "Hattic" + }, + "xhu": { + "english_name": "Hurrian" + }, + "xhv": { + "english_name": "Khua" + }, + "xib": { + "english_name": "Iberian" + }, + "xii": { + "english_name": "Xiri" + }, + "xil": { + "english_name": "Illyrian" + }, + "xin": { + "english_name": "Xinca" + }, + "xip": { + "english_name": "Xipin\u00e1wa" + }, + "xir": { + "english_name": "Xiri\u00e2na" + }, + "xiv": { + "english_name": "Indus Valley Language" + }, + "xiy": { + "english_name": "Xipaya" + }, + "xjb": { + "english_name": "Minjungbal" + }, + "xjt": { + "english_name": "Jaitmatang" + }, + "xka": { + "english_name": "Kalkoti" + }, + "xkb": { + "english_name": "Nago, Northern" + }, + "xkc": { + "english_name": "Kho'ini" + }, + "xkd": { + "english_name": "Kayan, Mendalam" + }, + "xke": { + "english_name": "Kereho" + }, + "xkf": { + "english_name": "Khengkha" + }, + "xkg": { + "english_name": "Kagoro" + }, + "xkh": { + "english_name": "Karahawyana" + }, + "xki": { + "english_name": "Kenyan Sign Language" + }, + "xkj": { + "english_name": "Kajali" + }, + "xkk": { + "english_name": "Kaco'" + }, + "xkl": { + "english_name": "Mainstream Kenyah" + }, + "xkn": { + "english_name": "Kayan, Kayan River" + }, + "xko": { + "english_name": "Kiorr" + }, + "xkp": { + "english_name": "Kabatei" + }, + "xkq": { + "english_name": "Koroni" + }, + "xkr": { + "english_name": "Xakriab\u00e1" + }, + "xks": { + "english_name": "Kumbewaha" + }, + "xkt": { + "english_name": "Kantosi" + }, + "xku": { + "english_name": "Kaamba" + }, + "xkv": { + "english_name": "Kgalagadi" + }, + "xkw": { + "english_name": "Kembra" + }, + "xkx": { + "english_name": "Karore" + }, + "xky": { + "english_name": "Uma' Lasan" + }, + "xkz": { + "english_name": "Kurtokha" + }, + "xla": { + "english_name": "Kamula" + }, + "xlb": { + "english_name": "Loup B" + }, + "xlc": { + "english_name": "Lycian" + }, + "xld": { + "english_name": "Lydian" + }, + "xle": { + "english_name": "Lemnian" + }, + "xlg": { + "english_name": "Ligurian (Ancient)" + }, + "xli": { + "english_name": "Liburnian" + }, + "xln": { + "english_name": "Alanic" + }, + "xlo": { + "english_name": "Loup A" + }, + "xlp": { + "english_name": "Lepontic" + }, + "xls": { + "english_name": "Lusitanian" + }, + "xlu": { + "english_name": "Luwian, Cuneiform" + }, + "xly": { + "english_name": "Elymian" + }, + "xma": { + "english_name": "Mushungulu" + }, + "xmb": { + "english_name": "Mbonga" + }, + "xmc": { + "english_name": "Makhuwa-Marrevone" + }, + "xmd": { + "english_name": "Mbudum" + }, + "xme": { + "english_name": "Median" + }, + "xmf": { + "english_name": "Mingrelian" + }, + "xmg": { + "english_name": "Mengaka" + }, + "xmh": { + "english_name": "Kuku-Muminh" + }, + "xmj": { + "english_name": "Majera" + }, + "xmk": { + "english_name": "Macedonian, Ancient" + }, + "xml": { + "english_name": "Malaysian Sign Language" + }, + "xmm": { + "english_name": "Malay, Manado" + }, + "xmn": { + "english_name": "Persian, Manichaean Middle" + }, + "xmo": { + "english_name": "Morerebi" + }, + "xmp": { + "english_name": "Kuku-Mu'inh" + }, + "xmq": { + "english_name": "Kuku-Mangk" + }, + "xmr": { + "english_name": "Meroitic" + }, + "xms": { + "english_name": "Moroccan Sign Language" + }, + "xmt": { + "english_name": "Matbat" + }, + "xmu": { + "english_name": "Kamu" + }, + "xmv": { + "english_name": "Malagasy, Antankarana" + }, + "xmw": { + "english_name": "Malagasy, Tsimihety" + }, + "xmx": { + "english_name": "Maden" + }, + "xmy": { + "english_name": "Mayaguduna" + }, + "xmz": { + "english_name": "Mori Bawah" + }, + "xna": { + "english_name": "North Arabian, Ancient" + }, + "xnb": { + "english_name": "Kanakanabu" + }, + "xng": { + "english_name": "Mongolian, Middle" + }, + "xnh": { + "english_name": "Kuanhua" + }, + "xni": { + "english_name": "Ngarigu" + }, + "xnk": { + "english_name": "Nganakarti" + }, + "xnn": { + "english_name": "Kankanay, Northern" + }, + "xno": { + "english_name": "Anglo-Norman" + }, + "xnr": { + "english_name": "Kangri" + }, + "xns": { + "english_name": "Kanashi" + }, + "xnt": { + "english_name": "Narragansett" + }, + "xnu": { + "english_name": "Nukunul" + }, + "xny": { + "english_name": "Nyiyaparli" + }, + "xnz": { + "english_name": "Kenzi" + }, + "xoc": { + "english_name": "O'chi'chi'" + }, + "xod": { + "english_name": "Kokoda" + }, + "xog": { + "english_name": "Soga" + }, + "xoi": { + "english_name": "Kominimung" + }, + "xok": { + "english_name": "Xokleng" + }, + "xom": { + "english_name": "Komo (Sudan)" + }, + "xon": { + "english_name": "Konkomba" + }, + "xoo": { + "english_name": "Xukur\u00fa" + }, + "xop": { + "english_name": "Kopar" + }, + "xor": { + "english_name": "Korubo" + }, + "xow": { + "english_name": "Kowaki" + }, + "xpa": { + "english_name": "Pirriya" + }, + "xpc": { + "english_name": "Pecheneg" + }, + "xpe": { + "english_name": "Kpelle, Liberia" + }, + "xpg": { + "english_name": "Phrygian" + }, + "xpi": { + "english_name": "Pictish" + }, + "xpj": { + "english_name": "Mpalitjanh" + }, + "xpk": { + "english_name": "Pano, Kulina" + }, + "xpm": { + "english_name": "Pumpokol" + }, + "xpn": { + "english_name": "Kapinaw\u00e1" + }, + "xpo": { + "english_name": "Pochutec" + }, + "xpp": { + "english_name": "Puyo-Paekche" + }, + "xpq": { + "english_name": "Mohegan-Pequot" + }, + "xpr": { + "english_name": "Parthian" + }, + "xps": { + "english_name": "Pisidian" + }, + "xpt": { + "english_name": "Punthamara" + }, + "xpu": { + "english_name": "Punic" + }, + "xpy": { + "english_name": "Puyo" + }, + "xqa": { + "english_name": "Karakhanid" + }, + "xqt": { + "english_name": "Qatabanian" + }, + "xra": { + "english_name": "Krah\u00f4" + }, + "xrb": { + "english_name": "Karaboro, Eastern" + }, + "xrd": { + "english_name": "Gundungurra" + }, + "xre": { + "english_name": "Kreye" + }, + "xrg": { + "english_name": "Minang" + }, + "xri": { + "english_name": "Krikati-Timbira" + }, + "xrm": { + "english_name": "Armazic" + }, + "xrn": { + "english_name": "Arin" + }, + "xrq": { + "english_name": "Karranga" + }, + "xrr": { + "english_name": "Raetic" + }, + "xrt": { + "english_name": "Aranama-Tamique" + }, + "xru": { + "english_name": "Marriammu" + }, + "xrw": { + "english_name": "Karawa" + }, + "xsa": { + "english_name": "Sabaean" + }, + "xsb": { + "english_name": "Sambal" + }, + "xsc": { + "english_name": "Scythian" + }, + "xsd": { + "english_name": "Sidetic" + }, + "xse": { + "english_name": "Sempan" + }, + "xsh": { + "english_name": "Shamang" + }, + "xsi": { + "english_name": "Sio" + }, + "xsl": { + "english_name": "Slavey, South" + }, + "xsm": { + "english_name": "Kasem" + }, + "xsn": { + "english_name": "Sanga (Nigeria)" + }, + "xso": { + "english_name": "Solano" + }, + "xsp": { + "english_name": "Silopi" + }, + "xsq": { + "english_name": "Makhuwa-Saka" + }, + "xsr": { + "english_name": "Sherpa" + }, + "xss": { + "english_name": "Assan" + }, + "xsu": { + "english_name": "Sanum\u00e1" + }, + "xsv": { + "english_name": "Sudovian" + }, + "xsy": { + "english_name": "Saisiyat" + }, + "xta": { + "english_name": "Mixtec, Alcozauca" + }, + "xtb": { + "english_name": "Mixtec, Chazumba" + }, + "xtc": { + "english_name": "Katcha-Kadugli-Miri" + }, + "xtd": { + "english_name": "Mixtec, Diuxi-Tilantongo" + }, + "xte": { + "english_name": "Ketengban" + }, + "xtg": { + "english_name": "Gaulish, Transalpine" + }, + "xth": { + "english_name": "Yitha Yitha" + }, + "xti": { + "english_name": "Mixtec, Sinicahua" + }, + "xtj": { + "english_name": "Mixtec, San Juan Teita" + }, + "xtl": { + "english_name": "Mixtec, Tijaltepec" + }, + "xtm": { + "english_name": "Mixtec, Magdalena Pe\u00f1asco" + }, + "xtn": { + "english_name": "Mixtec, Northern Tlaxiaco" + }, + "xto": { + "english_name": "Tokharian A" + }, + "xtp": { + "english_name": "Mixtec, San Miguel Piedras" + }, + "xtq": { + "english_name": "Tumshuqese" + }, + "xtr": { + "english_name": "Tripuri, Early" + }, + "xts": { + "english_name": "Mixtec, Sindihui" + }, + "xtt": { + "english_name": "Mixtec, Tacahua" + }, + "xtu": { + "english_name": "Mixtec, Cuyamecalco" + }, + "xtv": { + "english_name": "Thawa" + }, + "xtw": { + "english_name": "Tawand\u00ea" + }, + "xty": { + "english_name": "Mixtec, Yoloxochitl" + }, + "xtz": { + "english_name": "Tasmanian" + }, + "xua": { + "english_name": "Kurumba, Alu" + }, + "xub": { + "english_name": "Kurumba, Betta" + }, + "xud": { + "english_name": "Umiida" + }, + "xug": { + "english_name": "Kunigami" + }, + "xuj": { + "english_name": "Kurumba, Jennu" + }, + "xul": { + "english_name": "Ngunawal" + }, + "xum": { + "english_name": "Umbrian" + }, + "xun": { + "english_name": "Unggaranggu" + }, + "xuo": { + "english_name": "Kuo" + }, + "xup": { + "english_name": "Umpqua, Upper" + }, + "xur": { + "english_name": "Urartian" + }, + "xut": { + "english_name": "Kuthant" + }, + "xuu": { + "english_name": "Kxoe" + }, + "xve": { + "english_name": "Venetic" + }, + "xvi": { + "english_name": "Kamviri" + }, + "xvn": { + "english_name": "Vandalic" + }, + "xvo": { + "english_name": "Volscian" + }, + "xvs": { + "english_name": "Vestinian" + }, + "xwa": { + "english_name": "Kwaza" + }, + "xwc": { + "english_name": "Woccon" + }, + "xwd": { + "english_name": "Wadi Wadi" + }, + "xwe": { + "english_name": "Gbe, Xwela" + }, + "xwg": { + "english_name": "Kwegu" + }, + "xwj": { + "english_name": "Wajuk" + }, + "xwk": { + "english_name": "Wangkumara" + }, + "xwl": { + "english_name": "Gbe, Western Xwla" + }, + "xwo": { + "english_name": "Oirat, Written" + }, + "xwr": { + "english_name": "Kwerba Mamberamo" + }, + "xwt": { + "english_name": "Wotjobaluk" + }, + "xww": { + "english_name": "Wemba Wemba" + }, + "xxb": { + "english_name": "Boro (Ghana)" + }, + "xxk": { + "english_name": "Ke'o" + }, + "xxm": { + "english_name": "Minkin" + }, + "xxr": { + "english_name": "Korop\u00f3" + }, + "xxt": { + "english_name": "Tambora" + }, + "xya": { + "english_name": "Yaygir" + }, + "xyb": { + "english_name": "Yandjibara" + }, + "xyj": { + "english_name": "Mayi-Yapi" + }, + "xyk": { + "english_name": "Mayi-Kulan" + }, + "xyl": { + "english_name": "Yalakalore" + }, + "xyt": { + "english_name": "Mayi-Thakurti" + }, + "xyy": { + "english_name": "Yorta Yorta" + }, + "xzh": { + "english_name": "Zhang-Zhung" + }, + "xzm": { + "english_name": "Zemgalian" + }, + "xzp": { + "english_name": "Zapotec, Ancient" + }, + "yaa": { + "english_name": "Yaminahua" + }, + "yab": { + "english_name": "Yuhup" + }, + "yac": { + "english_name": "Yali, Pass Valley" + }, + "yad": { + "english_name": "Yagua" + }, + "yae": { + "english_name": "Pum\u00e9" + }, + "yaf": { + "english_name": "Yaka (Democratic Republic of Congo)" + }, + "yag": { + "english_name": "Y\u00e1mana" + }, + "yah": { + "english_name": "Yazgulyam" + }, + "yai": { + "english_name": "Yagnobi" + }, + "yaj": { + "english_name": "Banda-Yangere" + }, + "yak": { + "english_name": "Yakama" + }, + "yal": { + "english_name": "Yalunka" + }, + "yam": { + "english_name": "Yamba" + }, + "yan": { + "english_name": "Mayangna" + }, + "yao": { + "english_name": "Yao" + }, + "yap": { + "english_name": "Yapese" + }, + "yaq": { + "english_name": "Yaqui" + }, + "yar": { + "english_name": "Yabarana" + }, + "yas": { + "english_name": "Nugunu (Cameroon)" + }, + "yat": { + "english_name": "Yambeta" + }, + "yau": { + "english_name": "Yuwana" + }, + "yav": { + "english_name": "Yangben" + }, + "yaw": { + "english_name": "Yawalapit\u00ed" + }, + "yax": { + "english_name": "Yauma" + }, + "yay": { + "english_name": "Agwagwune" + }, + "yaz": { + "english_name": "Lokaa" + }, + "yba": { + "english_name": "Yala" + }, + "ybb": { + "english_name": "Yemba" + }, + "ybe": { + "english_name": "Yugur, West" + }, + "ybh": { + "english_name": "Yakha" + }, + "ybi": { + "english_name": "Yamphu" + }, + "ybj": { + "english_name": "Hasha" + }, + "ybk": { + "english_name": "Bokha" + }, + "ybl": { + "english_name": "Yukuben" + }, + "ybm": { + "english_name": "Yaben" + }, + "ybn": { + "english_name": "Yaba\u00e2na" + }, + "ybo": { + "english_name": "Yabong" + }, + "ybx": { + "english_name": "Yawiyo" + }, + "yby": { + "english_name": "Yaweyuha" + }, + "ych": { + "english_name": "Chesu" + }, + "ycl": { + "english_name": "Lolopo" + }, + "ycn": { + "english_name": "Yucuna" + }, + "ycp": { + "english_name": "Chepya" + }, + "yda": { + "english_name": "Yanda" + }, + "ydd": { + "english_name": "Yiddish, Eastern" + }, + "yde": { + "english_name": "Yangum Dey" + }, + "ydg": { + "english_name": "Yidgha" + }, + "ydk": { + "english_name": "Yoidik" + }, + "yea": { + "english_name": "Ravula" + }, + "yec": { + "english_name": "Yeniche" + }, + "yee": { + "english_name": "Yimas" + }, + "yei": { + "english_name": "Yeni" + }, + "yej": { + "english_name": "Yevanic" + }, + "yel": { + "english_name": "Yela" + }, + "yer": { + "english_name": "Tarok" + }, + "yes": { + "english_name": "Nyankpa" + }, + "yet": { + "english_name": "Yetfa" + }, + "yeu": { + "english_name": "Yerukula" + }, + "yev": { + "english_name": "Yapunda" + }, + "yey": { + "english_name": "Yeyi" + }, + "yga": { + "english_name": "Malyangapa" + }, + "ygi": { + "english_name": "Yiningayi" + }, + "ygl": { + "english_name": "Yangum Gel" + }, + "ygm": { + "english_name": "Yagomi" + }, + "ygp": { + "english_name": "Gepo" + }, + "ygr": { + "english_name": "Yagaria" + }, + "ygu": { + "english_name": "Yugul" + }, + "ygw": { + "english_name": "Yagwoia" + }, + "yha": { + "english_name": "Buyang, Baha" + }, + "yhd": { + "english_name": "Arabic, Judeo-Iraqi" + }, + "yhl": { + "english_name": "Phowa, Hlepho" + }, + "yi": { + "english_name": "Yiddish" + }, + "yia": { + "english_name": "Yinggarda" + }, + "yif": { + "english_name": "Ache" + }, + "yig": { + "english_name": "Nasu, Wusa" + }, + "yih": { + "english_name": "Yiddish, Western" + }, + "yii": { + "english_name": "Yidiny" + }, + "yij": { + "english_name": "Yindjibarndi" + }, + "yik": { + "english_name": "Lalo, Dongshanba" + }, + "yil": { + "english_name": "Yindjilandji" + }, + "yim": { + "english_name": "Naga, Yimchungru" + }, + "yin": { + "english_name": "Yinchia" + }, + "yip": { + "english_name": "Pholo" + }, + "yiq": { + "english_name": "Miqie" + }, + "yir": { + "english_name": "Awyu, North" + }, + "yis": { + "english_name": "Yis" + }, + "yit": { + "english_name": "Lalu, Eastern" + }, + "yiu": { + "english_name": "Awu" + }, + "yiv": { + "english_name": "Nisu, Northern" + }, + "yix": { + "english_name": "Yi, Axi" + }, + "yiz": { + "english_name": "Azhe" + }, + "yka": { + "english_name": "Yakan" + }, + "ykg": { + "english_name": "Yukaghir, Northern" + }, + "yki": { + "english_name": "Yoke" + }, + "ykk": { + "english_name": "Yakaikeke" + }, + "ykl": { + "english_name": "Khlula" + }, + "ykm": { + "english_name": "Kap" + }, + "ykn": { + "english_name": "Kua-nsi" + }, + "yko": { + "english_name": "Yasa" + }, + "ykr": { + "english_name": "Yekora" + }, + "ykt": { + "english_name": "Kathu" + }, + "yku": { + "english_name": "Kuamasi" + }, + "yky": { + "english_name": "Yakoma" + }, + "yla": { + "english_name": "Yaul" + }, + "ylb": { + "english_name": "Yaleba" + }, + "yle": { + "english_name": "Yele" + }, + "ylg": { + "english_name": "Yelogu" + }, + "yli": { + "english_name": "Yali, Angguruk" + }, + "yll": { + "english_name": "Yil" + }, + "ylm": { + "english_name": "Limi" + }, + "yln": { + "english_name": "Buyang, Langnian" + }, + "ylo": { + "english_name": "Yi, Naluo" + }, + "ylr": { + "english_name": "Yalarnnga" + }, + "ylu": { + "english_name": "Aribwaung" + }, + "yly": { + "english_name": "Ny\u00e2layu" + }, + "ymb": { + "english_name": "Yambes" + }, + "ymc": { + "english_name": "Muji, Southern" + }, + "ymd": { + "english_name": "Muda" + }, + "yme": { + "english_name": "Yameo" + }, + "ymg": { + "english_name": "Yamongeri" + }, + "ymh": { + "english_name": "Mili" + }, + "ymi": { + "english_name": "Moji" + }, + "ymk": { + "english_name": "Makwe" + }, + "yml": { + "english_name": "Iamalele" + }, + "ymm": { + "english_name": "Maay" + }, + "ymn": { + "english_name": "Yamna" + }, + "ymo": { + "english_name": "Yangum Mon" + }, + "ymp": { + "english_name": "Yamap" + }, + "ymq": { + "english_name": "Muji, Qila" + }, + "ymr": { + "english_name": "Malasar" + }, + "yms": { + "english_name": "Mysian" + }, + "ymx": { + "english_name": "Muji, Northern" + }, + "ymz": { + "english_name": "Muzi" + }, + "yna": { + "english_name": "Aluo" + }, + "ynd": { + "english_name": "Yandruwandha" + }, + "yne": { + "english_name": "Lang'e" + }, + "yng": { + "english_name": "Yango" + }, + "ynk": { + "english_name": "Yupik, Naukan" + }, + "ynl": { + "english_name": "Yangulam" + }, + "ynn": { + "english_name": "Yana" + }, + "yno": { + "english_name": "Yong" + }, + "ynq": { + "english_name": "Yendang" + }, + "yns": { + "english_name": "Yansi" + }, + "ynu": { + "english_name": "Yahuna" + }, + "yo": { + "english_name": "Yoruba" + }, + "yob": { + "english_name": "Yoba" + }, + "yog": { + "english_name": "Yogad" + }, + "yoi": { + "english_name": "Yonaguni" + }, + "yok": { + "english_name": "Yokuts" + }, + "yol": { + "english_name": "Yola" + }, + "yom": { + "english_name": "Yombe" + }, + "yon": { + "english_name": "Yongkom" + }, + "yot": { + "english_name": "Yotti" + }, + "yox": { + "english_name": "Yoron" + }, + "yoy": { + "english_name": "Yoy" + }, + "ypa": { + "english_name": "Phala" + }, + "ypb": { + "english_name": "Phowa, Labo" + }, + "ypg": { + "english_name": "Phola" + }, + "yph": { + "english_name": "Phupha" + }, + "ypm": { + "english_name": "Phuma" + }, + "ypn": { + "english_name": "Phowa, Ani" + }, + "ypo": { + "english_name": "Phola, Alo" + }, + "ypp": { + "english_name": "Phupa" + }, + "ypz": { + "english_name": "Phuza" + }, + "yra": { + "english_name": "Yerakai" + }, + "yrb": { + "english_name": "Yareba" + }, + "yre": { + "english_name": "Yaour\u00e9" + }, + "yri": { + "english_name": "Yar\u00ed" + }, + "yrk": { + "english_name": "Nenets" + }, + "yrl": { + "english_name": "Nhengatu" + }, + "yrm": { + "english_name": "Yirrk-Mel" + }, + "yrn": { + "english_name": "Yerong" + }, + "yrs": { + "english_name": "Yarsun" + }, + "yrw": { + "english_name": "Yarawata" + }, + "yry": { + "english_name": "Yarluyandi" + }, + "ysc": { + "english_name": "Yassic" + }, + "ysd": { + "english_name": "Samatao" + }, + "ysg": { + "english_name": "Sonaga" + }, + "ysl": { + "english_name": "Yugoslavian Sign Language" + }, + "ysn": { + "english_name": "Sani" + }, + "yso": { + "english_name": "Nisi (China)" + }, + "ysp": { + "english_name": "Lolopo, Southern" + }, + "ysr": { + "english_name": "Yupik, Sirenik" + }, + "yss": { + "english_name": "Yessan-Mayo" + }, + "ysy": { + "english_name": "Sanie" + }, + "yta": { + "english_name": "Talu" + }, + "ytl": { + "english_name": "Tanglang" + }, + "ytp": { + "english_name": "Thopho" + }, + "ytw": { + "english_name": "Yout Wam" + }, + "yty": { + "english_name": "Yatay" + }, + "yua": { + "english_name": "Yucateco" + }, + "yub": { + "english_name": "Yugambal" + }, + "yuc": { + "english_name": "Yuchi" + }, + "yud": { + "english_name": "Arabic, Judeo-Tripolitanian" + }, + "yue": { + "english_name": "Chinese, Yue" + }, + "yuf": { + "english_name": "Havasupai-Walapai-Yavapai" + }, + "yug": { + "english_name": "Yug" + }, + "yui": { + "english_name": "Yurut\u00ed" + }, + "yuj": { + "english_name": "Karkar-Yuri" + }, + "yuk": { + "english_name": "Yuki" + }, + "yul": { + "english_name": "Yulu" + }, + "yum": { + "english_name": "Quechan" + }, + "yun": { + "english_name": "Bena (Nigeria)" + }, + "yup": { + "english_name": "Yukpa" + }, + "yuq": { + "english_name": "Yuqui" + }, + "yur": { + "english_name": "Yurok" + }, + "yut": { + "english_name": "Yopno" + }, + "yuw": { + "english_name": "Yau (Morobe Province)" + }, + "yux": { + "english_name": "Yukaghir, Southern" + }, + "yuy": { + "english_name": "Yugur, East" + }, + "yuz": { + "english_name": "Yuracare" + }, + "yva": { + "english_name": "Yawa" + }, + "yvt": { + "english_name": "Yavitero" + }, + "ywa": { + "english_name": "Kalou" + }, + "ywg": { + "english_name": "Yinhawangka" + }, + "ywl": { + "english_name": "Lalu, Western" + }, + "ywn": { + "english_name": "Yawanawa" + }, + "ywq": { + "english_name": "Yi, Wuding-Luquan" + }, + "ywr": { + "english_name": "Yawuru" + }, + "ywt": { + "english_name": "Lalo, Xishanba" + }, + "ywu": { + "english_name": "Nasu, Wumeng" + }, + "yww": { + "english_name": "Yawarawarga" + }, + "yxa": { + "english_name": "Mayawali" + }, + "yxg": { + "english_name": "Yagara" + }, + "yxl": { + "english_name": "Yardliyawarra" + }, + "yxm": { + "english_name": "Yinwum" + }, + "yxu": { + "english_name": "Yuyu" + }, + "yxy": { + "english_name": "Yabula Yabula" + }, + "yyr": { + "english_name": "Yir Yoront" + }, + "yyu": { + "english_name": "Yau (Sandaun Province)" + }, + "yyz": { + "english_name": "Ayizi" + }, + "yzg": { + "english_name": "Buyang, E'ma" + }, + "yzk": { + "english_name": "Zokhuo" + }, + "za": { + "english_name": "Zhuang" + }, + "zaa": { + "english_name": "Zapotec, Sierra de Ju\u00e1rez" + }, + "zab": { + "english_name": "Zapotec, San Juan Guelav\u00eda" + }, + "zac": { + "english_name": "Zapotec, Ocotl\u00e1n" + }, + "zad": { + "english_name": "Zapotec, Cajonos" + }, + "zae": { + "english_name": "Zapotec, Yareni" + }, + "zaf": { + "english_name": "Zapotec, Ayoquesco" + }, + "zag": { + "english_name": "Zaghawa" + }, + "zah": { + "english_name": "Zangwal" + }, + "zai": { + "english_name": "Zapotec, Isthmus" + }, + "zaj": { + "english_name": "Zaramo" + }, + "zak": { + "english_name": "Zanaki" + }, + "zal": { + "english_name": "Zauzou" + }, + "zam": { + "english_name": "Zapotec, Miahuatl\u00e1n" + }, + "zao": { + "english_name": "Zapotec, Ozolotepec" + }, + "zap": { + "english_name": "Zapotec" + }, + "zaq": { + "english_name": "Zapotec, Alo\u00e1pam" + }, + "zar": { + "english_name": "Zapotec, Rinc\u00f3n" + }, + "zas": { + "english_name": "Zapotec, Santo Domingo Albarradas" + }, + "zat": { + "english_name": "Zapotec, Tabaa" + }, + "zau": { + "english_name": "Zangskari" + }, + "zav": { + "english_name": "Zapotec, Yatzachi" + }, + "zaw": { + "english_name": "Zapotec, Mitla" + }, + "zax": { + "english_name": "Zapotec, Xadani" + }, + "zay": { + "english_name": "Zayse-Zergulla" + }, + "zaz": { + "english_name": "Zari" + }, + "zbc": { + "english_name": "Berawan, Central" + }, + "zbe": { + "english_name": "Berawan, East" + }, + "zbl": { + "english_name": "Blissymbols" + }, + "zbt": { + "english_name": "Batui" + }, + "zbw": { + "english_name": "Berawan, West" + }, + "zca": { + "english_name": "Zapotec, Coatecas Altas" + }, + "zch": { + "english_name": "Zhuang, Central Hongshuihe" + }, + "zdj": { + "english_name": "Comorian, Ngazidja" + }, + "zea": { + "english_name": "Zeeuws" + }, + "zeg": { + "english_name": "Zenag" + }, + "zeh": { + "english_name": "Zhuang, Eastern Hongshuihe" + }, + "zen": { + "english_name": "Zenaga" + }, + "zga": { + "english_name": "Kinga" + }, + "zgb": { + "english_name": "Zhuang, Guibei" + }, + "zgh": { + "english_name": "Tamazight, Standard Moroccan" + }, + "zgm": { + "english_name": "Zhuang, Minz" + }, + "zgn": { + "english_name": "Zhuang, Guibian" + }, + "zgr": { + "english_name": "Magori" + }, + "zh": { + "english_name": "Chinese", + "name": "\u4e2d\u6587" + }, + "zhb": { + "english_name": "Zhaba" + }, + "zhd": { + "english_name": "Zhuang, Dai" + }, + "zhi": { + "english_name": "Zhire" + }, + "zhn": { + "english_name": "Zhuang, Nong" + }, + "zhw": { + "english_name": "Zhoa" + }, + "zia": { + "english_name": "Zia" + }, + "zib": { + "english_name": "Zimbabwe Sign Language" + }, + "zik": { + "english_name": "Zimakani" + }, + "zil": { + "english_name": "Zialo" + }, + "zim": { + "english_name": "Mesme" + }, + "zin": { + "english_name": "Zinza" + }, + "zir": { + "english_name": "Ziriya" + }, + "ziw": { + "english_name": "Zigula" + }, + "ziz": { + "english_name": "Zizilivakan" + }, + "zka": { + "english_name": "Kaimbulawa" + }, + "zkb": { + "english_name": "Koibal" + }, + "zkd": { + "english_name": "Kadu" + }, + "zkg": { + "english_name": "Koguryo" + }, + "zkh": { + "english_name": "Khorezmian" + }, + "zkk": { + "english_name": "Karankawa" + }, + "zkn": { + "english_name": "Kanan" + }, + "zko": { + "english_name": "Kott" + }, + "zkp": { + "english_name": "Kaing\u00e1ng, S\u00e3o Paulo" + }, + "zkr": { + "english_name": "Zakhring" + }, + "zkt": { + "english_name": "Kitan" + }, + "zku": { + "english_name": "Kaurna" + }, + "zkv": { + "english_name": "Krevinian" + }, + "zkz": { + "english_name": "Khazar" + }, + "zlj": { + "english_name": "Zhuang, Liujiang" + }, + "zlm": { + "english_name": "Malay (individual language)" + }, + "zln": { + "english_name": "Zhuang, Lianshan" + }, + "zlq": { + "english_name": "Zhuang, Liuqian" + }, + "zma": { + "english_name": "Manda (Australia)" + }, + "zmb": { + "english_name": "Zimba" + }, + "zmc": { + "english_name": "Margany" + }, + "zmd": { + "english_name": "Maridan" + }, + "zme": { + "english_name": "Mangerr" + }, + "zmf": { + "english_name": "Mfinu" + }, + "zmg": { + "english_name": "Marti Ke" + }, + "zmh": { + "english_name": "Makolkol" + }, + "zmi": { + "english_name": "Negeri Sembilan Malay" + }, + "zmj": { + "english_name": "Maridjabin" + }, + "zmk": { + "english_name": "Mandandanyi" + }, + "zml": { + "english_name": "Madngele" + }, + "zmm": { + "english_name": "Marimanindji" + }, + "zmn": { + "english_name": "Mbangwe" + }, + "zmo": { + "english_name": "Molo" + }, + "zmp": { + "english_name": "Mpuono" + }, + "zmq": { + "english_name": "Mituku" + }, + "zmr": { + "english_name": "Maranunggu" + }, + "zms": { + "english_name": "Mbesa" + }, + "zmt": { + "english_name": "Maringarr" + }, + "zmu": { + "english_name": "Muruwari" + }, + "zmv": { + "english_name": "Mbariman-Gudhinma" + }, + "zmw": { + "english_name": "Mbo (Democratic Republic of Congo)" + }, + "zmx": { + "english_name": "Bomitaba" + }, + "zmy": { + "english_name": "Mariyedi" + }, + "zmz": { + "english_name": "Mbandja" + }, + "zna": { + "english_name": "Zan Gula" + }, + "zne": { + "english_name": "Zande (individual language)" + }, + "zng": { + "english_name": "Mang" + }, + "znk": { + "english_name": "Manangkari" + }, + "zns": { + "english_name": "Mangas" + }, + "zoc": { + "english_name": "Zoque, Copainal\u00e1" + }, + "zoh": { + "english_name": "Zoque, Chimalapa" + }, + "zom": { + "english_name": "Zou" + }, + "zoo": { + "english_name": "Zapotec, Asunci\u00f3n Mixtepec" + }, + "zoq": { + "english_name": "Zoque, Tabasco" + }, + "zor": { + "english_name": "Zoque, Ray\u00f3n" + }, + "zos": { + "english_name": "Zoque, Francisco Le\u00f3n" + }, + "zpa": { + "english_name": "Zapotec, Lachiguiri" + }, + "zpb": { + "english_name": "Zapotec, Yautepec" + }, + "zpc": { + "english_name": "Zapotec, Choapan" + }, + "zpd": { + "english_name": "Zapotec, Southeastern Ixtl\u00e1n" + }, + "zpe": { + "english_name": "Zapotec, Petapa" + }, + "zpf": { + "english_name": "Zapotec, San Pedro Quiatoni" + }, + "zpg": { + "english_name": "Zapotec, Guevea De Humboldt" + }, + "zph": { + "english_name": "Zapotec, Totomachapan" + }, + "zpi": { + "english_name": "Zapotec, Santa Mar\u00eda Quiegolani" + }, + "zpj": { + "english_name": "Zapotec, Quiavicuzas" + }, + "zpk": { + "english_name": "Zapotec, Tlacolulita" + }, + "zpl": { + "english_name": "Zapotec, Lachix\u00edo" + }, + "zpm": { + "english_name": "Zapotec, Mixtepec" + }, + "zpn": { + "english_name": "Zapotec, Santa In\u00e9s Yatzechi" + }, + "zpo": { + "english_name": "Zapotec, Amatl\u00e1n" + }, + "zpp": { + "english_name": "Zapotec, El Alto" + }, + "zpq": { + "english_name": "Zapotec, Zoogocho" + }, + "zpr": { + "english_name": "Zapotec, Santiago Xanica" + }, + "zps": { + "english_name": "Zapotec, Coatl\u00e1n" + }, + "zpt": { + "english_name": "Zapotec, San Vicente Coatl\u00e1n" + }, + "zpu": { + "english_name": "Zapotec, Yal\u00e1lag" + }, + "zpv": { + "english_name": "Zapotec, Chichicapan" + }, + "zpw": { + "english_name": "Zapotec, Zaniza" + }, + "zpx": { + "english_name": "Zapotec, San Baltazar Loxicha" + }, + "zpy": { + "english_name": "Zapotec, Mazaltepec" + }, + "zpz": { + "english_name": "Zapotec, Texmelucan" + }, + "zqe": { + "english_name": "Zhuang, Qiubei" + }, + "zra": { + "english_name": "Kara (Korea)" + }, + "zrg": { + "english_name": "Mirgan" + }, + "zrn": { + "english_name": "Zerenkel" + }, + "zro": { + "english_name": "Z\u00e1paro" + }, + "zrp": { + "english_name": "Zarphatic" + }, + "zrs": { + "english_name": "Mairasi" + }, + "zsa": { + "english_name": "Sarasira" + }, + "zsk": { + "english_name": "Kaskean" + }, + "zsl": { + "english_name": "Zambian Sign Language" + }, + "zsm": { + "english_name": "Malay, Standard" + }, + "zsr": { + "english_name": "Zapotec, Southern Rincon" + }, + "zsu": { + "english_name": "Sukurum" + }, + "zte": { + "english_name": "Zapotec, Elotepec" + }, + "ztg": { + "english_name": "Zapotec, Xanagu\u00eda" + }, + "ztl": { + "english_name": "Zapotec, Lapagu\u00eda-Guivini" + }, + "ztm": { + "english_name": "Zapotec, San Agust\u00edn Mixtepec" + }, + "ztn": { + "english_name": "Zapotec, Santa Catarina Albarradas" + }, + "ztp": { + "english_name": "Zapotec, Loxicha" + }, + "ztq": { + "english_name": "Zapotec, Quioquitani-Quier\u00ed" + }, + "zts": { + "english_name": "Zapotec, Tilquiapan" + }, + "ztt": { + "english_name": "Zapotec, Tejalapan" + }, + "ztu": { + "english_name": "Zapotec, G\u00fcil\u00e1" + }, + "ztx": { + "english_name": "Zapotec, Zaachila" + }, + "zty": { + "english_name": "Zapotec, Yatee" + }, + "zu": { + "english_name": "Zulu", + "name": "Isi-Zulu" + }, + "zua": { + "english_name": "Zeem" + }, + "zuh": { + "english_name": "Tokano" + }, + "zum": { + "english_name": "Kumzari" + }, + "zun": { + "english_name": "Zuni" + }, + "zuy": { + "english_name": "Zumaya" + }, + "zwa": { + "english_name": "Zay" + }, + "zxx": { + "english_name": "No linguistic content" + }, + "zyb": { + "english_name": "Zhuang, Yongbei" + }, + "zyg": { + "english_name": "Zhuang, Yang" + }, + "zyj": { + "english_name": "Zhuang, Youjiang" + }, + "zyn": { + "english_name": "Zhuang, Yongnan" + }, + "zyp": { + "english_name": "Chin, Zyphe" + }, + "zza": { + "english_name": "Zaza" + }, + "zzj": { + "english_name": "Zhuang, Zuojiang" + } + }, + "ddg definitions": [ + "ar-XA", + "bg-BG", + "ca-CT", + "ca-ES", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-ID", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-UK", + "en-US", + "en-ZA", + "es-AR", + "es-CL", + "es-CO", + "es-ES", + "es-MX", + "es-PE", + "es-US", + "et-EE", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "he-IL", + "hr-HR", + "hu-HU", + "id-ID", + "it-CH", + "it-IT", + "jp-JP", + "kr-KR", + "lt-LT", + "lv-LV", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sk-SK", + "sl-SL", + "sv-SE", + "th-TH", + "tl-PH", + "tr-TR", + "tzh-HK", + "tzh-TW", + "vi-VN", + "wt-WT", + "zh-CN" + ], + "duckduckgo": [ + "ar-XA", + "bg-BG", + "ca-CT", + "ca-ES", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-ID", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-UK", + "en-US", + "en-ZA", + "es-AR", + "es-CL", + "es-CO", + "es-ES", + "es-MX", + "es-PE", + "es-US", + "et-EE", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "he-IL", + "hr-HR", + "hu-HU", + "id-ID", + "it-CH", + "it-IT", + "jp-JP", + "kr-KR", + "lt-LT", + "lv-LV", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sk-SK", + "sl-SL", + "sv-SE", + "th-TH", + "tl-PH", + "tr-TR", + "tzh-HK", + "tzh-TW", + "vi-VN", + "wt-WT", + "zh-CN" + ], + "duckduckgo images": [ + "ar-XA", + "bg-BG", + "ca-CT", + "ca-ES", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-ID", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-UK", + "en-US", + "en-ZA", + "es-AR", + "es-CL", + "es-CO", + "es-ES", + "es-MX", + "es-PE", + "es-US", + "et-EE", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "he-IL", + "hr-HR", + "hu-HU", + "id-ID", + "it-CH", + "it-IT", + "jp-JP", + "kr-KR", + "lt-LT", + "lv-LV", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sk-SK", + "sl-SL", + "sv-SE", + "th-TH", + "tl-PH", + "tr-TR", + "tzh-HK", + "tzh-TW", + "vi-VN", + "wt-WT", + "zh-CN" + ], + "gigablast": [], + "google": { + "af": { + "name": "Afrikaans" + }, + "ar": { + "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" + }, + "be": { + "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" + }, + "bg": { + "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" + }, + "ca": { + "name": "Catal\u00e0" + }, + "cs": { + "name": "\u010ce\u0161tina" + }, + "da": { + "name": "Dansk" + }, + "de": { + "name": "Deutsch" + }, + "el": { + "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" + }, + "en": { + "name": "English" + }, + "eo": { + "name": "Esperanto" + }, + "es": { + "name": "Espa\u00f1ol" + }, + "et": { + "name": "Eesti" + }, + "fa": { + "name": "\u0641\u0627\u0631\u0633\u06cc" + }, + "fi": { + "name": "Suomi" + }, + "fr": { + "name": "Fran\u00e7ais" + }, + "hi": { + "name": "\u0939\u093f\u0928\u094d\u0926\u0940" + }, + "hr": { + "name": "Hrvatski" + }, + "hu": { + "name": "Magyar" + }, + "hy": { + "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576" + }, + "id": { + "name": "Indonesia" + }, + "is": { + "name": "\u00cdslenska" + }, + "it": { + "name": "Italiano" + }, + "iw": { + "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" + }, + "ja": { + "name": "\u65e5\u672c\u8a9e" + }, + "ko": { + "name": "\ud55c\uad6d\uc5b4" + }, + "lt": { + "name": "Lietuvi\u0173" + }, + "lv": { + "name": "Latvie\u0161u" + }, + "nl": { + "name": "Nederlands" + }, + "no": { + "name": "Norsk" + }, + "pl": { + "name": "Polski" + }, + "pt": { + "name": "Portugu\u00eas" + }, + "ro": { + "name": "Rom\u00e2n\u0103" + }, + "ru": { + "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" + }, + "sk": { + "name": "Sloven\u010dina" + }, + "sl": { + "name": "Sloven\u0161\u010dina" + }, + "sr": { + "name": "\u0421\u0440\u043f\u0441\u043a\u0438" + }, + "sv": { + "name": "Svenska" + }, + "sw": { + "name": "Kiswahili" + }, + "th": { + "name": "\u0e44\u0e17\u0e22" + }, + "tl": { + "name": "Filipino" + }, + "tr": { + "name": "T\u00fcrk\u00e7e" + }, + "uk": { + "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" + }, + "vi": { + "name": "Ti\u1ebfng Vi\u1ec7t" + }, + "zh-CN": { + "name": "\u4e2d\u6587 (\u7b80\u4f53)" + }, + "zh-TW": { + "name": "\u4e2d\u6587 (\u7e41\u9ad4)" + } + }, + "google news": { + "af": { + "name": "Afrikaans" + }, + "ar": { + "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" + }, + "be": { + "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" + }, + "bg": { + "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" + }, + "ca": { + "name": "Catal\u00e0" + }, + "cs": { + "name": "\u010ce\u0161tina" + }, + "da": { + "name": "Dansk" + }, + "de": { + "name": "Deutsch" + }, + "el": { + "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" + }, + "en": { + "name": "English" + }, + "eo": { + "name": "Esperanto" + }, + "es": { + "name": "Espa\u00f1ol" + }, + "et": { + "name": "Eesti" + }, + "fa": { + "name": "\u0641\u0627\u0631\u0633\u06cc" + }, + "fi": { + "name": "Suomi" + }, + "fr": { + "name": "Fran\u00e7ais" + }, + "hi": { + "name": "\u0939\u093f\u0928\u094d\u0926\u0940" + }, + "hr": { + "name": "Hrvatski" + }, + "hu": { + "name": "Magyar" + }, + "hy": { + "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576" + }, + "id": { + "name": "Indonesia" + }, + "is": { + "name": "\u00cdslenska" + }, + "it": { + "name": "Italiano" + }, + "iw": { + "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" + }, + "ja": { + "name": "\u65e5\u672c\u8a9e" + }, + "ko": { + "name": "\ud55c\uad6d\uc5b4" + }, + "lt": { + "name": "Lietuvi\u0173" + }, + "lv": { + "name": "Latvie\u0161u" + }, + "nl": { + "name": "Nederlands" + }, + "no": { + "name": "Norsk" + }, + "pl": { + "name": "Polski" + }, + "pt": { + "name": "Portugu\u00eas" + }, + "ro": { + "name": "Rom\u00e2n\u0103" + }, + "ru": { + "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" + }, + "sk": { + "name": "Sloven\u010dina" + }, + "sl": { + "name": "Sloven\u0161\u010dina" + }, + "sr": { + "name": "\u0421\u0440\u043f\u0441\u043a\u0438" + }, + "sv": { + "name": "Svenska" + }, + "sw": { + "name": "Kiswahili" + }, + "th": { + "name": "\u0e44\u0e17\u0e22" + }, + "tl": { + "name": "Filipino" + }, + "tr": { + "name": "T\u00fcrk\u00e7e" + }, + "uk": { + "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" + }, + "vi": { + "name": "Ti\u1ebfng Vi\u1ec7t" + }, + "zh-CN": { + "name": "\u4e2d\u6587 (\u7b80\u4f53)" + }, + "zh-TW": { + "name": "\u4e2d\u6587 (\u7e41\u9ad4)" + } + }, + "qwant": [ + "bg-BG", + "br-FR", + "ca-AD", + "ca-ES", + "ca-FR", + "co-FR", + "cs-CZ", + "cy-GB", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-GB", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-US", + "es-AD", + "es-AR", + "es-CL", + "es-ES", + "es-MX", + "et-EE", + "eu-ES", + "eu-FR", + "fi-FI", + "fr-AD", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "gd-GB", + "he-IL", + "hu-HU", + "it-CH", + "it-IT", + "ja-JP", + "ko-KR", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-AD", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sv-SE", + "th-TH", + "tr-TR" + ], + "qwant images": [ + "bg-BG", + "br-FR", + "ca-AD", + "ca-ES", + "ca-FR", + "co-FR", + "cs-CZ", + "cy-GB", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-GB", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-US", + "es-AD", + "es-AR", + "es-CL", + "es-ES", + "es-MX", + "et-EE", + "eu-ES", + "eu-FR", + "fi-FI", + "fr-AD", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "gd-GB", + "he-IL", + "hu-HU", + "it-CH", + "it-IT", + "ja-JP", + "ko-KR", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-AD", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sv-SE", + "th-TH", + "tr-TR" + ], + "qwant news": [ + "bg-BG", + "br-FR", + "ca-AD", + "ca-ES", + "ca-FR", + "co-FR", + "cs-CZ", + "cy-GB", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-GB", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-US", + "es-AD", + "es-AR", + "es-CL", + "es-ES", + "es-MX", + "et-EE", + "eu-ES", + "eu-FR", + "fi-FI", + "fr-AD", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "gd-GB", + "he-IL", + "hu-HU", + "it-CH", + "it-IT", + "ja-JP", + "ko-KR", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-AD", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sv-SE", + "th-TH", + "tr-TR" + ], + "qwant social": [ + "bg-BG", + "br-FR", + "ca-AD", + "ca-ES", + "ca-FR", + "co-FR", + "cs-CZ", + "cy-GB", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "el-GR", + "en-AU", + "en-CA", + "en-GB", + "en-IE", + "en-IN", + "en-MY", + "en-NZ", + "en-PH", + "en-SG", + "en-US", + "es-AD", + "es-AR", + "es-CL", + "es-ES", + "es-MX", + "et-EE", + "eu-ES", + "eu-FR", + "fi-FI", + "fr-AD", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-FR", + "gd-GB", + "he-IL", + "hu-HU", + "it-CH", + "it-IT", + "ja-JP", + "ko-KR", + "ms-MY", + "nl-BE", + "nl-NL", + "no-NO", + "pl-PL", + "pt-AD", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-RU", + "sv-SE", + "th-TH", + "tr-TR" + ], + "swisscows": [], + "wikidata": { + "ab": { + "articles": 3452, + "english_name": "Abkhazian", + "name": "\u0410\u04a7\u0441\u0443\u0430" + }, + "ace": { + "articles": 7602, + "english_name": "Acehnese", + "name": "Bahsa Ac\u00e8h" + }, + "ady": { + "articles": 411, + "english_name": "Adyghe", + "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d" + }, + "af": { + "articles": 68807, + "english_name": "Afrikaans", + "name": "Afrikaans" + }, + "ak": { + "articles": 567, + "english_name": "Akan", + "name": "Akana" + }, + "als": { + "articles": 25337, + "english_name": "Alemannic", + "name": "Alemannisch" + }, + "am": { + "articles": 14482, + "english_name": "Amharic", + "name": "\u12a0\u121b\u122d\u129b" + }, + "an": { + "articles": 34148, + "english_name": "Aragonese", + "name": "Aragon\u00e9s" + }, + "ang": { + "articles": 3077, + "english_name": "Anglo-Saxon", + "name": "Englisc" + }, + "ar": { + "articles": 656175, + "english_name": "Arabic", + "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" + }, + "arc": { + "articles": 1628, + "english_name": "Aramaic", + "name": "\u0710\u072a\u0721\u071d\u0710" + }, + "arz": { + "articles": 20166, + "english_name": "Egyptian Arabic", + "name": "\u0645\u0635\u0631\u0649 (Ma\u1e63ri)" + }, + "as": { + "articles": 5141, + "english_name": "Assamese", + "name": "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be" + }, + "ast": { + "articles": 99530, + "english_name": "Asturian", + "name": "Asturianu" + }, + "atj": { + "articles": 626, + "english_name": "Atikamekw", + "name": "Atikamekw" + }, + "av": { + "articles": 2309, + "english_name": "Avar", + "name": "\u0410\u0432\u0430\u0440" + }, + "ay": { + "articles": 4402, + "english_name": "Aymara", + "name": "Aymar" + }, + "az": { + "articles": 141672, + "english_name": "Azerbaijani", + "name": "Az\u0259rbaycanca" + }, + "azb": { + "articles": 118928, + "english_name": "South Azerbaijani", + "name": "\u062a\u06c6\u0631\u06a9\u062c\u0647" + }, + "ba": { + "articles": 46046, + "english_name": "Bashkir", + "name": "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442" + }, + "bar": { + "articles": 27285, + "english_name": "Bavarian", + "name": "Boarisch" + }, + "bat-smg": { + "articles": 16427, + "english_name": "Samogitian", + "name": "\u017demait\u0117\u0161ka" + }, + "bcl": { + "articles": 8664, + "english_name": "Central Bicolano", + "name": "Bikol" + }, + "be": { + "articles": 160751, + "english_name": "Belarusian", + "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" + }, + "be-tarask": { + "articles": 65655, + "english_name": "Belarusian (Tara\u0161kievica)", + "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)" + }, + "bg": { + "articles": 248452, + "english_name": "Bulgarian", + "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" + }, + "bh": { + "articles": 6686, + "english_name": "Bihari", + "name": "\u092d\u094b\u091c\u092a\u0941\u0930\u0940" + }, + "bi": { + "articles": 1179, + "english_name": "Bislama", + "name": "Bislama" + }, + "bjn": { + "articles": 1918, + "english_name": "Banjar", + "name": "Bahasa Banjar" + }, + "bm": { + "articles": 651, + "english_name": "Bambara", + "name": "Bamanankan" + }, + "bn": { + "articles": 63523, + "english_name": "Bengali", + "name": "\u09ac\u09be\u0982\u09b2\u09be" + }, + "bo": { + "articles": 5827, + "english_name": "Tibetan", + "name": "\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51" + }, + "bpy": { + "articles": 25081, + "english_name": "Bishnupriya Manipuri", + "name": "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0" + }, + "br": { + "articles": 66053, + "english_name": "Breton", + "name": "Brezhoneg" + }, + "bs": { + "articles": 79235, + "english_name": "Bosnian", + "name": "Bosanski" + }, + "bug": { + "articles": 14121, + "english_name": "Buginese", + "name": "Basa Ugi" + }, + "bxr": { + "articles": 2124, + "english_name": "Buryat", + "name": "\u0411\u0443\u0440\u044f\u0430\u0434" + }, + "ca": { + "articles": 599790, + "english_name": "Catalan", + "name": "Catal\u00e0" + }, + "cbk-zam": { + "articles": 3000, + "english_name": "Zamboanga Chavacano", + "name": "Chavacano de Zamboanga" + }, + "cdo": { + "articles": 14111, + "english_name": "Min Dong", + "name": "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304" + }, + "ce": { + "articles": 208906, + "english_name": "Chechen", + "name": "\u041d\u043e\u0445\u0447\u0438\u0439\u043d" + }, + "ceb": { + "articles": 5376890, + "english_name": "Cebuano", + "name": "Sinugboanong Binisaya" + }, + "ch": { + "articles": 472, + "english_name": "Chamorro", + "name": "Chamoru" + }, + "chr": { + "articles": 855, + "english_name": "Cherokee", + "name": "\u13e3\u13b3\u13a9" + }, + "chy": { + "articles": 611, + "english_name": "Cheyenne", + "name": "Tsets\u00eahest\u00e2hese" + }, + "ckb": { + "articles": 22870, + "english_name": "Sorani", + "name": "Soran\u00ee / \u06a9\u0648\u0631\u062f\u06cc" + }, + "co": { + "articles": 5643, + "english_name": "Corsican", + "name": "Corsu" + }, + "cr": { + "articles": 103, + "english_name": "Cree", + "name": "Nehiyaw" + }, + "crh": { + "articles": 6172, + "english_name": "Crimean Tatar", + "name": "Q\u0131r\u0131mtatarca" + }, + "cs": { + "articles": 419392, + "english_name": "Czech", + "name": "\u010ce\u0161tina" + }, + "csb": { + "articles": 5258, + "english_name": "Kashubian", + "name": "Kasz\u00ebbsczi" + }, + "cu": { + "articles": 669, + "english_name": "Old Church Slavonic", + "name": "\u0421\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a" + }, + "cv": { + "articles": 41622, + "english_name": "Chuvash", + "name": "\u0427\u0103\u0432\u0430\u0448" + }, + "cy": { + "articles": 102137, + "english_name": "Welsh", + "name": "Cymraeg" + }, + "da": { + "articles": 242006, + "english_name": "Danish", + "name": "Dansk" + }, + "de": { + "articles": 2256718, + "english_name": "German", + "name": "Deutsch" + }, + "diq": { + "articles": 9107, + "english_name": "Zazaki", + "name": "Zazaki" + }, + "dsb": { + "articles": 3210, + "english_name": "Lower Sorbian", + "name": "Dolnoserbski" + }, + "dty": { + "articles": 2967, + "english_name": "Doteli", + "name": "\u0921\u094b\u091f\u0947\u0932\u0940" + }, + "dv": { + "articles": 3024, + "english_name": "Divehi", + "name": "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0" + }, + "dz": { + "articles": 218, + "english_name": "Dzongkha", + "name": "\u0f47\u0f7c\u0f44\u0f0b\u0f41" + }, + "ee": { + "articles": 350, + "english_name": "Ewe", + "name": "E\u028begbe" + }, + "el": { + "articles": 157114, + "english_name": "Greek", + "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" + }, + "eml": { + "articles": 11866, + "english_name": "Emilian-Romagnol", + "name": "Emili\u00e0n e rumagn\u00f2l" + }, + "en": { + "articles": 5781855, + "english_name": "English", + "name": "English" + }, + "eo": { + "articles": 253490, + "english_name": "Esperanto", + "name": "Esperanto" + }, + "es": { + "articles": 1497393, + "english_name": "Spanish", + "name": "Espa\u00f1ol" + }, + "et": { + "articles": 185271, + "english_name": "Estonian", + "name": "Eesti" + }, + "eu": { + "articles": 309974, + "english_name": "Basque", + "name": "Euskara" + }, + "ext": { + "articles": 3020, + "english_name": "Extremaduran", + "name": "Estreme\u00f1u" + }, + "fa": { + "articles": 655431, + "english_name": "Persian", + "name": "\u0641\u0627\u0631\u0633\u06cc" + }, + "ff": { + "articles": 228, + "english_name": "Fula", + "name": "Fulfulde" + }, + "fi": { + "articles": 449407, + "english_name": "Finnish", + "name": "Suomi" + }, + "fiu-vro": { + "articles": 5463, + "english_name": "V\u00f5ro", + "name": "V\u00f5ro" + }, + "fj": { + "articles": 425, + "english_name": "Fijian", + "name": "Na Vosa Vakaviti" + }, + "fo": { + "articles": 12891, + "english_name": "Faroese", + "name": "F\u00f8royskt" + }, + "fr": { + "articles": 2070378, + "english_name": "French", + "name": "Fran\u00e7ais" + }, + "frp": { + "articles": 3254, + "english_name": "Franco-Proven\u00e7al", + "name": "Arpitan" + }, + "frr": { + "articles": 8460, + "english_name": "North Frisian", + "name": "Nordfriisk" + }, + "fur": { + "articles": 3289, + "english_name": "Friulian", + "name": "Furlan" + }, + "fy": { + "articles": 41308, + "english_name": "West Frisian", + "name": "Frysk" + }, + "ga": { + "articles": 49639, + "english_name": "Irish", + "name": "Gaeilge" + }, + "gag": { + "articles": 2763, + "english_name": "Gagauz", + "name": "Gagauz" + }, + "gan": { + "articles": 6411, + "english_name": "Gan", + "name": "\u8d1b\u8a9e" + }, + "gd": { + "articles": 14774, + "english_name": "Scottish Gaelic", + "name": "G\u00e0idhlig" + }, + "gl": { + "articles": 153607, + "english_name": "Galician", + "name": "Galego" + }, + "glk": { + "articles": 5666, + "english_name": "Gilaki", + "name": "\u06af\u06cc\u0644\u06a9\u06cc" + }, + "gn": { + "articles": 3637, + "english_name": "Guarani", + "name": "Ava\u00f1e'\u1ebd" + }, + "gom": { + "articles": 3598, + "english_name": "Goan Konkani", + "name": "\u0917\u094b\u0902\u092f\u091a\u0940 \u0915\u094b\u0902\u0915\u0923\u0940 / G\u00f5ychi Konknni" + }, + "gor": { + "articles": 1926, + "english_name": "Gorontalo", + "name": "Hulontalo" + }, + "got": { + "articles": 588, + "english_name": "Gothic", + "name": "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a" + }, + "gu": { + "articles": 28289, + "english_name": "Gujarati", + "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0" + }, + "gv": { + "articles": 4968, + "english_name": "Manx", + "name": "Gaelg" + }, + "ha": { + "articles": 2740, + "english_name": "Hausa", + "name": "Hausa / \u0647\u064e\u0648\u064f\u0633\u064e" + }, + "hak": { + "articles": 8894, + "english_name": "Hakka", + "name": "Hak-k\u00e2-fa / \u5ba2\u5bb6\u8a71" + }, + "haw": { + "articles": 3234, + "english_name": "Hawaiian", + "name": "Hawai`i" + }, + "he": { + "articles": 236237, + "english_name": "Hebrew", + "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" + }, + "hi": { + "articles": 128996, + "english_name": "Hindi", + "name": "\u0939\u093f\u0928\u094d\u0926\u0940" + }, + "hif": { + "articles": 9756, + "english_name": "Fiji Hindi", + "name": "Fiji Hindi" + }, + "hr": { + "articles": 201383, + "english_name": "Croatian", + "name": "Hrvatski" + }, + "hsb": { + "articles": 13357, + "english_name": "Upper Sorbian", + "name": "Hornjoserbsce" + }, + "ht": { + "articles": 54219, + "english_name": "Haitian", + "name": "Kr\u00e8yol ayisyen" + }, + "hu": { + "articles": 442291, + "english_name": "Hungarian", + "name": "Magyar" + }, + "hy": { + "articles": 250045, + "english_name": "Armenian", + "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576" + }, + "ia": { + "articles": 21225, + "english_name": "Interlingua", + "name": "Interlingua" + }, + "id": { + "articles": 449446, + "english_name": "Indonesian", + "name": "Bahasa Indonesia" + }, + "ie": { + "articles": 4303, + "english_name": "Interlingue", + "name": "Interlingue" + }, + "ig": { + "articles": 1376, + "english_name": "Igbo", + "name": "Igbo" + }, + "ik": { + "articles": 262, + "english_name": "Inupiak", + "name": "I\u00f1upiak" + }, + "ilo": { + "articles": 11592, + "english_name": "Ilokano", + "name": "Ilokano" + }, + "inh": { + "articles": 791, + "english_name": "Ingush", + "name": "\u0413\u04cf\u0430\u043b\u0433\u04cf\u0430\u0439" + }, + "io": { + "articles": 28134, + "english_name": "Ido", + "name": "Ido" + }, + "is": { + "articles": 46096, + "english_name": "Icelandic", + "name": "\u00cdslenska" + }, + "it": { + "articles": 1491690, + "english_name": "Italian", + "name": "Italiano" + }, + "iu": { + "articles": 401, + "english_name": "Inuktitut", + "name": "\u1403\u14c4\u1483\u144e\u1450\u1466" + }, + "ja": { + "articles": 1134685, + "english_name": "Japanese", + "name": "\u65e5\u672c\u8a9e" + }, + "jam": { + "articles": 1632, + "english_name": "Jamaican Patois", + "name": "Jumiekan Kryuol" + }, + "jbo": { + "articles": 1233, + "english_name": "Lojban", + "name": "Lojban" + }, + "jv": { + "articles": 55104, + "english_name": "Javanese", + "name": "Basa Jawa" + }, + "ka": { + "articles": 126147, + "english_name": "Georgian", + "name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8" + }, + "kaa": { + "articles": 1910, + "english_name": "Karakalpak", + "name": "Qaraqalpaqsha" + }, + "kab": { + "articles": 2860, + "english_name": "Kabyle", + "name": "Taqbaylit" + }, + "kbd": { + "articles": 1578, + "english_name": "Kabardian Circassian", + "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d (Adighabze)" + }, + "kbp": { + "articles": 1479, + "english_name": "Kabiye", + "name": "Kab\u0269y\u025b" + }, + "kg": { + "articles": 1184, + "english_name": "Kongo", + "name": "KiKongo" + }, + "ki": { + "articles": 1358, + "english_name": "Kikuyu", + "name": "G\u0129k\u0169y\u0169" + }, + "kk": { + "articles": 223486, + "english_name": "Kazakh", + "name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430" + }, + "kl": { + "articles": 1663, + "english_name": "Greenlandic", + "name": "Kalaallisut" + }, + "km": { + "articles": 7105, + "english_name": "Khmer", + "name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a" + }, + "kn": { + "articles": 24065, + "english_name": "Kannada", + "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1" + }, + "ko": { + "articles": 438644, + "english_name": "Korean", + "name": "\ud55c\uad6d\uc5b4" + }, + "koi": { + "articles": 3451, + "english_name": "Komi-Permyak", + "name": "\u041f\u0435\u0440\u0435\u043c \u041a\u043e\u043c\u0438 (Perem Komi)" + }, + "krc": { + "articles": 2028, + "english_name": "Karachay-Balkar", + "name": "\u041a\u044a\u0430\u0440\u0430\u0447\u0430\u0439-\u041c\u0430\u043b\u043a\u044a\u0430\u0440 (Qarachay-Malqar)" + }, + "ks": { + "articles": 324, + "english_name": "Kashmiri", + "name": "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 / \u0643\u0634\u0645\u064a\u0631\u064a" + }, + "ksh": { + "articles": 2842, + "english_name": "Ripuarian", + "name": "Ripoarisch" + }, + "ku": { + "articles": 24022, + "english_name": "Kurdish", + "name": "Kurd\u00ee / \u0643\u0648\u0631\u062f\u06cc" + }, + "kv": { + "articles": 5308, + "english_name": "Komi", + "name": "\u041a\u043e\u043c\u0438" + }, + "kw": { + "articles": 3839, + "english_name": "Cornish", + "name": "Kernewek/Karnuack" + }, + "ky": { + "articles": 79376, + "english_name": "Kirghiz", + "name": "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430" + }, + "la": { + "articles": 129779, + "english_name": "Latin", + "name": "Latina" + }, + "lad": { + "articles": 3828, + "english_name": "Ladino", + "name": "Dzhudezmo" + }, + "lb": { + "articles": 55377, + "english_name": "Luxembourgish", + "name": "L\u00ebtzebuergesch" + }, + "lbe": { + "articles": 1216, + "english_name": "Lak", + "name": "\u041b\u0430\u043a\u043a\u0443" + }, + "lez": { + "articles": 3963, + "english_name": "Lezgian", + "name": "\u041b\u0435\u0437\u0433\u0438 \u0447\u0406\u0430\u043b (Lezgi \u010d\u2019al)" + }, + "lfn": { + "articles": 3083, + "english_name": "Lingua Franca Nova", + "name": "Lingua franca nova" + }, + "lg": { + "articles": 1155, + "english_name": "Luganda", + "name": "Luganda" + }, + "li": { + "articles": 12316, + "english_name": "Limburgish", + "name": "Limburgs" + }, + "lij": { + "articles": 3456, + "english_name": "Ligurian", + "name": "L\u00edguru" + }, + "lmo": { + "articles": 38071, + "english_name": "Lombard", + "name": "Lumbaart" + }, + "ln": { + "articles": 3049, + "english_name": "Lingala", + "name": "Lingala" + }, + "lo": { + "articles": 3101, + "english_name": "Lao", + "name": "\u0ea5\u0eb2\u0ea7" + }, + "lrc": { + "articles": 5357, + "english_name": "Northern Luri", + "name": "\u0644\u06ca\u0631\u06cc \u0634\u0648\u0645\u0627\u0644\u06cc" + }, + "lt": { + "articles": 193352, + "english_name": "Lithuanian", + "name": "Lietuvi\u0173" + }, + "ltg": { + "articles": 815, + "english_name": "Latgalian", + "name": "Latga\u013cu" + }, + "lv": { + "articles": 90266, + "english_name": "Latvian", + "name": "Latvie\u0161u" + }, + "mai": { + "articles": 13164, + "english_name": "Maithili", + "name": "\u092e\u0948\u0925\u093f\u0932\u0940" + }, + "map-bms": { + "articles": 13336, + "english_name": "Banyumasan", + "name": "Basa Banyumasan" + }, + "mdf": { + "articles": 1188, + "english_name": "Moksha", + "name": "\u041c\u043e\u043a\u0448\u0435\u043d\u044c (Mokshanj K\u00e4lj)" + }, + "mg": { + "articles": 90635, + "english_name": "Malagasy", + "name": "Malagasy" + }, + "mhr": { + "articles": 10046, + "english_name": "Meadow Mari", + "name": "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439 (Olyk Marij)" + }, + "mi": { + "articles": 7145, + "english_name": "Maori", + "name": "M\u0101ori" + }, + "min": { + "articles": 222492, + "english_name": "Minangkabau", + "name": "Minangkabau" + }, + "mk": { + "articles": 98050, + "english_name": "Macedonian", + "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438" + }, + "ml": { + "articles": 61227, + "english_name": "Malayalam", + "name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02" + }, + "mn": { + "articles": 18356, + "english_name": "Mongolian", + "name": "\u041c\u043e\u043d\u0433\u043e\u043b" + }, + "mr": { + "articles": 52667, + "english_name": "Marathi", + "name": "\u092e\u0930\u093e\u0920\u0940" + }, + "mrj": { + "articles": 10269, + "english_name": "Hill Mari", + "name": "\u041a\u044b\u0440\u044b\u043a \u041c\u0430\u0440\u044b (Kyryk Mary)" + }, + "ms": { + "articles": 323274, + "english_name": "Malay", + "name": "Bahasa Melayu" + }, + "mt": { + "articles": 3336, + "english_name": "Maltese", + "name": "Malti" + }, + "mwl": { + "articles": 3674, + "english_name": "Mirandese", + "name": "Mirand\u00e9s" + }, + "my": { + "articles": 42128, + "english_name": "Burmese", + "name": "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c" + }, + "myv": { + "articles": 5415, + "english_name": "Erzya", + "name": "\u042d\u0440\u0437\u044f\u043d\u044c (Erzjanj Kelj)" + }, + "mzn": { + "articles": 12786, + "english_name": "Mazandarani", + "name": "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a" + }, + "na": { + "articles": 1305, + "english_name": "Nauruan", + "name": "dorerin Naoero" + }, + "nah": { + "articles": 6925, + "english_name": "Nahuatl", + "name": "N\u0101huatl" + }, + "nap": { + "articles": 14576, + "english_name": "Neapolitan", + "name": "Nnapulitano" + }, + "nds": { + "articles": 41178, + "english_name": "Low Saxon", + "name": "Plattd\u00fc\u00fctsch" + }, + "nds-nl": { + "articles": 6812, + "english_name": "Dutch Low Saxon", + "name": "Nedersaksisch" + }, + "ne": { + "articles": 31633, + "english_name": "Nepali", + "name": "\u0928\u0947\u092a\u093e\u0932\u0940" + }, + "new": { + "articles": 72212, + "english_name": "Newar", + "name": "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e" + }, + "nl": { + "articles": 1954031, + "english_name": "Dutch", + "name": "Nederlands" + }, + "nn": { + "articles": 141839, + "english_name": "Norwegian (Nynorsk)", + "name": "Nynorsk" + }, + "no": { + "articles": 500849, + "english_name": "Norwegian (Bokm\u00e5l)", + "name": "Norsk (Bokm\u00e5l)" + }, + "nov": { + "articles": 1661, + "english_name": "Novial", + "name": "Novial" + }, + "nrm": { + "articles": 4029, + "english_name": "Norman", + "name": "Nouormand/Normaund" + }, + "nso": { + "articles": 8094, + "english_name": "Northern Sotho", + "name": "Sepedi" + }, + "nv": { + "articles": 6991, + "english_name": "Navajo", + "name": "Din\u00e9 bizaad" + }, + "ny": { + "articles": 487, + "english_name": "Chichewa", + "name": "Chichewa" + }, + "oc": { + "articles": 85227, + "english_name": "Occitan", + "name": "Occitan" + }, + "olo": { + "articles": 2812, + "english_name": "Livvi-Karelian", + "name": "Karjalan" + }, + "om": { + "articles": 775, + "english_name": "Oromo", + "name": "Oromoo" + }, + "or": { + "articles": 14550, + "english_name": "Oriya", + "name": "\u0b13\u0b21\u0b3c\u0b3f\u0b06" + }, + "os": { + "articles": 11225, + "english_name": "Ossetian", + "name": "\u0418\u0440\u043e\u043d\u0430\u0443" + }, + "pa": { + "articles": 30886, + "english_name": "Punjabi", + "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40" + }, + "pag": { + "articles": 2521, + "english_name": "Pangasinan", + "name": "Pangasinan" + }, + "pam": { + "articles": 8825, + "english_name": "Kapampangan", + "name": "Kapampangan" + }, + "pap": { + "articles": 1953, + "english_name": "Papiamentu", + "name": "Papiamentu" + }, + "pcd": { + "articles": 4258, + "english_name": "Picard", + "name": "Picard" + }, + "pdc": { + "articles": 1858, + "english_name": "Pennsylvania German", + "name": "Deitsch" + }, + "pfl": { + "articles": 2502, + "english_name": "Palatinate German", + "name": "P\u00e4lzisch" + }, + "pi": { + "articles": 2535, + "english_name": "Pali", + "name": "\u092a\u093e\u0934\u093f" + }, + "pih": { + "articles": 681, + "english_name": "Norfolk", + "name": "Norfuk" + }, + "pl": { + "articles": 1314525, + "english_name": "Polish", + "name": "Polski" + }, + "pms": { + "articles": 64391, + "english_name": "Piedmontese", + "name": "Piemont\u00e8is" + }, + "pnb": { + "articles": 47107, + "english_name": "Western Punjabi", + "name": "\u0634\u0627\u06c1 \u0645\u06a9\u06be\u06cc \u067e\u0646\u062c\u0627\u0628\u06cc (Sh\u0101hmukh\u012b Pa\u00f1j\u0101b\u012b)" + }, + "pnt": { + "articles": 462, + "english_name": "Pontic", + "name": "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac" + }, + "ps": { + "articles": 9702, + "english_name": "Pashto", + "name": "\u067e\u069a\u062a\u0648" + }, + "pt": { + "articles": 1014081, + "english_name": "Portuguese", + "name": "Portugu\u00eas" + }, + "qu": { + "articles": 20900, + "english_name": "Quechua", + "name": "Runa Simi" + }, + "rm": { + "articles": 3564, + "english_name": "Romansh", + "name": "Rumantsch" + }, + "rmy": { + "articles": 660, + "english_name": "Romani", + "name": "romani - \u0930\u094b\u092e\u093e\u0928\u0940" + }, + "rn": { + "articles": 609, + "english_name": "Kirundi", + "name": "Kirundi" + }, + "ro": { + "articles": 390804, + "english_name": "Romanian", + "name": "Rom\u00e2n\u0103" + }, + "roa-rup": { + "articles": 1216, + "english_name": "Aromanian", + "name": "Arm\u00e3neashce" + }, + "roa-tara": { + "articles": 9243, + "english_name": "Tarantino", + "name": "Tarand\u00edne" + }, + "ru": { + "articles": 1519724, + "english_name": "Russian", + "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" + }, + "rue": { + "articles": 6891, + "english_name": "Rusyn", + "name": "\u0420\u0443\u0441\u0438\u043d\u044c\u0441\u043a\u044b\u0439" + }, + "rw": { + "articles": 1822, + "english_name": "Kinyarwanda", + "name": "Ikinyarwanda" + }, + "sa": { + "articles": 11357, + "english_name": "Sanskrit", + "name": "\u0938\u0902\u0938\u094d\u0915\u0943\u0924\u092e\u094d" + }, + "sah": { + "articles": 11943, + "english_name": "Sakha", + "name": "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430 (Saxa Tyla)" + }, + "sat": { + "articles": 532, + "english_name": "Santali", + "name": "\u1c65\u1c5f\u1c71\u1c5b\u1c5f\u1c72\u1c64" + }, + "sc": { + "articles": 5907, + "english_name": "Sardinian", + "name": "Sardu" + }, + "scn": { + "articles": 26060, + "english_name": "Sicilian", + "name": "Sicilianu" + }, + "sco": { + "articles": 53388, + "english_name": "Scots", + "name": "Scots" + }, + "sd": { + "articles": 11114, + "english_name": "Sindhi", + "name": "\u0633\u0646\u068c\u064a\u060c \u0633\u0646\u062f\u06be\u06cc \u060c \u0938\u093f\u0928\u094d\u0927" + }, + "se": { + "articles": 7464, + "english_name": "Northern Sami", + "name": "S\u00e1megiella" + }, + "sg": { + "articles": 258, + "english_name": "Sango", + "name": "S\u00e4ng\u00f6" + }, + "sh": { + "articles": 447497, + "english_name": "Serbo-Croatian", + "name": "Srpskohrvatski / \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438" + }, + "shn": { + "articles": 3239, + "english_name": "\u107d\u1083\u1087\u101e\u1083\u1087\u1010\u1086\u1038 ", + "name": "Shan" + }, + "si": { + "articles": 14918, + "english_name": "Sinhalese", + "name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd" + }, + "simple": { + "articles": 141947, + "english_name": "Simple English", + "name": "Simple English" + }, + "sk": { + "articles": 228015, + "english_name": "Slovak", + "name": "Sloven\u010dina" + }, + "sl": { + "articles": 163198, + "english_name": "Slovenian", + "name": "Sloven\u0161\u010dina" + }, + "sm": { + "articles": 801, + "english_name": "Samoan", + "name": "Gagana Samoa" + }, + "sn": { + "articles": 4227, + "english_name": "Shona", + "name": "chiShona" + }, + "so": { + "articles": 5530, + "english_name": "Somali", + "name": "Soomaali" + }, + "sq": { + "articles": 75615, + "english_name": "Albanian", + "name": "Shqip" + }, + "sr": { + "articles": 614180, + "english_name": "Serbian", + "name": "\u0421\u0440\u043f\u0441\u043a\u0438 / Srpski" + }, + "srn": { + "articles": 1061, + "english_name": "Sranan", + "name": "Sranantongo" + }, + "ss": { + "articles": 450, + "english_name": "Swati", + "name": "SiSwati" + }, + "st": { + "articles": 544, + "english_name": "Sesotho", + "name": "Sesotho" + }, + "stq": { + "articles": 3998, + "english_name": "Saterland Frisian", + "name": "Seeltersk" + }, + "su": { + "articles": 39840, + "english_name": "Sundanese", + "name": "Basa Sunda" + }, + "sv": { + "articles": 3760984, + "english_name": "Swedish", + "name": "Svenska" + }, + "sw": { + "articles": 47744, + "english_name": "Swahili", + "name": "Kiswahili" + }, + "szl": { + "articles": 7812, + "english_name": "Silesian", + "name": "\u015al\u016fnski" + }, + "ta": { + "articles": 119140, + "english_name": "Tamil", + "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" + }, + "tcy": { + "articles": 994, + "english_name": "Tulu", + "name": "\u0ca4\u0cc1\u0cb3\u0cc1" + }, + "te": { + "articles": 69978, + "english_name": "Telugu", + "name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41" + }, + "tet": { + "articles": 1440, + "english_name": "Tetum", + "name": "Tetun" + }, + "tg": { + "articles": 96078, + "english_name": "Tajik", + "name": "\u0422\u043e\u04b7\u0438\u043a\u04e3" + }, + "th": { + "articles": 128977, + "english_name": "Thai", + "name": "\u0e44\u0e17\u0e22" + }, + "ti": { + "articles": 168, + "english_name": "Tigrinya", + "name": "\u1275\u130d\u122d\u129b" + }, + "tk": { + "articles": 5514, + "english_name": "Turkmen", + "name": "T\u00fcrkmen" + }, + "tl": { + "articles": 77677, + "english_name": "Tagalog", + "name": "Tagalog" + }, + "tn": { + "articles": 640, + "english_name": "Tswana", + "name": "Setswana" + }, + "to": { + "articles": 1693, + "english_name": "Tongan", + "name": "faka Tonga" + }, + "tpi": { + "articles": 1486, + "english_name": "Tok Pisin", + "name": "Tok Pisin" + }, + "tr": { + "articles": 321169, + "english_name": "Turkish", + "name": "T\u00fcrk\u00e7e" + }, + "ts": { + "articles": 583, + "english_name": "Tsonga", + "name": "Xitsonga" + }, + "tt": { + "articles": 82594, + "english_name": "Tatar", + "name": "Tatar\u00e7a / \u0422\u0430\u0442\u0430\u0440\u0447\u0430" + }, + "tum": { + "articles": 572, + "english_name": "Tumbuka", + "name": "chiTumbuka" + }, + "tw": { + "articles": 657, + "english_name": "Twi", + "name": "Twi" + }, + "ty": { + "articles": 1199, + "english_name": "Tahitian", + "name": "Reo M\u0101`ohi" + }, + "tyv": { + "articles": 1738, + "english_name": "Tuvan", + "name": "\u0422\u044b\u0432\u0430" + }, + "udm": { + "articles": 4565, + "english_name": "Udmurt", + "name": "\u0423\u0434\u043c\u0443\u0440\u0442 \u043a\u044b\u043b" + }, + "ug": { + "articles": 4104, + "english_name": "Uyghur", + "name": "\u0626\u06c7\u064a\u063a\u06c7\u0631 \u062a\u0649\u0644\u0649" + }, + "uk": { + "articles": 878251, + "english_name": "Ukrainian", + "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" + }, + "ur": { + "articles": 142712, + "english_name": "Urdu", + "name": "\u0627\u0631\u062f\u0648" + }, + "uz": { + "articles": 130227, + "english_name": "Uzbek", + "name": "O\u2018zbek" + }, + "ve": { + "articles": 265, + "english_name": "Venda", + "name": "Tshivenda" + }, + "vec": { + "articles": 11266, + "english_name": "Venetian", + "name": "V\u00e8neto" + }, + "vep": { + "articles": 5880, + "english_name": "Vepsian", + "name": "Veps\u00e4n" + }, + "vi": { + "articles": 1198961, + "english_name": "Vietnamese", + "name": "Ti\u1ebfng Vi\u1ec7t" + }, + "vls": { + "articles": 6703, + "english_name": "West Flemish", + "name": "West-Vlams" + }, + "vo": { + "articles": 122174, + "english_name": "Volap\u00fck", + "name": "Volap\u00fck" + }, + "wa": { + "articles": 14790, + "english_name": "Walloon", + "name": "Walon" + }, + "war": { + "articles": 1263483, + "english_name": "Waray-Waray", + "name": "Winaray" + }, + "wo": { + "articles": 1177, + "english_name": "Wolof", + "name": "Wolof" + }, + "wuu": { + "articles": 16289, + "english_name": "Wu", + "name": "\u5434\u8bed" + }, + "xal": { + "articles": 2075, + "english_name": "Kalmyk", + "name": "\u0425\u0430\u043b\u044c\u043c\u0433" + }, + "xh": { + "articles": 751, + "english_name": "Xhosa", + "name": "isiXhosa" + }, + "xmf": { + "articles": 12678, + "english_name": "Mingrelian", + "name": "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8 (Margaluri)" + }, + "yi": { + "articles": 14571, + "english_name": "Yiddish", + "name": "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9" + }, + "yo": { + "articles": 31774, + "english_name": "Yoruba", + "name": "Yor\u00f9b\u00e1" + }, + "za": { + "articles": 1867, + "english_name": "Zhuang", + "name": "Cuengh" + }, + "zea": { + "articles": 4580, + "english_name": "Zeelandic", + "name": "Ze\u00eauws" + }, + "zh": { + "articles": 1038913, + "english_name": "Chinese", + "name": "\u4e2d\u6587" + }, + "zh-classical": { + "articles": 8663, + "english_name": "Classical Chinese", + "name": "\u53e4\u6587 / \u6587\u8a00\u6587" + }, + "zh-min-nan": { + "articles": 227702, + "english_name": "Min Nan", + "name": "B\u00e2n-l\u00e2m-g\u00fa" + }, + "zh-yue": { + "articles": 70490, + "english_name": "Cantonese", + "name": "\u7cb5\u8a9e" + }, + "zu": { + "articles": 1050, + "english_name": "Zulu", + "name": "isiZulu" + } + }, + "wikipedia": { + "ab": { + "articles": 3452, + "english_name": "Abkhazian", + "name": "\u0410\u04a7\u0441\u0443\u0430" + }, + "ace": { + "articles": 7602, + "english_name": "Acehnese", + "name": "Bahsa Ac\u00e8h" + }, + "ady": { + "articles": 411, + "english_name": "Adyghe", + "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d" + }, + "af": { + "articles": 68807, + "english_name": "Afrikaans", + "name": "Afrikaans" + }, + "ak": { + "articles": 567, + "english_name": "Akan", + "name": "Akana" + }, + "als": { + "articles": 25337, + "english_name": "Alemannic", + "name": "Alemannisch" + }, + "am": { + "articles": 14482, + "english_name": "Amharic", + "name": "\u12a0\u121b\u122d\u129b" + }, + "an": { + "articles": 34148, + "english_name": "Aragonese", + "name": "Aragon\u00e9s" + }, + "ang": { + "articles": 3077, + "english_name": "Anglo-Saxon", + "name": "Englisc" + }, + "ar": { + "articles": 656175, + "english_name": "Arabic", + "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" + }, + "arc": { + "articles": 1628, + "english_name": "Aramaic", + "name": "\u0710\u072a\u0721\u071d\u0710" + }, + "arz": { + "articles": 20166, + "english_name": "Egyptian Arabic", + "name": "\u0645\u0635\u0631\u0649 (Ma\u1e63ri)" + }, + "as": { + "articles": 5141, + "english_name": "Assamese", + "name": "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be" + }, + "ast": { + "articles": 99530, + "english_name": "Asturian", + "name": "Asturianu" + }, + "atj": { + "articles": 626, + "english_name": "Atikamekw", + "name": "Atikamekw" + }, + "av": { + "articles": 2309, + "english_name": "Avar", + "name": "\u0410\u0432\u0430\u0440" + }, + "ay": { + "articles": 4402, + "english_name": "Aymara", + "name": "Aymar" + }, + "az": { + "articles": 141672, + "english_name": "Azerbaijani", + "name": "Az\u0259rbaycanca" + }, + "azb": { + "articles": 118928, + "english_name": "South Azerbaijani", + "name": "\u062a\u06c6\u0631\u06a9\u062c\u0647" + }, + "ba": { + "articles": 46046, + "english_name": "Bashkir", + "name": "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442" + }, + "bar": { + "articles": 27285, + "english_name": "Bavarian", + "name": "Boarisch" + }, + "bat-smg": { + "articles": 16427, + "english_name": "Samogitian", + "name": "\u017demait\u0117\u0161ka" + }, + "bcl": { + "articles": 8664, + "english_name": "Central Bicolano", + "name": "Bikol" + }, + "be": { + "articles": 160751, + "english_name": "Belarusian", + "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" + }, + "be-tarask": { + "articles": 65655, + "english_name": "Belarusian (Tara\u0161kievica)", + "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)" + }, + "bg": { + "articles": 248452, + "english_name": "Bulgarian", + "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" + }, + "bh": { + "articles": 6686, + "english_name": "Bihari", + "name": "\u092d\u094b\u091c\u092a\u0941\u0930\u0940" + }, + "bi": { + "articles": 1179, + "english_name": "Bislama", + "name": "Bislama" + }, + "bjn": { + "articles": 1918, + "english_name": "Banjar", + "name": "Bahasa Banjar" + }, + "bm": { + "articles": 651, + "english_name": "Bambara", + "name": "Bamanankan" + }, + "bn": { + "articles": 63523, + "english_name": "Bengali", + "name": "\u09ac\u09be\u0982\u09b2\u09be" + }, + "bo": { + "articles": 5827, + "english_name": "Tibetan", + "name": "\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51" + }, + "bpy": { + "articles": 25081, + "english_name": "Bishnupriya Manipuri", + "name": "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0" + }, + "br": { + "articles": 66053, + "english_name": "Breton", + "name": "Brezhoneg" + }, + "bs": { + "articles": 79235, + "english_name": "Bosnian", + "name": "Bosanski" + }, + "bug": { + "articles": 14121, + "english_name": "Buginese", + "name": "Basa Ugi" + }, + "bxr": { + "articles": 2124, + "english_name": "Buryat", + "name": "\u0411\u0443\u0440\u044f\u0430\u0434" + }, + "ca": { + "articles": 599790, + "english_name": "Catalan", + "name": "Catal\u00e0" + }, + "cbk-zam": { + "articles": 3000, + "english_name": "Zamboanga Chavacano", + "name": "Chavacano de Zamboanga" + }, + "cdo": { + "articles": 14111, + "english_name": "Min Dong", + "name": "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304" + }, + "ce": { + "articles": 208906, + "english_name": "Chechen", + "name": "\u041d\u043e\u0445\u0447\u0438\u0439\u043d" + }, + "ceb": { + "articles": 5376890, + "english_name": "Cebuano", + "name": "Sinugboanong Binisaya" + }, + "ch": { + "articles": 472, + "english_name": "Chamorro", + "name": "Chamoru" + }, + "chr": { + "articles": 855, + "english_name": "Cherokee", + "name": "\u13e3\u13b3\u13a9" + }, + "chy": { + "articles": 611, + "english_name": "Cheyenne", + "name": "Tsets\u00eahest\u00e2hese" + }, + "ckb": { + "articles": 22870, + "english_name": "Sorani", + "name": "Soran\u00ee / \u06a9\u0648\u0631\u062f\u06cc" + }, + "co": { + "articles": 5643, + "english_name": "Corsican", + "name": "Corsu" + }, + "cr": { + "articles": 103, + "english_name": "Cree", + "name": "Nehiyaw" + }, + "crh": { + "articles": 6172, + "english_name": "Crimean Tatar", + "name": "Q\u0131r\u0131mtatarca" + }, + "cs": { + "articles": 419392, + "english_name": "Czech", + "name": "\u010ce\u0161tina" + }, + "csb": { + "articles": 5258, + "english_name": "Kashubian", + "name": "Kasz\u00ebbsczi" + }, + "cu": { + "articles": 669, + "english_name": "Old Church Slavonic", + "name": "\u0421\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a" + }, + "cv": { + "articles": 41622, + "english_name": "Chuvash", + "name": "\u0427\u0103\u0432\u0430\u0448" + }, + "cy": { + "articles": 102137, + "english_name": "Welsh", + "name": "Cymraeg" + }, + "da": { + "articles": 242006, + "english_name": "Danish", + "name": "Dansk" + }, + "de": { + "articles": 2256718, + "english_name": "German", + "name": "Deutsch" + }, + "diq": { + "articles": 9107, + "english_name": "Zazaki", + "name": "Zazaki" + }, + "dsb": { + "articles": 3210, + "english_name": "Lower Sorbian", + "name": "Dolnoserbski" + }, + "dty": { + "articles": 2967, + "english_name": "Doteli", + "name": "\u0921\u094b\u091f\u0947\u0932\u0940" + }, + "dv": { + "articles": 3024, + "english_name": "Divehi", + "name": "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0" + }, + "dz": { + "articles": 218, + "english_name": "Dzongkha", + "name": "\u0f47\u0f7c\u0f44\u0f0b\u0f41" + }, + "ee": { + "articles": 350, + "english_name": "Ewe", + "name": "E\u028begbe" + }, + "el": { + "articles": 157114, + "english_name": "Greek", + "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" + }, + "eml": { + "articles": 11866, + "english_name": "Emilian-Romagnol", + "name": "Emili\u00e0n e rumagn\u00f2l" + }, + "en": { + "articles": 5781855, + "english_name": "English", + "name": "English" + }, + "eo": { + "articles": 253490, + "english_name": "Esperanto", + "name": "Esperanto" + }, + "es": { + "articles": 1497393, + "english_name": "Spanish", + "name": "Espa\u00f1ol" + }, + "et": { + "articles": 185271, + "english_name": "Estonian", + "name": "Eesti" + }, + "eu": { + "articles": 309974, + "english_name": "Basque", + "name": "Euskara" + }, + "ext": { + "articles": 3020, + "english_name": "Extremaduran", + "name": "Estreme\u00f1u" + }, + "fa": { + "articles": 655431, + "english_name": "Persian", + "name": "\u0641\u0627\u0631\u0633\u06cc" + }, + "ff": { + "articles": 228, + "english_name": "Fula", + "name": "Fulfulde" + }, + "fi": { + "articles": 449407, + "english_name": "Finnish", + "name": "Suomi" + }, + "fiu-vro": { + "articles": 5463, + "english_name": "V\u00f5ro", + "name": "V\u00f5ro" + }, + "fj": { + "articles": 425, + "english_name": "Fijian", + "name": "Na Vosa Vakaviti" + }, + "fo": { + "articles": 12891, + "english_name": "Faroese", + "name": "F\u00f8royskt" + }, + "fr": { + "articles": 2070378, + "english_name": "French", + "name": "Fran\u00e7ais" + }, + "frp": { + "articles": 3254, + "english_name": "Franco-Proven\u00e7al", + "name": "Arpitan" + }, + "frr": { + "articles": 8460, + "english_name": "North Frisian", + "name": "Nordfriisk" + }, + "fur": { + "articles": 3289, + "english_name": "Friulian", + "name": "Furlan" + }, + "fy": { + "articles": 41308, + "english_name": "West Frisian", + "name": "Frysk" + }, + "ga": { + "articles": 49639, + "english_name": "Irish", + "name": "Gaeilge" + }, + "gag": { + "articles": 2763, + "english_name": "Gagauz", + "name": "Gagauz" + }, + "gan": { + "articles": 6411, + "english_name": "Gan", + "name": "\u8d1b\u8a9e" + }, + "gd": { + "articles": 14774, + "english_name": "Scottish Gaelic", + "name": "G\u00e0idhlig" + }, + "gl": { + "articles": 153607, + "english_name": "Galician", + "name": "Galego" + }, + "glk": { + "articles": 5666, + "english_name": "Gilaki", + "name": "\u06af\u06cc\u0644\u06a9\u06cc" + }, + "gn": { + "articles": 3637, + "english_name": "Guarani", + "name": "Ava\u00f1e'\u1ebd" + }, + "gom": { + "articles": 3598, + "english_name": "Goan Konkani", + "name": "\u0917\u094b\u0902\u092f\u091a\u0940 \u0915\u094b\u0902\u0915\u0923\u0940 / G\u00f5ychi Konknni" + }, + "gor": { + "articles": 1926, + "english_name": "Gorontalo", + "name": "Hulontalo" + }, + "got": { + "articles": 588, + "english_name": "Gothic", + "name": "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a" + }, + "gu": { + "articles": 28289, + "english_name": "Gujarati", + "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0" + }, + "gv": { + "articles": 4968, + "english_name": "Manx", + "name": "Gaelg" + }, + "ha": { + "articles": 2740, + "english_name": "Hausa", + "name": "Hausa / \u0647\u064e\u0648\u064f\u0633\u064e" + }, + "hak": { + "articles": 8894, + "english_name": "Hakka", + "name": "Hak-k\u00e2-fa / \u5ba2\u5bb6\u8a71" + }, + "haw": { + "articles": 3234, + "english_name": "Hawaiian", + "name": "Hawai`i" + }, + "he": { + "articles": 236237, + "english_name": "Hebrew", + "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" + }, + "hi": { + "articles": 128996, + "english_name": "Hindi", + "name": "\u0939\u093f\u0928\u094d\u0926\u0940" + }, + "hif": { + "articles": 9756, + "english_name": "Fiji Hindi", + "name": "Fiji Hindi" + }, + "hr": { + "articles": 201383, + "english_name": "Croatian", + "name": "Hrvatski" + }, + "hsb": { + "articles": 13357, + "english_name": "Upper Sorbian", + "name": "Hornjoserbsce" + }, + "ht": { + "articles": 54219, + "english_name": "Haitian", + "name": "Kr\u00e8yol ayisyen" + }, + "hu": { + "articles": 442291, + "english_name": "Hungarian", + "name": "Magyar" + }, + "hy": { + "articles": 250045, + "english_name": "Armenian", + "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576" + }, + "ia": { + "articles": 21225, + "english_name": "Interlingua", + "name": "Interlingua" + }, + "id": { + "articles": 449446, + "english_name": "Indonesian", + "name": "Bahasa Indonesia" + }, + "ie": { + "articles": 4303, + "english_name": "Interlingue", + "name": "Interlingue" + }, + "ig": { + "articles": 1376, + "english_name": "Igbo", + "name": "Igbo" + }, + "ik": { + "articles": 262, + "english_name": "Inupiak", + "name": "I\u00f1upiak" + }, + "ilo": { + "articles": 11592, + "english_name": "Ilokano", + "name": "Ilokano" + }, + "inh": { + "articles": 791, + "english_name": "Ingush", + "name": "\u0413\u04cf\u0430\u043b\u0433\u04cf\u0430\u0439" + }, + "io": { + "articles": 28134, + "english_name": "Ido", + "name": "Ido" + }, + "is": { + "articles": 46096, + "english_name": "Icelandic", + "name": "\u00cdslenska" + }, + "it": { + "articles": 1491690, + "english_name": "Italian", + "name": "Italiano" + }, + "iu": { + "articles": 401, + "english_name": "Inuktitut", + "name": "\u1403\u14c4\u1483\u144e\u1450\u1466" + }, + "ja": { + "articles": 1134685, + "english_name": "Japanese", + "name": "\u65e5\u672c\u8a9e" + }, + "jam": { + "articles": 1632, + "english_name": "Jamaican Patois", + "name": "Jumiekan Kryuol" + }, + "jbo": { + "articles": 1233, + "english_name": "Lojban", + "name": "Lojban" + }, + "jv": { + "articles": 55104, + "english_name": "Javanese", + "name": "Basa Jawa" + }, + "ka": { + "articles": 126147, + "english_name": "Georgian", + "name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8" + }, + "kaa": { + "articles": 1910, + "english_name": "Karakalpak", + "name": "Qaraqalpaqsha" + }, + "kab": { + "articles": 2860, + "english_name": "Kabyle", + "name": "Taqbaylit" + }, + "kbd": { + "articles": 1578, + "english_name": "Kabardian Circassian", + "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d (Adighabze)" + }, + "kbp": { + "articles": 1479, + "english_name": "Kabiye", + "name": "Kab\u0269y\u025b" + }, + "kg": { + "articles": 1184, + "english_name": "Kongo", + "name": "KiKongo" + }, + "ki": { + "articles": 1358, + "english_name": "Kikuyu", + "name": "G\u0129k\u0169y\u0169" + }, + "kk": { + "articles": 223486, + "english_name": "Kazakh", + "name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430" + }, + "kl": { + "articles": 1663, + "english_name": "Greenlandic", + "name": "Kalaallisut" + }, + "km": { + "articles": 7105, + "english_name": "Khmer", + "name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a" + }, + "kn": { + "articles": 24065, + "english_name": "Kannada", + "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1" + }, + "ko": { + "articles": 438644, + "english_name": "Korean", + "name": "\ud55c\uad6d\uc5b4" + }, + "koi": { + "articles": 3451, + "english_name": "Komi-Permyak", + "name": "\u041f\u0435\u0440\u0435\u043c \u041a\u043e\u043c\u0438 (Perem Komi)" + }, + "krc": { + "articles": 2028, + "english_name": "Karachay-Balkar", + "name": "\u041a\u044a\u0430\u0440\u0430\u0447\u0430\u0439-\u041c\u0430\u043b\u043a\u044a\u0430\u0440 (Qarachay-Malqar)" + }, + "ks": { + "articles": 324, + "english_name": "Kashmiri", + "name": "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 / \u0643\u0634\u0645\u064a\u0631\u064a" + }, + "ksh": { + "articles": 2842, + "english_name": "Ripuarian", + "name": "Ripoarisch" + }, + "ku": { + "articles": 24022, + "english_name": "Kurdish", + "name": "Kurd\u00ee / \u0643\u0648\u0631\u062f\u06cc" + }, + "kv": { + "articles": 5308, + "english_name": "Komi", + "name": "\u041a\u043e\u043c\u0438" + }, + "kw": { + "articles": 3839, + "english_name": "Cornish", + "name": "Kernewek/Karnuack" + }, + "ky": { + "articles": 79376, + "english_name": "Kirghiz", + "name": "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430" + }, + "la": { + "articles": 129779, + "english_name": "Latin", + "name": "Latina" + }, + "lad": { + "articles": 3828, + "english_name": "Ladino", + "name": "Dzhudezmo" + }, + "lb": { + "articles": 55377, + "english_name": "Luxembourgish", + "name": "L\u00ebtzebuergesch" + }, + "lbe": { + "articles": 1216, + "english_name": "Lak", + "name": "\u041b\u0430\u043a\u043a\u0443" + }, + "lez": { + "articles": 3963, + "english_name": "Lezgian", + "name": "\u041b\u0435\u0437\u0433\u0438 \u0447\u0406\u0430\u043b (Lezgi \u010d\u2019al)" + }, + "lfn": { + "articles": 3083, + "english_name": "Lingua Franca Nova", + "name": "Lingua franca nova" + }, + "lg": { + "articles": 1155, + "english_name": "Luganda", + "name": "Luganda" + }, + "li": { + "articles": 12316, + "english_name": "Limburgish", + "name": "Limburgs" + }, + "lij": { + "articles": 3456, + "english_name": "Ligurian", + "name": "L\u00edguru" + }, + "lmo": { + "articles": 38071, + "english_name": "Lombard", + "name": "Lumbaart" + }, + "ln": { + "articles": 3049, + "english_name": "Lingala", + "name": "Lingala" + }, + "lo": { + "articles": 3101, + "english_name": "Lao", + "name": "\u0ea5\u0eb2\u0ea7" + }, + "lrc": { + "articles": 5357, + "english_name": "Northern Luri", + "name": "\u0644\u06ca\u0631\u06cc \u0634\u0648\u0645\u0627\u0644\u06cc" + }, + "lt": { + "articles": 193352, + "english_name": "Lithuanian", + "name": "Lietuvi\u0173" + }, + "ltg": { + "articles": 815, + "english_name": "Latgalian", + "name": "Latga\u013cu" + }, + "lv": { + "articles": 90266, + "english_name": "Latvian", + "name": "Latvie\u0161u" + }, + "mai": { + "articles": 13164, + "english_name": "Maithili", + "name": "\u092e\u0948\u0925\u093f\u0932\u0940" + }, + "map-bms": { + "articles": 13336, + "english_name": "Banyumasan", + "name": "Basa Banyumasan" + }, + "mdf": { + "articles": 1188, + "english_name": "Moksha", + "name": "\u041c\u043e\u043a\u0448\u0435\u043d\u044c (Mokshanj K\u00e4lj)" + }, + "mg": { + "articles": 90635, + "english_name": "Malagasy", + "name": "Malagasy" + }, + "mhr": { + "articles": 10046, + "english_name": "Meadow Mari", + "name": "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439 (Olyk Marij)" + }, + "mi": { + "articles": 7145, + "english_name": "Maori", + "name": "M\u0101ori" + }, + "min": { + "articles": 222492, + "english_name": "Minangkabau", + "name": "Minangkabau" + }, + "mk": { + "articles": 98050, + "english_name": "Macedonian", + "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438" + }, + "ml": { + "articles": 61227, + "english_name": "Malayalam", + "name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02" + }, + "mn": { + "articles": 18356, + "english_name": "Mongolian", + "name": "\u041c\u043e\u043d\u0433\u043e\u043b" + }, + "mr": { + "articles": 52667, + "english_name": "Marathi", + "name": "\u092e\u0930\u093e\u0920\u0940" + }, + "mrj": { + "articles": 10269, + "english_name": "Hill Mari", + "name": "\u041a\u044b\u0440\u044b\u043a \u041c\u0430\u0440\u044b (Kyryk Mary)" + }, + "ms": { + "articles": 323274, + "english_name": "Malay", + "name": "Bahasa Melayu" + }, + "mt": { + "articles": 3336, + "english_name": "Maltese", + "name": "Malti" + }, + "mwl": { + "articles": 3674, + "english_name": "Mirandese", + "name": "Mirand\u00e9s" + }, + "my": { + "articles": 42128, + "english_name": "Burmese", + "name": "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c" + }, + "myv": { + "articles": 5415, + "english_name": "Erzya", + "name": "\u042d\u0440\u0437\u044f\u043d\u044c (Erzjanj Kelj)" + }, + "mzn": { + "articles": 12786, + "english_name": "Mazandarani", + "name": "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a" + }, + "na": { + "articles": 1305, + "english_name": "Nauruan", + "name": "dorerin Naoero" + }, + "nah": { + "articles": 6925, + "english_name": "Nahuatl", + "name": "N\u0101huatl" + }, + "nap": { + "articles": 14576, + "english_name": "Neapolitan", + "name": "Nnapulitano" + }, + "nds": { + "articles": 41178, + "english_name": "Low Saxon", + "name": "Plattd\u00fc\u00fctsch" + }, + "nds-nl": { + "articles": 6812, + "english_name": "Dutch Low Saxon", + "name": "Nedersaksisch" + }, + "ne": { + "articles": 31633, + "english_name": "Nepali", + "name": "\u0928\u0947\u092a\u093e\u0932\u0940" + }, + "new": { + "articles": 72212, + "english_name": "Newar", + "name": "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e" + }, + "nl": { + "articles": 1954031, + "english_name": "Dutch", + "name": "Nederlands" + }, + "nn": { + "articles": 141839, + "english_name": "Norwegian (Nynorsk)", + "name": "Nynorsk" + }, + "no": { + "articles": 500849, + "english_name": "Norwegian (Bokm\u00e5l)", + "name": "Norsk (Bokm\u00e5l)" + }, + "nov": { + "articles": 1661, + "english_name": "Novial", + "name": "Novial" + }, + "nrm": { + "articles": 4029, + "english_name": "Norman", + "name": "Nouormand/Normaund" + }, + "nso": { + "articles": 8094, + "english_name": "Northern Sotho", + "name": "Sepedi" + }, + "nv": { + "articles": 6991, + "english_name": "Navajo", + "name": "Din\u00e9 bizaad" + }, + "ny": { + "articles": 487, + "english_name": "Chichewa", + "name": "Chichewa" + }, + "oc": { + "articles": 85227, + "english_name": "Occitan", + "name": "Occitan" + }, + "olo": { + "articles": 2812, + "english_name": "Livvi-Karelian", + "name": "Karjalan" + }, + "om": { + "articles": 775, + "english_name": "Oromo", + "name": "Oromoo" + }, + "or": { + "articles": 14550, + "english_name": "Oriya", + "name": "\u0b13\u0b21\u0b3c\u0b3f\u0b06" + }, + "os": { + "articles": 11225, + "english_name": "Ossetian", + "name": "\u0418\u0440\u043e\u043d\u0430\u0443" + }, + "pa": { + "articles": 30886, + "english_name": "Punjabi", + "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40" + }, + "pag": { + "articles": 2521, + "english_name": "Pangasinan", + "name": "Pangasinan" + }, + "pam": { + "articles": 8825, + "english_name": "Kapampangan", + "name": "Kapampangan" + }, + "pap": { + "articles": 1953, + "english_name": "Papiamentu", + "name": "Papiamentu" + }, + "pcd": { + "articles": 4258, + "english_name": "Picard", + "name": "Picard" + }, + "pdc": { + "articles": 1858, + "english_name": "Pennsylvania German", + "name": "Deitsch" + }, + "pfl": { + "articles": 2502, + "english_name": "Palatinate German", + "name": "P\u00e4lzisch" + }, + "pi": { + "articles": 2535, + "english_name": "Pali", + "name": "\u092a\u093e\u0934\u093f" + }, + "pih": { + "articles": 681, + "english_name": "Norfolk", + "name": "Norfuk" + }, + "pl": { + "articles": 1314525, + "english_name": "Polish", + "name": "Polski" + }, + "pms": { + "articles": 64391, + "english_name": "Piedmontese", + "name": "Piemont\u00e8is" + }, + "pnb": { + "articles": 47107, + "english_name": "Western Punjabi", + "name": "\u0634\u0627\u06c1 \u0645\u06a9\u06be\u06cc \u067e\u0646\u062c\u0627\u0628\u06cc (Sh\u0101hmukh\u012b Pa\u00f1j\u0101b\u012b)" + }, + "pnt": { + "articles": 462, + "english_name": "Pontic", + "name": "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac" + }, + "ps": { + "articles": 9702, + "english_name": "Pashto", + "name": "\u067e\u069a\u062a\u0648" + }, + "pt": { + "articles": 1014081, + "english_name": "Portuguese", + "name": "Portugu\u00eas" + }, + "qu": { + "articles": 20900, + "english_name": "Quechua", + "name": "Runa Simi" + }, + "rm": { + "articles": 3564, + "english_name": "Romansh", + "name": "Rumantsch" + }, + "rmy": { + "articles": 660, + "english_name": "Romani", + "name": "romani - \u0930\u094b\u092e\u093e\u0928\u0940" + }, + "rn": { + "articles": 609, + "english_name": "Kirundi", + "name": "Kirundi" + }, + "ro": { + "articles": 390804, + "english_name": "Romanian", + "name": "Rom\u00e2n\u0103" + }, + "roa-rup": { + "articles": 1216, + "english_name": "Aromanian", + "name": "Arm\u00e3neashce" + }, + "roa-tara": { + "articles": 9243, + "english_name": "Tarantino", + "name": "Tarand\u00edne" + }, + "ru": { + "articles": 1519724, + "english_name": "Russian", + "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" + }, + "rue": { + "articles": 6891, + "english_name": "Rusyn", + "name": "\u0420\u0443\u0441\u0438\u043d\u044c\u0441\u043a\u044b\u0439" + }, + "rw": { + "articles": 1822, + "english_name": "Kinyarwanda", + "name": "Ikinyarwanda" + }, + "sa": { + "articles": 11357, + "english_name": "Sanskrit", + "name": "\u0938\u0902\u0938\u094d\u0915\u0943\u0924\u092e\u094d" + }, + "sah": { + "articles": 11943, + "english_name": "Sakha", + "name": "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430 (Saxa Tyla)" + }, + "sat": { + "articles": 532, + "english_name": "Santali", + "name": "\u1c65\u1c5f\u1c71\u1c5b\u1c5f\u1c72\u1c64" + }, + "sc": { + "articles": 5907, + "english_name": "Sardinian", + "name": "Sardu" + }, + "scn": { + "articles": 26060, + "english_name": "Sicilian", + "name": "Sicilianu" + }, + "sco": { + "articles": 53388, + "english_name": "Scots", + "name": "Scots" + }, + "sd": { + "articles": 11114, + "english_name": "Sindhi", + "name": "\u0633\u0646\u068c\u064a\u060c \u0633\u0646\u062f\u06be\u06cc \u060c \u0938\u093f\u0928\u094d\u0927" + }, + "se": { + "articles": 7464, + "english_name": "Northern Sami", + "name": "S\u00e1megiella" + }, + "sg": { + "articles": 258, + "english_name": "Sango", + "name": "S\u00e4ng\u00f6" + }, + "sh": { + "articles": 447497, + "english_name": "Serbo-Croatian", + "name": "Srpskohrvatski / \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438" + }, + "shn": { + "articles": 3239, + "english_name": "\u107d\u1083\u1087\u101e\u1083\u1087\u1010\u1086\u1038 ", + "name": "Shan" + }, + "si": { + "articles": 14918, + "english_name": "Sinhalese", + "name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd" + }, + "simple": { + "articles": 141947, + "english_name": "Simple English", + "name": "Simple English" + }, + "sk": { + "articles": 228015, + "english_name": "Slovak", + "name": "Sloven\u010dina" + }, + "sl": { + "articles": 163198, + "english_name": "Slovenian", + "name": "Sloven\u0161\u010dina" + }, + "sm": { + "articles": 801, + "english_name": "Samoan", + "name": "Gagana Samoa" + }, + "sn": { + "articles": 4227, + "english_name": "Shona", + "name": "chiShona" + }, + "so": { + "articles": 5530, + "english_name": "Somali", + "name": "Soomaali" + }, + "sq": { + "articles": 75615, + "english_name": "Albanian", + "name": "Shqip" + }, + "sr": { + "articles": 614180, + "english_name": "Serbian", + "name": "\u0421\u0440\u043f\u0441\u043a\u0438 / Srpski" + }, + "srn": { + "articles": 1061, + "english_name": "Sranan", + "name": "Sranantongo" + }, + "ss": { + "articles": 450, + "english_name": "Swati", + "name": "SiSwati" + }, + "st": { + "articles": 544, + "english_name": "Sesotho", + "name": "Sesotho" + }, + "stq": { + "articles": 3998, + "english_name": "Saterland Frisian", + "name": "Seeltersk" + }, + "su": { + "articles": 39840, + "english_name": "Sundanese", + "name": "Basa Sunda" + }, + "sv": { + "articles": 3760984, + "english_name": "Swedish", + "name": "Svenska" + }, + "sw": { + "articles": 47744, + "english_name": "Swahili", + "name": "Kiswahili" + }, + "szl": { + "articles": 7812, + "english_name": "Silesian", + "name": "\u015al\u016fnski" + }, + "ta": { + "articles": 119140, + "english_name": "Tamil", + "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" + }, + "tcy": { + "articles": 994, + "english_name": "Tulu", + "name": "\u0ca4\u0cc1\u0cb3\u0cc1" + }, + "te": { + "articles": 69978, + "english_name": "Telugu", + "name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41" + }, + "tet": { + "articles": 1440, + "english_name": "Tetum", + "name": "Tetun" + }, + "tg": { + "articles": 96078, + "english_name": "Tajik", + "name": "\u0422\u043e\u04b7\u0438\u043a\u04e3" + }, + "th": { + "articles": 128977, + "english_name": "Thai", + "name": "\u0e44\u0e17\u0e22" + }, + "ti": { + "articles": 168, + "english_name": "Tigrinya", + "name": "\u1275\u130d\u122d\u129b" + }, + "tk": { + "articles": 5514, + "english_name": "Turkmen", + "name": "T\u00fcrkmen" + }, + "tl": { + "articles": 77677, + "english_name": "Tagalog", + "name": "Tagalog" + }, + "tn": { + "articles": 640, + "english_name": "Tswana", + "name": "Setswana" + }, + "to": { + "articles": 1693, + "english_name": "Tongan", + "name": "faka Tonga" + }, + "tpi": { + "articles": 1486, + "english_name": "Tok Pisin", + "name": "Tok Pisin" + }, + "tr": { + "articles": 321169, + "english_name": "Turkish", + "name": "T\u00fcrk\u00e7e" + }, + "ts": { + "articles": 583, + "english_name": "Tsonga", + "name": "Xitsonga" + }, + "tt": { + "articles": 82594, + "english_name": "Tatar", + "name": "Tatar\u00e7a / \u0422\u0430\u0442\u0430\u0440\u0447\u0430" + }, + "tum": { + "articles": 572, + "english_name": "Tumbuka", + "name": "chiTumbuka" + }, + "tw": { + "articles": 657, + "english_name": "Twi", + "name": "Twi" + }, + "ty": { + "articles": 1199, + "english_name": "Tahitian", + "name": "Reo M\u0101`ohi" + }, + "tyv": { + "articles": 1738, + "english_name": "Tuvan", + "name": "\u0422\u044b\u0432\u0430" + }, + "udm": { + "articles": 4565, + "english_name": "Udmurt", + "name": "\u0423\u0434\u043c\u0443\u0440\u0442 \u043a\u044b\u043b" + }, + "ug": { + "articles": 4104, + "english_name": "Uyghur", + "name": "\u0626\u06c7\u064a\u063a\u06c7\u0631 \u062a\u0649\u0644\u0649" + }, + "uk": { + "articles": 878251, + "english_name": "Ukrainian", + "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" + }, + "ur": { + "articles": 142712, + "english_name": "Urdu", + "name": "\u0627\u0631\u062f\u0648" + }, + "uz": { + "articles": 130227, + "english_name": "Uzbek", + "name": "O\u2018zbek" + }, + "ve": { + "articles": 265, + "english_name": "Venda", + "name": "Tshivenda" + }, + "vec": { + "articles": 11266, + "english_name": "Venetian", + "name": "V\u00e8neto" + }, + "vep": { + "articles": 5880, + "english_name": "Vepsian", + "name": "Veps\u00e4n" + }, + "vi": { + "articles": 1198961, + "english_name": "Vietnamese", + "name": "Ti\u1ebfng Vi\u1ec7t" + }, + "vls": { + "articles": 6703, + "english_name": "West Flemish", + "name": "West-Vlams" + }, + "vo": { + "articles": 122174, + "english_name": "Volap\u00fck", + "name": "Volap\u00fck" + }, + "wa": { + "articles": 14790, + "english_name": "Walloon", + "name": "Walon" + }, + "war": { + "articles": 1263483, + "english_name": "Waray-Waray", + "name": "Winaray" + }, + "wo": { + "articles": 1177, + "english_name": "Wolof", + "name": "Wolof" + }, + "wuu": { + "articles": 16289, + "english_name": "Wu", + "name": "\u5434\u8bed" + }, + "xal": { + "articles": 2075, + "english_name": "Kalmyk", + "name": "\u0425\u0430\u043b\u044c\u043c\u0433" + }, + "xh": { + "articles": 751, + "english_name": "Xhosa", + "name": "isiXhosa" + }, + "xmf": { + "articles": 12678, + "english_name": "Mingrelian", + "name": "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8 (Margaluri)" + }, + "yi": { + "articles": 14571, + "english_name": "Yiddish", + "name": "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9" + }, + "yo": { + "articles": 31774, + "english_name": "Yoruba", + "name": "Yor\u00f9b\u00e1" + }, + "za": { + "articles": 1867, + "english_name": "Zhuang", + "name": "Cuengh" + }, + "zea": { + "articles": 4580, + "english_name": "Zeelandic", + "name": "Ze\u00eauws" + }, + "zh": { + "articles": 1038913, + "english_name": "Chinese", + "name": "\u4e2d\u6587" + }, + "zh-classical": { + "articles": 8663, + "english_name": "Classical Chinese", + "name": "\u53e4\u6587 / \u6587\u8a00\u6587" + }, + "zh-min-nan": { + "articles": 227702, + "english_name": "Min Nan", + "name": "B\u00e2n-l\u00e2m-g\u00fa" + }, + "zh-yue": { + "articles": 70490, + "english_name": "Cantonese", + "name": "\u7cb5\u8a9e" + }, + "zu": { + "articles": 1050, + "english_name": "Zulu", + "name": "isiZulu" + } + }, + "yahoo": [ + "ar", + "bg", + "cs", + "da", + "de", + "el", + "en", + "es", + "et", + "fi", + "fr", + "he", + "hr", + "hu", + "it", + "ja", + "ko", + "lt", + "lv", + "nl", + "no", + "pl", + "pt", + "ro", + "ru", + "sk", + "sl", + "sv", + "th", + "tr", + "zh-CHS", + "zh-CHT" + ], + "yahoo news": [ + "ar", + "bg", + "cs", + "da", + "de", + "el", + "en", + "es", + "et", + "fi", + "fr", + "he", + "hr", + "hu", + "it", + "ja", + "ko", + "lt", + "lv", + "nl", + "no", + "pl", + "pt", + "ro", + "ru", + "sk", + "sl", + "sv", + "th", + "tr", + "zh-CHS", + "zh-CHT" + ] } \ No newline at end of file diff --git a/utils/fetch_languages.py b/utils/fetch_languages.py index a6af0730..ddebb411 100644 --- a/utils/fetch_languages.py +++ b/utils/fetch_languages.py @@ -5,7 +5,7 @@ # Output files (engines_languages.json and languages.py) # are written in current directory to avoid overwriting in case something goes wrong. -from json import dump +import json import io from sys import path from babel import Locale, UnknownLocaleError @@ -22,19 +22,22 @@ languages_file = 'languages.py' # Fetchs supported languages for each engine and writes json file with those. def fetch_supported_languages(): + engines_languages = {} - for engine_name in engines: + names = list(engines) + names.sort() + + for engine_name in names: + print("fetching languages of engine %s" % engine_name) + if hasattr(engines[engine_name], 'fetch_supported_languages'): - try: - engines_languages[engine_name] = engines[engine_name].fetch_supported_languages() - if type(engines_languages[engine_name]) == list: - engines_languages[engine_name] = sorted(engines_languages[engine_name]) - except Exception as e: - print(e) + engines_languages[engine_name] = engines[engine_name].fetch_supported_languages() + if type(engines_languages[engine_name]) == list: + engines_languages[engine_name] = sorted(engines_languages[engine_name]) # write json file - with io.open(engines_languages_file, "w", encoding="utf-8") as f: - dump(engines_languages, f, ensure_ascii=False, indent=4, separators=(',', ': ')) + with open(engines_languages_file, 'w', encoding='utf-8') as f: + json.dump(engines_languages, f, indent=2, sort_keys=True) return engines_languages From e0c99d9dcbe4c2eee0a7c6f4a7326a8376467640 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 1 Mar 2020 08:01:36 +0100 Subject: [PATCH 170/238] bugfix: fetch_supported_languages bing, -news, -videos, -images Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/engines/bing.py | 23 ++++++++++++++--------- searx/engines/bing_images.py | 21 ++------------------- searx/engines/bing_news.py | 3 ++- searx/engines/bing_videos.py | 2 +- 4 files changed, 19 insertions(+), 30 deletions(-) diff --git a/searx/engines/bing.py b/searx/engines/bing.py index b193f7c6..c8fc4fa2 100644 --- a/searx/engines/bing.py +++ b/searx/engines/bing.py @@ -110,13 +110,18 @@ def response(resp): # get supported languages from their site def _fetch_supported_languages(resp): - supported_languages = [] - dom = html.fromstring(resp.text) - options = eval_xpath(dom, '//div[@id="limit-languages"]//input') - for option in options: - code = eval_xpath(option, './@id')[0].replace('_', '-') - if code == 'nb': - code = 'no' - supported_languages.append(code) + lang_tags = set() - return supported_languages + setmkt = re.compile('setmkt=([^&]*)') + dom = html.fromstring(resp.text) + lang_links = eval_xpath(dom, "//li/a[contains(@href, 'setmkt')]") + + for a in lang_links: + href = eval_xpath(a, './@href')[0] + match = setmkt.search(href) + l_tag = match.groups()[0] + _lang, _nation = l_tag.split('-',1) + l_tag = _lang.lower() + '-' + _nation.upper() + lang_tags.add(l_tag) + + return list(lang_tags) diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py index 44e2c3bb..138ed11c 100644 --- a/searx/engines/bing_images.py +++ b/searx/engines/bing_images.py @@ -18,6 +18,8 @@ import re from searx.url_utils import urlencode from searx.utils import match_language +from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases + # engine dependent config categories = ['images'] paging = True @@ -103,22 +105,3 @@ def response(resp): continue return results - - -# get supported languages from their site -def _fetch_supported_languages(resp): - supported_languages = [] - dom = html.fromstring(resp.text) - - regions_xpath = '//div[@id="region-section-content"]' \ - + '//ul[@class="b_vList"]/li/a/@href' - - regions = dom.xpath(regions_xpath) - for region in regions: - code = re.search('setmkt=[^\&]+', region).group()[7:] - if code == 'nb-NO': - code = 'no-NO' - - supported_languages.append(code) - - return supported_languages diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py index 827555bd..14fd7b99 100644 --- a/searx/engines/bing_news.py +++ b/searx/engines/bing_news.py @@ -15,9 +15,10 @@ from datetime import datetime from dateutil import parser from lxml import etree from searx.utils import list_get, match_language -from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases from searx.url_utils import urlencode, urlparse, parse_qsl +from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases + # engine dependent config categories = ['news'] paging = True diff --git a/searx/engines/bing_videos.py b/searx/engines/bing_videos.py index f1e63681..6e7b6d3a 100644 --- a/searx/engines/bing_videos.py +++ b/searx/engines/bing_videos.py @@ -12,10 +12,10 @@ from json import loads from lxml import html -from searx.engines.bing_images import _fetch_supported_languages, supported_languages_url from searx.url_utils import urlencode from searx.utils import match_language +from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases categories = ['videos'] paging = True From 79412828cdf009320a4c593f7597a36385ce0e9b Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 1 Mar 2020 08:06:51 +0100 Subject: [PATCH 171/238] update languages: engines_languages.json languages.py build by Makefile target: make project Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/data/engines_languages.json | 2215 ++++++++++++++++++++--------- searx/languages.py | 16 +- 2 files changed, 1542 insertions(+), 689 deletions(-) diff --git a/searx/data/engines_languages.json b/searx/data/engines_languages.json index 55beed76..83701e6d 100644 --- a/searx/data/engines_languages.json +++ b/searx/data/engines_languages.json @@ -1,182 +1,958 @@ { "bing": [ - "ar", - "bg", - "ca", - "cs", - "da", - "de", - "el", - "en", - "es", - "et", - "fa", - "fi", - "fr", - "he", - "hr", - "hu", - "id", - "is", - "it", - "ja", - "ko", - "lt", - "lv", - "ms", - "nl", - "no", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sk", - "sl", - "sq", - "sr", - "sv", - "th", - "tr", - "uk", - "vi", - "zh-CHS", - "zh-CHT" - ], - "bing images": [ + "af-NA", + "am-ET", "ar-AE", + "ar-BH", + "ar-DZ", "ar-EG", + "ar-IQ", + "ar-JO", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-MR", + "ar-OM", + "ar-PS", + "ar-QA", "ar-SA", + "ar-SD", + "ar-SY", + "ar-TN", + "ar-YE", + "az-LATN-AZ", + "be-BY", + "bg-BG", + "bn-BD", + "bo-BT", + "bs-LATN-BA", + "ca-AD", + "cs-CZ", "da-DK", "de-AT", "de-CH", "de-DE", + "de-LI", + "de-LU", + "dv-MV", + "el-GR", + "en-AG", + "en-AI", + "en-AS", "en-AU", + "en-BB", + "en-BM", + "en-BS", + "en-BW", + "en-BZ", "en-CA", + "en-CC", + "en-CK", + "en-CX", + "en-CY", + "en-DM", + "en-FJ", + "en-FK", + "en-FM", "en-GB", - "en-ID", + "en-GD", + "en-GG", + "en-GH", + "en-GI", + "en-GM", + "en-GU", + "en-GY", "en-IE", "en-IN", - "en-MY", + "en-JE", + "en-JM", + "en-KI", + "en-KN", + "en-KY", + "en-LC", + "en-LR", + "en-LS", + "en-MH", + "en-MP", + "en-MS", + "en-MU", + "en-MW", + "en-NF", + "en-NG", + "en-NR", + "en-NU", "en-NZ", + "en-PG", "en-PH", + "en-PN", + "en-PW", + "en-SB", + "en-SC", "en-SG", + "en-SH", + "en-SL", + "en-SS", + "en-SZ", + "en-TC", + "en-TK", + "en-TO", + "en-TT", + "en-TV", + "en-TZ", + "en-UG", "en-US", + "en-VC", + "en-VG", + "en-VI", + "en-VU", + "en-WS", "en-ZA", + "en-ZM", + "en-ZW", "es-AR", + "es-BO", "es-CL", + "es-CO", + "es-CR", + "es-DO", + "es-EC", "es-ES", + "es-GQ", + "es-GT", + "es-HN", "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PR", + "es-PY", + "es-SV", "es-US", + "es-UY", + "es-VE", + "et-EE", + "fa-IR", "fi-FI", + "fo-FO", "fr-BE", + "fr-BF", + "fr-BI", + "fr-BJ", + "fr-BL", "fr-CA", + "fr-CD", + "fr-CF", + "fr-CG", "fr-CH", + "fr-CI", + "fr-CM", + "fr-DJ", "fr-FR", + "fr-GA", + "fr-GF", + "fr-GN", + "fr-GP", + "fr-HT", + "fr-KM", + "fr-MC", + "fr-MF", + "fr-MG", + "fr-ML", + "fr-MQ", + "fr-NC", + "fr-NE", + "fr-PF", + "fr-PM", + "fr-RE", + "fr-SN", + "fr-TD", + "fr-TG", + "fr-WF", + "fr-YT", + "he-IL", + "hr-HR", + "hu-HU", + "hy-AM", + "id-ID", + "is-IS", "it-IT", + "it-SM", + "it-VA", "ja-JP", + "ka-GE", + "kk-KZ", + "kl-GL", + "km-KH", "ko-KR", + "ky-KG", + "lo-LA", + "lt-LT", + "lv-LV", + "mk-MK", + "mn-MN", + "ms-BN", + "ms-MY", + "mt-MT", + "nb-NO", + "ne-NP", + "nl-AW", "nl-BE", + "nl-CW", "nl-NL", - "no-NO", + "nl-SR", + "nl-SX", "pl-PL", + "prs-AF", + "pt-AO", "pt-BR", + "pt-CV", + "pt-GW", + "pt-MZ", "pt-PT", + "pt-ST", + "ro-MD", + "ro-RO", "ru-RU", + "rw-RW", + "si-LK", + "sk-SK", + "sl-SI", + "so-SO", + "sq-AL", + "sr-LATN-RS", + "sr-ME", "sv-SE", + "sw-KE", + "tg-CYRL-TJ", + "th-TH", + "ti-ER", + "tk-TM", "tr-TR", + "uk-UA", + "ur-PK", + "uz-LATN-UZ", + "vi-VN", "zh-CN", "zh-HK", + "zh-MO", + "zh-TW" + ], + "bing images": [ + "af-NA", + "am-ET", + "ar-AE", + "ar-BH", + "ar-DZ", + "ar-EG", + "ar-IQ", + "ar-JO", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-MR", + "ar-OM", + "ar-PS", + "ar-QA", + "ar-SA", + "ar-SD", + "ar-SY", + "ar-TN", + "ar-YE", + "az-LATN-AZ", + "be-BY", + "bg-BG", + "bn-BD", + "bo-BT", + "bs-LATN-BA", + "ca-AD", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "de-LI", + "de-LU", + "dv-MV", + "el-GR", + "en-AG", + "en-AI", + "en-AS", + "en-AU", + "en-BB", + "en-BM", + "en-BS", + "en-BW", + "en-BZ", + "en-CA", + "en-CC", + "en-CK", + "en-CX", + "en-CY", + "en-DM", + "en-FJ", + "en-FK", + "en-FM", + "en-GB", + "en-GD", + "en-GG", + "en-GH", + "en-GI", + "en-GM", + "en-GU", + "en-GY", + "en-IE", + "en-IN", + "en-JE", + "en-JM", + "en-KI", + "en-KN", + "en-KY", + "en-LC", + "en-LR", + "en-LS", + "en-MH", + "en-MP", + "en-MS", + "en-MU", + "en-MW", + "en-NF", + "en-NG", + "en-NR", + "en-NU", + "en-NZ", + "en-PG", + "en-PH", + "en-PN", + "en-PW", + "en-SB", + "en-SC", + "en-SG", + "en-SH", + "en-SL", + "en-SS", + "en-SZ", + "en-TC", + "en-TK", + "en-TO", + "en-TT", + "en-TV", + "en-TZ", + "en-UG", + "en-US", + "en-VC", + "en-VG", + "en-VI", + "en-VU", + "en-WS", + "en-ZA", + "en-ZM", + "en-ZW", + "es-AR", + "es-BO", + "es-CL", + "es-CO", + "es-CR", + "es-DO", + "es-EC", + "es-ES", + "es-GQ", + "es-GT", + "es-HN", + "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PR", + "es-PY", + "es-SV", + "es-US", + "es-UY", + "es-VE", + "et-EE", + "fa-IR", + "fi-FI", + "fo-FO", + "fr-BE", + "fr-BF", + "fr-BI", + "fr-BJ", + "fr-BL", + "fr-CA", + "fr-CD", + "fr-CF", + "fr-CG", + "fr-CH", + "fr-CI", + "fr-CM", + "fr-DJ", + "fr-FR", + "fr-GA", + "fr-GF", + "fr-GN", + "fr-GP", + "fr-HT", + "fr-KM", + "fr-MC", + "fr-MF", + "fr-MG", + "fr-ML", + "fr-MQ", + "fr-NC", + "fr-NE", + "fr-PF", + "fr-PM", + "fr-RE", + "fr-SN", + "fr-TD", + "fr-TG", + "fr-WF", + "fr-YT", + "he-IL", + "hr-HR", + "hu-HU", + "hy-AM", + "id-ID", + "is-IS", + "it-IT", + "it-SM", + "it-VA", + "ja-JP", + "ka-GE", + "kk-KZ", + "kl-GL", + "km-KH", + "ko-KR", + "ky-KG", + "lo-LA", + "lt-LT", + "lv-LV", + "mk-MK", + "mn-MN", + "ms-BN", + "ms-MY", + "mt-MT", + "nb-NO", + "ne-NP", + "nl-AW", + "nl-BE", + "nl-CW", + "nl-NL", + "nl-SR", + "nl-SX", + "pl-PL", + "prs-AF", + "pt-AO", + "pt-BR", + "pt-CV", + "pt-GW", + "pt-MZ", + "pt-PT", + "pt-ST", + "ro-MD", + "ro-RO", + "ru-RU", + "rw-RW", + "si-LK", + "sk-SK", + "sl-SI", + "so-SO", + "sq-AL", + "sr-LATN-RS", + "sr-ME", + "sv-SE", + "sw-KE", + "tg-CYRL-TJ", + "th-TH", + "ti-ER", + "tk-TM", + "tr-TR", + "uk-UA", + "ur-PK", + "uz-LATN-UZ", + "vi-VN", + "zh-CN", + "zh-HK", + "zh-MO", "zh-TW" ], "bing news": [ - "ar", - "bg", - "ca", - "cs", - "da", - "de", - "el", - "en", - "es", - "et", - "fa", - "fi", - "fr", - "he", - "hr", - "hu", - "id", - "is", - "it", - "ja", - "ko", - "lt", - "lv", - "ms", - "nl", - "no", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sk", - "sl", - "sq", - "sr", - "sv", - "th", - "tr", - "uk", - "vi", - "zh-CHS", - "zh-CHT" - ], - "bing videos": [ + "af-NA", + "am-ET", "ar-AE", + "ar-BH", + "ar-DZ", "ar-EG", + "ar-IQ", + "ar-JO", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-MR", + "ar-OM", + "ar-PS", + "ar-QA", "ar-SA", + "ar-SD", + "ar-SY", + "ar-TN", + "ar-YE", + "az-LATN-AZ", + "be-BY", + "bg-BG", + "bn-BD", + "bo-BT", + "bs-LATN-BA", + "ca-AD", + "cs-CZ", "da-DK", "de-AT", "de-CH", "de-DE", + "de-LI", + "de-LU", + "dv-MV", + "el-GR", + "en-AG", + "en-AI", + "en-AS", "en-AU", + "en-BB", + "en-BM", + "en-BS", + "en-BW", + "en-BZ", "en-CA", + "en-CC", + "en-CK", + "en-CX", + "en-CY", + "en-DM", + "en-FJ", + "en-FK", + "en-FM", "en-GB", - "en-ID", + "en-GD", + "en-GG", + "en-GH", + "en-GI", + "en-GM", + "en-GU", + "en-GY", "en-IE", "en-IN", - "en-MY", + "en-JE", + "en-JM", + "en-KI", + "en-KN", + "en-KY", + "en-LC", + "en-LR", + "en-LS", + "en-MH", + "en-MP", + "en-MS", + "en-MU", + "en-MW", + "en-NF", + "en-NG", + "en-NR", + "en-NU", "en-NZ", + "en-PG", "en-PH", + "en-PN", + "en-PW", + "en-SB", + "en-SC", "en-SG", + "en-SH", + "en-SL", + "en-SS", + "en-SZ", + "en-TC", + "en-TK", + "en-TO", + "en-TT", + "en-TV", + "en-TZ", + "en-UG", "en-US", + "en-VC", + "en-VG", + "en-VI", + "en-VU", + "en-WS", "en-ZA", + "en-ZM", + "en-ZW", "es-AR", + "es-BO", "es-CL", + "es-CO", + "es-CR", + "es-DO", + "es-EC", "es-ES", + "es-GQ", + "es-GT", + "es-HN", "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PR", + "es-PY", + "es-SV", "es-US", + "es-UY", + "es-VE", + "et-EE", + "fa-IR", "fi-FI", + "fo-FO", "fr-BE", + "fr-BF", + "fr-BI", + "fr-BJ", + "fr-BL", "fr-CA", + "fr-CD", + "fr-CF", + "fr-CG", "fr-CH", + "fr-CI", + "fr-CM", + "fr-DJ", "fr-FR", + "fr-GA", + "fr-GF", + "fr-GN", + "fr-GP", + "fr-HT", + "fr-KM", + "fr-MC", + "fr-MF", + "fr-MG", + "fr-ML", + "fr-MQ", + "fr-NC", + "fr-NE", + "fr-PF", + "fr-PM", + "fr-RE", + "fr-SN", + "fr-TD", + "fr-TG", + "fr-WF", + "fr-YT", + "he-IL", + "hr-HR", + "hu-HU", + "hy-AM", + "id-ID", + "is-IS", "it-IT", + "it-SM", + "it-VA", "ja-JP", + "ka-GE", + "kk-KZ", + "kl-GL", + "km-KH", "ko-KR", + "ky-KG", + "lo-LA", + "lt-LT", + "lv-LV", + "mk-MK", + "mn-MN", + "ms-BN", + "ms-MY", + "mt-MT", + "nb-NO", + "ne-NP", + "nl-AW", "nl-BE", + "nl-CW", "nl-NL", - "no-NO", + "nl-SR", + "nl-SX", "pl-PL", + "prs-AF", + "pt-AO", "pt-BR", + "pt-CV", + "pt-GW", + "pt-MZ", "pt-PT", + "pt-ST", + "ro-MD", + "ro-RO", "ru-RU", + "rw-RW", + "si-LK", + "sk-SK", + "sl-SI", + "so-SO", + "sq-AL", + "sr-LATN-RS", + "sr-ME", "sv-SE", + "sw-KE", + "tg-CYRL-TJ", + "th-TH", + "ti-ER", + "tk-TM", "tr-TR", + "uk-UA", + "ur-PK", + "uz-LATN-UZ", + "vi-VN", "zh-CN", "zh-HK", + "zh-MO", + "zh-TW" + ], + "bing videos": [ + "af-NA", + "am-ET", + "ar-AE", + "ar-BH", + "ar-DZ", + "ar-EG", + "ar-IQ", + "ar-JO", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-MR", + "ar-OM", + "ar-PS", + "ar-QA", + "ar-SA", + "ar-SD", + "ar-SY", + "ar-TN", + "ar-YE", + "az-LATN-AZ", + "be-BY", + "bg-BG", + "bn-BD", + "bo-BT", + "bs-LATN-BA", + "ca-AD", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "de-LI", + "de-LU", + "dv-MV", + "el-GR", + "en-AG", + "en-AI", + "en-AS", + "en-AU", + "en-BB", + "en-BM", + "en-BS", + "en-BW", + "en-BZ", + "en-CA", + "en-CC", + "en-CK", + "en-CX", + "en-CY", + "en-DM", + "en-FJ", + "en-FK", + "en-FM", + "en-GB", + "en-GD", + "en-GG", + "en-GH", + "en-GI", + "en-GM", + "en-GU", + "en-GY", + "en-IE", + "en-IN", + "en-JE", + "en-JM", + "en-KI", + "en-KN", + "en-KY", + "en-LC", + "en-LR", + "en-LS", + "en-MH", + "en-MP", + "en-MS", + "en-MU", + "en-MW", + "en-NF", + "en-NG", + "en-NR", + "en-NU", + "en-NZ", + "en-PG", + "en-PH", + "en-PN", + "en-PW", + "en-SB", + "en-SC", + "en-SG", + "en-SH", + "en-SL", + "en-SS", + "en-SZ", + "en-TC", + "en-TK", + "en-TO", + "en-TT", + "en-TV", + "en-TZ", + "en-UG", + "en-US", + "en-VC", + "en-VG", + "en-VI", + "en-VU", + "en-WS", + "en-ZA", + "en-ZM", + "en-ZW", + "es-AR", + "es-BO", + "es-CL", + "es-CO", + "es-CR", + "es-DO", + "es-EC", + "es-ES", + "es-GQ", + "es-GT", + "es-HN", + "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PR", + "es-PY", + "es-SV", + "es-US", + "es-UY", + "es-VE", + "et-EE", + "fa-IR", + "fi-FI", + "fo-FO", + "fr-BE", + "fr-BF", + "fr-BI", + "fr-BJ", + "fr-BL", + "fr-CA", + "fr-CD", + "fr-CF", + "fr-CG", + "fr-CH", + "fr-CI", + "fr-CM", + "fr-DJ", + "fr-FR", + "fr-GA", + "fr-GF", + "fr-GN", + "fr-GP", + "fr-HT", + "fr-KM", + "fr-MC", + "fr-MF", + "fr-MG", + "fr-ML", + "fr-MQ", + "fr-NC", + "fr-NE", + "fr-PF", + "fr-PM", + "fr-RE", + "fr-SN", + "fr-TD", + "fr-TG", + "fr-WF", + "fr-YT", + "he-IL", + "hr-HR", + "hu-HU", + "hy-AM", + "id-ID", + "is-IS", + "it-IT", + "it-SM", + "it-VA", + "ja-JP", + "ka-GE", + "kk-KZ", + "kl-GL", + "km-KH", + "ko-KR", + "ky-KG", + "lo-LA", + "lt-LT", + "lv-LV", + "mk-MK", + "mn-MN", + "ms-BN", + "ms-MY", + "mt-MT", + "nb-NO", + "ne-NP", + "nl-AW", + "nl-BE", + "nl-CW", + "nl-NL", + "nl-SR", + "nl-SX", + "pl-PL", + "prs-AF", + "pt-AO", + "pt-BR", + "pt-CV", + "pt-GW", + "pt-MZ", + "pt-PT", + "pt-ST", + "ro-MD", + "ro-RO", + "ru-RU", + "rw-RW", + "si-LK", + "sk-SK", + "sl-SI", + "so-SO", + "sq-AL", + "sr-LATN-RS", + "sr-ME", + "sv-SE", + "sw-KE", + "tg-CYRL-TJ", + "th-TH", + "ti-ER", + "tk-TM", + "tr-TR", + "uk-UA", + "ur-PK", + "uz-LATN-UZ", + "vi-VN", + "zh-CN", + "zh-HK", + "zh-MO", "zh-TW" ], "dailymotion": { @@ -24493,2927 +25269,2996 @@ "th-TH", "tr-TR" ], - "swisscows": [], "wikidata": { "ab": { - "articles": 3452, + "articles": 6031, "english_name": "Abkhazian", "name": "\u0410\u04a7\u0441\u0443\u0430" }, "ace": { - "articles": 7602, + "articles": 10323, "english_name": "Acehnese", "name": "Bahsa Ac\u00e8h" }, "ady": { - "articles": 411, + "articles": 417, "english_name": "Adyghe", "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d" }, "af": { - "articles": 68807, + "articles": 89423, "english_name": "Afrikaans", "name": "Afrikaans" }, "ak": { - "articles": 567, + "articles": 795, "english_name": "Akan", "name": "Akana" }, "als": { - "articles": 25337, + "articles": 27014, "english_name": "Alemannic", "name": "Alemannisch" }, "am": { - "articles": 14482, + "articles": 14831, "english_name": "Amharic", "name": "\u12a0\u121b\u122d\u129b" }, "an": { - "articles": 34148, + "articles": 36741, "english_name": "Aragonese", "name": "Aragon\u00e9s" }, "ang": { - "articles": 3077, + "articles": 3187, "english_name": "Anglo-Saxon", "name": "Englisc" }, "ar": { - "articles": 656175, + "articles": 1031588, "english_name": "Arabic", "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" }, "arc": { - "articles": 1628, + "articles": 1647, "english_name": "Aramaic", "name": "\u0710\u072a\u0721\u071d\u0710" }, "arz": { - "articles": 20166, + "articles": 145685, "english_name": "Egyptian Arabic", "name": "\u0645\u0635\u0631\u0649 (Ma\u1e63ri)" }, "as": { - "articles": 5141, + "articles": 6381, "english_name": "Assamese", "name": "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be" }, "ast": { - "articles": 99530, + "articles": 100187, "english_name": "Asturian", "name": "Asturianu" }, "atj": { - "articles": 626, + "articles": 1167, "english_name": "Atikamekw", "name": "Atikamekw" }, "av": { - "articles": 2309, + "articles": 2422, "english_name": "Avar", "name": "\u0410\u0432\u0430\u0440" }, "ay": { - "articles": 4402, + "articles": 4646, "english_name": "Aymara", "name": "Aymar" }, "az": { - "articles": 141672, + "articles": 155848, "english_name": "Azerbaijani", "name": "Az\u0259rbaycanca" }, "azb": { - "articles": 118928, + "articles": 183161, "english_name": "South Azerbaijani", "name": "\u062a\u06c6\u0631\u06a9\u062c\u0647" }, "ba": { - "articles": 46046, + "articles": 51161, "english_name": "Bashkir", "name": "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442" }, + "ban": { + "articles": 2258, + "english_name": "Balinese", + "name": "Bali" + }, "bar": { - "articles": 27285, + "articles": 30891, "english_name": "Bavarian", "name": "Boarisch" }, "bat-smg": { - "articles": 16427, + "articles": 16858, "english_name": "Samogitian", "name": "\u017demait\u0117\u0161ka" }, "bcl": { - "articles": 8664, + "articles": 9363, "english_name": "Central Bicolano", "name": "Bikol" }, "be": { - "articles": 160751, + "articles": 185723, "english_name": "Belarusian", "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" }, "be-tarask": { - "articles": 65655, + "articles": 69136, "english_name": "Belarusian (Tara\u0161kievica)", "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)" }, "bg": { - "articles": 248452, + "articles": 260031, "english_name": "Bulgarian", "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" }, "bh": { - "articles": 6686, - "english_name": "Bihari", + "articles": 7033, + "english_name": "Bhojpuri", "name": "\u092d\u094b\u091c\u092a\u0941\u0930\u0940" }, "bi": { - "articles": 1179, + "articles": 1219, "english_name": "Bislama", "name": "Bislama" }, "bjn": { - "articles": 1918, + "articles": 2973, "english_name": "Banjar", "name": "Bahasa Banjar" }, "bm": { - "articles": 651, + "articles": 664, "english_name": "Bambara", "name": "Bamanankan" }, "bn": { - "articles": 63523, + "articles": 82134, "english_name": "Bengali", "name": "\u09ac\u09be\u0982\u09b2\u09be" }, "bo": { - "articles": 5827, + "articles": 5887, "english_name": "Tibetan", "name": "\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51" }, "bpy": { - "articles": 25081, + "articles": 25095, "english_name": "Bishnupriya Manipuri", "name": "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0" }, "br": { - "articles": 66053, + "articles": 67768, "english_name": "Breton", "name": "Brezhoneg" }, "bs": { - "articles": 79235, + "articles": 82109, "english_name": "Bosnian", "name": "Bosanski" }, "bug": { - "articles": 14121, + "articles": 14127, "english_name": "Buginese", "name": "Basa Ugi" }, "bxr": { - "articles": 2124, + "articles": 2163, "english_name": "Buryat", "name": "\u0411\u0443\u0440\u044f\u0430\u0434" }, "ca": { - "articles": 599790, + "articles": 638512, "english_name": "Catalan", "name": "Catal\u00e0" }, "cbk-zam": { - "articles": 3000, + "articles": 3023, "english_name": "Zamboanga Chavacano", "name": "Chavacano de Zamboanga" }, "cdo": { - "articles": 14111, + "articles": 15445, "english_name": "Min Dong", "name": "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304" }, "ce": { - "articles": 208906, + "articles": 254141, "english_name": "Chechen", "name": "\u041d\u043e\u0445\u0447\u0438\u0439\u043d" }, "ceb": { - "articles": 5376890, + "articles": 5378538, "english_name": "Cebuano", "name": "Sinugboanong Binisaya" }, "ch": { - "articles": 472, + "articles": 513, "english_name": "Chamorro", "name": "Chamoru" }, "chr": { - "articles": 855, + "articles": 834, "english_name": "Cherokee", "name": "\u13e3\u13b3\u13a9" }, "chy": { - "articles": 611, + "articles": 618, "english_name": "Cheyenne", "name": "Tsets\u00eahest\u00e2hese" }, "ckb": { - "articles": 22870, + "articles": 25522, "english_name": "Sorani", "name": "Soran\u00ee / \u06a9\u0648\u0631\u062f\u06cc" }, "co": { - "articles": 5643, + "articles": 5788, "english_name": "Corsican", "name": "Corsu" }, "cr": { - "articles": 103, + "articles": 104, "english_name": "Cree", "name": "Nehiyaw" }, "crh": { - "articles": 6172, + "articles": 7046, "english_name": "Crimean Tatar", "name": "Q\u0131r\u0131mtatarca" }, "cs": { - "articles": 419392, + "articles": 447036, "english_name": "Czech", "name": "\u010ce\u0161tina" }, "csb": { - "articles": 5258, + "articles": 5329, "english_name": "Kashubian", "name": "Kasz\u00ebbsczi" }, "cu": { - "articles": 669, + "articles": 702, "english_name": "Old Church Slavonic", "name": "\u0421\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a" }, "cv": { - "articles": 41622, + "articles": 42681, "english_name": "Chuvash", "name": "\u0427\u0103\u0432\u0430\u0448" }, "cy": { - "articles": 102137, + "articles": 107176, "english_name": "Welsh", "name": "Cymraeg" }, "da": { - "articles": 242006, + "articles": 257264, "english_name": "Danish", "name": "Dansk" }, "de": { - "articles": 2256718, + "articles": 2402917, "english_name": "German", "name": "Deutsch" }, + "din": { + "articles": 122, + "english_name": "Dinka", + "name": "Thu\u0254\u014bj\u00e4\u014b" + }, "diq": { - "articles": 9107, + "articles": 13329, "english_name": "Zazaki", "name": "Zazaki" }, "dsb": { - "articles": 3210, + "articles": 3251, "english_name": "Lower Sorbian", "name": "Dolnoserbski" }, "dty": { - "articles": 2967, + "articles": 3242, "english_name": "Doteli", "name": "\u0921\u094b\u091f\u0947\u0932\u0940" }, "dv": { - "articles": 3024, + "articles": 3002, "english_name": "Divehi", "name": "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0" }, "dz": { - "articles": 218, + "articles": 222, "english_name": "Dzongkha", "name": "\u0f47\u0f7c\u0f44\u0f0b\u0f41" }, "ee": { - "articles": 350, + "articles": 358, "english_name": "Ewe", "name": "E\u028begbe" }, "el": { - "articles": 157114, + "articles": 174096, "english_name": "Greek", "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" }, "eml": { - "articles": 11866, + "articles": 12321, "english_name": "Emilian-Romagnol", "name": "Emili\u00e0n e rumagn\u00f2l" }, "en": { - "articles": 5781855, + "articles": 6023622, "english_name": "English", "name": "English" }, "eo": { - "articles": 253490, + "articles": 275593, "english_name": "Esperanto", "name": "Esperanto" }, "es": { - "articles": 1497393, + "articles": 1579723, "english_name": "Spanish", "name": "Espa\u00f1ol" }, "et": { - "articles": 185271, + "articles": 206326, "english_name": "Estonian", "name": "Eesti" }, "eu": { - "articles": 309974, + "articles": 351277, "english_name": "Basque", "name": "Euskara" }, "ext": { - "articles": 3020, + "articles": 3180, "english_name": "Extremaduran", "name": "Estreme\u00f1u" }, "fa": { - "articles": 655431, + "articles": 712079, "english_name": "Persian", "name": "\u0641\u0627\u0631\u0633\u06cc" }, "ff": { - "articles": 228, + "articles": 238, "english_name": "Fula", "name": "Fulfulde" }, "fi": { - "articles": 449407, + "articles": 479513, "english_name": "Finnish", "name": "Suomi" }, "fiu-vro": { - "articles": 5463, + "articles": 5533, "english_name": "V\u00f5ro", "name": "V\u00f5ro" }, "fj": { - "articles": 425, + "articles": 780, "english_name": "Fijian", "name": "Na Vosa Vakaviti" }, "fo": { - "articles": 12891, + "articles": 13305, "english_name": "Faroese", "name": "F\u00f8royskt" }, "fr": { - "articles": 2070378, + "articles": 2184872, "english_name": "French", "name": "Fran\u00e7ais" }, "frp": { - "articles": 3254, + "articles": 3529, "english_name": "Franco-Proven\u00e7al", "name": "Arpitan" }, "frr": { - "articles": 8460, + "articles": 10273, "english_name": "North Frisian", "name": "Nordfriisk" }, "fur": { - "articles": 3289, + "articles": 3338, "english_name": "Friulian", "name": "Furlan" }, "fy": { - "articles": 41308, + "articles": 43513, "english_name": "West Frisian", "name": "Frysk" }, "ga": { - "articles": 49639, + "articles": 52203, "english_name": "Irish", "name": "Gaeilge" }, "gag": { - "articles": 2763, + "articles": 2726, "english_name": "Gagauz", "name": "Gagauz" }, "gan": { - "articles": 6411, + "articles": 6430, "english_name": "Gan", "name": "\u8d1b\u8a9e" }, + "gcr": { + "articles": 1001, + "english_name": "Guianan Creole", + "name": "Kriy\u00f2l Gwiyannen" + }, "gd": { - "articles": 14774, + "articles": 15062, "english_name": "Scottish Gaelic", "name": "G\u00e0idhlig" }, "gl": { - "articles": 153607, + "articles": 161843, "english_name": "Galician", "name": "Galego" }, "glk": { - "articles": 5666, + "articles": 5931, "english_name": "Gilaki", "name": "\u06af\u06cc\u0644\u06a9\u06cc" }, "gn": { - "articles": 3637, + "articles": 3763, "english_name": "Guarani", "name": "Ava\u00f1e'\u1ebd" }, "gom": { - "articles": 3598, + "articles": 3723, "english_name": "Goan Konkani", "name": "\u0917\u094b\u0902\u092f\u091a\u0940 \u0915\u094b\u0902\u0915\u0923\u0940 / G\u00f5ychi Konknni" }, "gor": { - "articles": 1926, + "articles": 2542, "english_name": "Gorontalo", "name": "Hulontalo" }, "got": { - "articles": 588, + "articles": 825, "english_name": "Gothic", "name": "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a" }, "gu": { - "articles": 28289, + "articles": 28880, "english_name": "Gujarati", "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0" }, "gv": { - "articles": 4968, + "articles": 4996, "english_name": "Manx", "name": "Gaelg" }, "ha": { - "articles": 2740, + "articles": 4631, "english_name": "Hausa", "name": "Hausa / \u0647\u064e\u0648\u064f\u0633\u064e" }, "hak": { - "articles": 8894, + "articles": 9277, "english_name": "Hakka", "name": "Hak-k\u00e2-fa / \u5ba2\u5bb6\u8a71" }, "haw": { - "articles": 3234, + "articles": 3862, "english_name": "Hawaiian", "name": "Hawai`i" }, "he": { - "articles": 236237, + "articles": 259224, "english_name": "Hebrew", "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" }, "hi": { - "articles": 128996, + "articles": 136564, "english_name": "Hindi", "name": "\u0939\u093f\u0928\u094d\u0926\u0940" }, "hif": { - "articles": 9756, + "articles": 9774, "english_name": "Fiji Hindi", "name": "Fiji Hindi" }, "hr": { - "articles": 201383, + "articles": 215457, "english_name": "Croatian", "name": "Hrvatski" }, "hsb": { - "articles": 13357, + "articles": 13546, "english_name": "Upper Sorbian", "name": "Hornjoserbsce" }, "ht": { - "articles": 54219, + "articles": 57995, "english_name": "Haitian", "name": "Kr\u00e8yol ayisyen" }, "hu": { - "articles": 442291, + "articles": 465402, "english_name": "Hungarian", "name": "Magyar" }, "hy": { - "articles": 250045, + "articles": 264666, "english_name": "Armenian", "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576" }, + "hyw": { + "articles": 7830, + "english_name": "Western Armenian", + "name": "\u0531\u0580\u0565\u0582\u0574\u057f\u0561\u0570\u0561\u0575\u0565\u0580\u0567\u0576" + }, "ia": { - "articles": 21225, + "articles": 22095, "english_name": "Interlingua", "name": "Interlingua" }, "id": { - "articles": 449446, + "articles": 521569, "english_name": "Indonesian", "name": "Bahasa Indonesia" }, "ie": { - "articles": 4303, + "articles": 4723, "english_name": "Interlingue", "name": "Interlingue" }, "ig": { - "articles": 1376, + "articles": 1448, "english_name": "Igbo", "name": "Igbo" }, "ik": { - "articles": 262, + "articles": 280, "english_name": "Inupiak", "name": "I\u00f1upiak" }, "ilo": { - "articles": 11592, + "articles": 14221, "english_name": "Ilokano", "name": "Ilokano" }, "inh": { - "articles": 791, + "articles": 1225, "english_name": "Ingush", "name": "\u0413\u04cf\u0430\u043b\u0433\u04cf\u0430\u0439" }, "io": { - "articles": 28134, + "articles": 29252, "english_name": "Ido", "name": "Ido" }, "is": { - "articles": 46096, + "articles": 49128, "english_name": "Icelandic", "name": "\u00cdslenska" }, "it": { - "articles": 1491690, + "articles": 1585945, "english_name": "Italian", "name": "Italiano" }, "iu": { - "articles": 401, + "articles": 403, "english_name": "Inuktitut", "name": "\u1403\u14c4\u1483\u144e\u1450\u1466" }, "ja": { - "articles": 1134685, + "articles": 1192319, "english_name": "Japanese", "name": "\u65e5\u672c\u8a9e" }, "jam": { - "articles": 1632, + "articles": 1648, "english_name": "Jamaican Patois", "name": "Jumiekan Kryuol" }, "jbo": { - "articles": 1233, + "articles": 1251, "english_name": "Lojban", "name": "Lojban" }, "jv": { - "articles": 55104, + "articles": 57275, "english_name": "Javanese", "name": "Basa Jawa" }, "ka": { - "articles": 126147, + "articles": 135269, "english_name": "Georgian", "name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8" }, "kaa": { - "articles": 1910, + "articles": 1883, "english_name": "Karakalpak", "name": "Qaraqalpaqsha" }, "kab": { - "articles": 2860, + "articles": 4508, "english_name": "Kabyle", "name": "Taqbaylit" }, "kbd": { - "articles": 1578, + "articles": 1584, "english_name": "Kabardian Circassian", "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d (Adighabze)" }, "kbp": { - "articles": 1479, + "articles": 1603, "english_name": "Kabiye", "name": "Kab\u0269y\u025b" }, "kg": { - "articles": 1184, + "articles": 1197, "english_name": "Kongo", "name": "KiKongo" }, "ki": { - "articles": 1358, + "articles": 1368, "english_name": "Kikuyu", "name": "G\u0129k\u0169y\u0169" }, "kk": { - "articles": 223486, + "articles": 226239, "english_name": "Kazakh", "name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430" }, "kl": { - "articles": 1663, + "articles": 1669, "english_name": "Greenlandic", "name": "Kalaallisut" }, "km": { - "articles": 7105, + "articles": 7994, "english_name": "Khmer", "name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a" }, "kn": { - "articles": 24065, + "articles": 25796, "english_name": "Kannada", "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1" }, "ko": { - "articles": 438644, + "articles": 485688, "english_name": "Korean", "name": "\ud55c\uad6d\uc5b4" }, "koi": { - "articles": 3451, + "articles": 3452, "english_name": "Komi-Permyak", "name": "\u041f\u0435\u0440\u0435\u043c \u041a\u043e\u043c\u0438 (Perem Komi)" }, "krc": { - "articles": 2028, + "articles": 2037, "english_name": "Karachay-Balkar", "name": "\u041a\u044a\u0430\u0440\u0430\u0447\u0430\u0439-\u041c\u0430\u043b\u043a\u044a\u0430\u0440 (Qarachay-Malqar)" }, "ks": { - "articles": 324, + "articles": 368, "english_name": "Kashmiri", "name": "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 / \u0643\u0634\u0645\u064a\u0631\u064a" }, "ksh": { - "articles": 2842, + "articles": 2861, "english_name": "Ripuarian", "name": "Ripoarisch" }, "ku": { - "articles": 24022, + "articles": 26872, "english_name": "Kurdish", "name": "Kurd\u00ee / \u0643\u0648\u0631\u062f\u06cc" }, "kv": { - "articles": 5308, + "articles": 5333, "english_name": "Komi", "name": "\u041a\u043e\u043c\u0438" }, "kw": { - "articles": 3839, + "articles": 3939, "english_name": "Cornish", "name": "Kernewek/Karnuack" }, "ky": { - "articles": 79376, + "articles": 79759, "english_name": "Kirghiz", "name": "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430" }, "la": { - "articles": 129779, + "articles": 132249, "english_name": "Latin", "name": "Latina" }, "lad": { - "articles": 3828, + "articles": 3545, "english_name": "Ladino", "name": "Dzhudezmo" }, "lb": { - "articles": 55377, + "articles": 57817, "english_name": "Luxembourgish", "name": "L\u00ebtzebuergesch" }, "lbe": { - "articles": 1216, + "articles": 1220, "english_name": "Lak", "name": "\u041b\u0430\u043a\u043a\u0443" }, "lez": { - "articles": 3963, + "articles": 4057, "english_name": "Lezgian", "name": "\u041b\u0435\u0437\u0433\u0438 \u0447\u0406\u0430\u043b (Lezgi \u010d\u2019al)" }, "lfn": { - "articles": 3083, + "articles": 3723, "english_name": "Lingua Franca Nova", "name": "Lingua franca nova" }, "lg": { - "articles": 1155, + "articles": 1178, "english_name": "Luganda", "name": "Luganda" }, "li": { - "articles": 12316, + "articles": 12737, "english_name": "Limburgish", "name": "Limburgs" }, "lij": { - "articles": 3456, + "articles": 3682, "english_name": "Ligurian", "name": "L\u00edguru" }, "lmo": { - "articles": 38071, + "articles": 39359, "english_name": "Lombard", "name": "Lumbaart" }, "ln": { - "articles": 3049, + "articles": 3136, "english_name": "Lingala", "name": "Lingala" }, "lo": { - "articles": 3101, + "articles": 3545, "english_name": "Lao", "name": "\u0ea5\u0eb2\u0ea7" }, "lrc": { - "articles": 5357, + "articles": 5360, "english_name": "Northern Luri", "name": "\u0644\u06ca\u0631\u06cc \u0634\u0648\u0645\u0627\u0644\u06cc" }, "lt": { - "articles": 193352, + "articles": 198453, "english_name": "Lithuanian", "name": "Lietuvi\u0173" }, "ltg": { - "articles": 815, + "articles": 932, "english_name": "Latgalian", "name": "Latga\u013cu" }, "lv": { - "articles": 90266, + "articles": 100417, "english_name": "Latvian", "name": "Latvie\u0161u" }, "mai": { - "articles": 13164, + "articles": 13512, "english_name": "Maithili", "name": "\u092e\u0948\u0925\u093f\u0932\u0940" }, "map-bms": { - "articles": 13336, + "articles": 13344, "english_name": "Banyumasan", "name": "Basa Banyumasan" }, "mdf": { - "articles": 1188, + "articles": 1192, "english_name": "Moksha", "name": "\u041c\u043e\u043a\u0448\u0435\u043d\u044c (Mokshanj K\u00e4lj)" }, "mg": { - "articles": 90635, + "articles": 92711, "english_name": "Malagasy", "name": "Malagasy" }, "mhr": { - "articles": 10046, + "articles": 10108, "english_name": "Meadow Mari", "name": "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439 (Olyk Marij)" }, "mi": { - "articles": 7145, + "articles": 7159, "english_name": "Maori", "name": "M\u0101ori" }, "min": { - "articles": 222492, + "articles": 223738, "english_name": "Minangkabau", "name": "Minangkabau" }, "mk": { - "articles": 98050, + "articles": 104303, "english_name": "Macedonian", "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438" }, "ml": { - "articles": 61227, + "articles": 67743, "english_name": "Malayalam", "name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02" }, "mn": { - "articles": 18356, + "articles": 19010, "english_name": "Mongolian", "name": "\u041c\u043e\u043d\u0433\u043e\u043b" }, + "mnw": { + "articles": 470, + "english_name": "Mon", + "name": "\u1019\u1014\u103a" + }, "mr": { - "articles": 52667, + "articles": 56283, "english_name": "Marathi", "name": "\u092e\u0930\u093e\u0920\u0940" }, "mrj": { - "articles": 10269, + "articles": 10270, "english_name": "Hill Mari", "name": "\u041a\u044b\u0440\u044b\u043a \u041c\u0430\u0440\u044b (Kyryk Mary)" }, "ms": { - "articles": 323274, + "articles": 334930, "english_name": "Malay", "name": "Bahasa Melayu" }, "mt": { - "articles": 3336, + "articles": 3442, "english_name": "Maltese", "name": "Malti" }, "mwl": { - "articles": 3674, + "articles": 3783, "english_name": "Mirandese", "name": "Mirand\u00e9s" }, "my": { - "articles": 42128, + "articles": 45399, "english_name": "Burmese", "name": "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c" }, "myv": { - "articles": 5415, + "articles": 5871, "english_name": "Erzya", "name": "\u042d\u0440\u0437\u044f\u043d\u044c (Erzjanj Kelj)" }, "mzn": { - "articles": 12786, + "articles": 13127, "english_name": "Mazandarani", "name": "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a" }, "na": { - "articles": 1305, + "articles": 1309, "english_name": "Nauruan", "name": "dorerin Naoero" }, "nah": { - "articles": 6925, + "articles": 6976, "english_name": "Nahuatl", "name": "N\u0101huatl" }, "nap": { - "articles": 14576, + "articles": 14561, "english_name": "Neapolitan", "name": "Nnapulitano" }, "nds": { - "articles": 41178, + "articles": 61186, "english_name": "Low Saxon", "name": "Plattd\u00fc\u00fctsch" }, "nds-nl": { - "articles": 6812, + "articles": 6935, "english_name": "Dutch Low Saxon", "name": "Nedersaksisch" }, "ne": { - "articles": 31633, + "articles": 34031, "english_name": "Nepali", "name": "\u0928\u0947\u092a\u093e\u0932\u0940" }, "new": { - "articles": 72212, + "articles": 72233, "english_name": "Newar", "name": "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e" }, "nl": { - "articles": 1954031, + "articles": 1998535, "english_name": "Dutch", "name": "Nederlands" }, "nn": { - "articles": 141839, + "articles": 151775, "english_name": "Norwegian (Nynorsk)", "name": "Nynorsk" }, "no": { - "articles": 500849, + "articles": 529258, "english_name": "Norwegian (Bokm\u00e5l)", "name": "Norsk (Bokm\u00e5l)" }, "nov": { - "articles": 1661, + "articles": 1671, "english_name": "Novial", "name": "Novial" }, + "nqo": { + "articles": 546, + "english_name": "N\u2019Ko", + "name": "\u07d2\u07de\u07cf" + }, "nrm": { - "articles": 4029, + "articles": 4332, "english_name": "Norman", "name": "Nouormand/Normaund" }, "nso": { - "articles": 8094, + "articles": 8175, "english_name": "Northern Sotho", "name": "Sepedi" }, "nv": { - "articles": 6991, + "articles": 12264, "english_name": "Navajo", "name": "Din\u00e9 bizaad" }, "ny": { - "articles": 487, + "articles": 565, "english_name": "Chichewa", "name": "Chichewa" }, "oc": { - "articles": 85227, + "articles": 87871, "english_name": "Occitan", "name": "Occitan" }, "olo": { - "articles": 2812, + "articles": 3236, "english_name": "Livvi-Karelian", "name": "Karjalan" }, "om": { - "articles": 775, + "articles": 786, "english_name": "Oromo", "name": "Oromoo" }, "or": { - "articles": 14550, + "articles": 15579, "english_name": "Oriya", "name": "\u0b13\u0b21\u0b3c\u0b3f\u0b06" }, "os": { - "articles": 11225, + "articles": 11884, "english_name": "Ossetian", "name": "\u0418\u0440\u043e\u043d\u0430\u0443" }, "pa": { - "articles": 30886, + "articles": 33858, "english_name": "Punjabi", "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40" }, "pag": { - "articles": 2521, + "articles": 2531, "english_name": "Pangasinan", "name": "Pangasinan" }, "pam": { - "articles": 8825, + "articles": 8637, "english_name": "Kapampangan", "name": "Kapampangan" }, "pap": { - "articles": 1953, + "articles": 1941, "english_name": "Papiamentu", "name": "Papiamentu" }, "pcd": { - "articles": 4258, + "articles": 4666, "english_name": "Picard", "name": "Picard" }, "pdc": { - "articles": 1858, + "articles": 1877, "english_name": "Pennsylvania German", "name": "Deitsch" }, "pfl": { - "articles": 2502, + "articles": 2647, "english_name": "Palatinate German", "name": "P\u00e4lzisch" }, "pi": { - "articles": 2535, + "articles": 2540, "english_name": "Pali", "name": "\u092a\u093e\u0934\u093f" }, "pih": { - "articles": 681, + "articles": 796, "english_name": "Norfolk", "name": "Norfuk" }, "pl": { - "articles": 1314525, + "articles": 1386843, "english_name": "Polish", "name": "Polski" }, "pms": { - "articles": 64391, + "articles": 64598, "english_name": "Piedmontese", "name": "Piemont\u00e8is" }, "pnb": { - "articles": 47107, + "articles": 52557, "english_name": "Western Punjabi", "name": "\u0634\u0627\u06c1 \u0645\u06a9\u06be\u06cc \u067e\u0646\u062c\u0627\u0628\u06cc (Sh\u0101hmukh\u012b Pa\u00f1j\u0101b\u012b)" }, "pnt": { - "articles": 462, + "articles": 467, "english_name": "Pontic", "name": "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac" }, "ps": { - "articles": 9702, + "articles": 10997, "english_name": "Pashto", "name": "\u067e\u069a\u062a\u0648" }, "pt": { - "articles": 1014081, + "articles": 1021915, "english_name": "Portuguese", "name": "Portugu\u00eas" }, "qu": { - "articles": 20900, + "articles": 21801, "english_name": "Quechua", "name": "Runa Simi" }, "rm": { - "articles": 3564, + "articles": 3646, "english_name": "Romansh", "name": "Rumantsch" }, "rmy": { - "articles": 660, + "articles": 675, "english_name": "Romani", "name": "romani - \u0930\u094b\u092e\u093e\u0928\u0940" }, "rn": { - "articles": 609, + "articles": 615, "english_name": "Kirundi", "name": "Kirundi" }, "ro": { - "articles": 390804, + "articles": 404592, "english_name": "Romanian", "name": "Rom\u00e2n\u0103" }, "roa-rup": { - "articles": 1216, + "articles": 1225, "english_name": "Aromanian", "name": "Arm\u00e3neashce" }, "roa-tara": { - "articles": 9243, + "articles": 9249, "english_name": "Tarantino", "name": "Tarand\u00edne" }, "ru": { - "articles": 1519724, + "articles": 1600812, "english_name": "Russian", "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" }, "rue": { - "articles": 6891, + "articles": 7447, "english_name": "Rusyn", "name": "\u0420\u0443\u0441\u0438\u043d\u044c\u0441\u043a\u044b\u0439" }, "rw": { - "articles": 1822, + "articles": 1820, "english_name": "Kinyarwanda", "name": "Ikinyarwanda" }, "sa": { - "articles": 11357, + "articles": 11456, "english_name": "Sanskrit", "name": "\u0938\u0902\u0938\u094d\u0915\u0943\u0924\u092e\u094d" }, "sah": { - "articles": 11943, + "articles": 12199, "english_name": "Sakha", "name": "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430 (Saxa Tyla)" }, "sat": { - "articles": 532, + "articles": 2470, "english_name": "Santali", "name": "\u1c65\u1c5f\u1c71\u1c5b\u1c5f\u1c72\u1c64" }, "sc": { - "articles": 5907, + "articles": 6371, "english_name": "Sardinian", "name": "Sardu" }, "scn": { - "articles": 26060, + "articles": 26074, "english_name": "Sicilian", "name": "Sicilianu" }, "sco": { - "articles": 53388, + "articles": 56578, "english_name": "Scots", "name": "Scots" }, "sd": { - "articles": 11114, + "articles": 12956, "english_name": "Sindhi", "name": "\u0633\u0646\u068c\u064a\u060c \u0633\u0646\u062f\u06be\u06cc \u060c \u0938\u093f\u0928\u094d\u0927" }, "se": { - "articles": 7464, + "articles": 7612, "english_name": "Northern Sami", "name": "S\u00e1megiella" }, "sg": { - "articles": 258, + "articles": 262, "english_name": "Sango", "name": "S\u00e4ng\u00f6" }, "sh": { - "articles": 447497, + "articles": 451031, "english_name": "Serbo-Croatian", "name": "Srpskohrvatski / \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438" }, "shn": { - "articles": 3239, - "english_name": "\u107d\u1083\u1087\u101e\u1083\u1087\u1010\u1086\u1038 ", - "name": "Shan" + "articles": 6745, + "english_name": "Shan", + "name": "\u101c\u102d\u1075\u103a\u1088\u1010\u1086\u1038" }, "si": { - "articles": 14918, + "articles": 15543, "english_name": "Sinhalese", "name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd" }, "simple": { - "articles": 141947, + "articles": 155539, "english_name": "Simple English", "name": "Simple English" }, "sk": { - "articles": 228015, + "articles": 232538, "english_name": "Slovak", "name": "Sloven\u010dina" }, "sl": { - "articles": 163198, + "articles": 167090, "english_name": "Slovenian", "name": "Sloven\u0161\u010dina" }, "sm": { - "articles": 801, + "articles": 823, "english_name": "Samoan", "name": "Gagana Samoa" }, "sn": { - "articles": 4227, + "articles": 4996, "english_name": "Shona", "name": "chiShona" }, "so": { - "articles": 5530, + "articles": 5752, "english_name": "Somali", "name": "Soomaali" }, "sq": { - "articles": 75615, + "articles": 78674, "english_name": "Albanian", "name": "Shqip" }, "sr": { - "articles": 614180, + "articles": 630590, "english_name": "Serbian", "name": "\u0421\u0440\u043f\u0441\u043a\u0438 / Srpski" }, "srn": { - "articles": 1061, + "articles": 1076, "english_name": "Sranan", "name": "Sranantongo" }, "ss": { - "articles": 450, + "articles": 504, "english_name": "Swati", "name": "SiSwati" }, "st": { - "articles": 544, + "articles": 656, "english_name": "Sesotho", "name": "Sesotho" }, "stq": { - "articles": 3998, + "articles": 4017, "english_name": "Saterland Frisian", "name": "Seeltersk" }, "su": { - "articles": 39840, + "articles": 59863, "english_name": "Sundanese", "name": "Basa Sunda" }, "sv": { - "articles": 3760984, + "articles": 3738262, "english_name": "Swedish", "name": "Svenska" }, "sw": { - "articles": 47744, + "articles": 55888, "english_name": "Swahili", "name": "Kiswahili" }, "szl": { - "articles": 7812, + "articles": 51946, "english_name": "Silesian", "name": "\u015al\u016fnski" }, + "szy": { + "articles": 1748, + "english_name": "Sakizaya", + "name": "Sakizaya" + }, "ta": { - "articles": 119140, + "articles": 127284, "english_name": "Tamil", "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" }, "tcy": { - "articles": 994, + "articles": 1271, "english_name": "Tulu", "name": "\u0ca4\u0cc1\u0cb3\u0cc1" }, "te": { - "articles": 69978, + "articles": 70262, "english_name": "Telugu", "name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41" }, "tet": { - "articles": 1440, + "articles": 1475, "english_name": "Tetum", "name": "Tetun" }, "tg": { - "articles": 96078, + "articles": 100460, "english_name": "Tajik", "name": "\u0422\u043e\u04b7\u0438\u043a\u04e3" }, "th": { - "articles": 128977, + "articles": 135321, "english_name": "Thai", "name": "\u0e44\u0e17\u0e22" }, "ti": { - "articles": 168, + "articles": 202, "english_name": "Tigrinya", "name": "\u1275\u130d\u122d\u129b" }, "tk": { - "articles": 5514, + "articles": 5656, "english_name": "Turkmen", "name": "T\u00fcrkmen" }, "tl": { - "articles": 77677, + "articles": 75674, "english_name": "Tagalog", "name": "Tagalog" }, "tn": { - "articles": 640, + "articles": 710, "english_name": "Tswana", "name": "Setswana" }, "to": { - "articles": 1693, + "articles": 1738, "english_name": "Tongan", "name": "faka Tonga" }, "tpi": { - "articles": 1486, + "articles": 1608, "english_name": "Tok Pisin", "name": "Tok Pisin" }, "tr": { - "articles": 321169, + "articles": 343072, "english_name": "Turkish", "name": "T\u00fcrk\u00e7e" }, "ts": { - "articles": 583, + "articles": 683, "english_name": "Tsonga", "name": "Xitsonga" }, "tt": { - "articles": 82594, + "articles": 89002, "english_name": "Tatar", "name": "Tatar\u00e7a / \u0422\u0430\u0442\u0430\u0440\u0447\u0430" }, "tum": { - "articles": 572, + "articles": 586, "english_name": "Tumbuka", "name": "chiTumbuka" }, "tw": { - "articles": 657, + "articles": 705, "english_name": "Twi", "name": "Twi" }, "ty": { - "articles": 1199, + "articles": 1204, "english_name": "Tahitian", "name": "Reo M\u0101`ohi" }, "tyv": { - "articles": 1738, + "articles": 1987, "english_name": "Tuvan", "name": "\u0422\u044b\u0432\u0430" }, "udm": { - "articles": 4565, + "articles": 4848, "english_name": "Udmurt", "name": "\u0423\u0434\u043c\u0443\u0440\u0442 \u043a\u044b\u043b" }, "ug": { - "articles": 4104, + "articles": 4244, "english_name": "Uyghur", "name": "\u0626\u06c7\u064a\u063a\u06c7\u0631 \u062a\u0649\u0644\u0649" }, "uk": { - "articles": 878251, + "articles": 993357, "english_name": "Ukrainian", "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" }, "ur": { - "articles": 142712, + "articles": 151971, "english_name": "Urdu", "name": "\u0627\u0631\u062f\u0648" }, "uz": { - "articles": 130227, + "articles": 133433, "english_name": "Uzbek", "name": "O\u2018zbek" }, "ve": { - "articles": 265, + "articles": 368, "english_name": "Venda", "name": "Tshivenda" }, "vec": { - "articles": 11266, + "articles": 19577, "english_name": "Venetian", "name": "V\u00e8neto" }, "vep": { - "articles": 5880, + "articles": 6395, "english_name": "Vepsian", "name": "Veps\u00e4n" }, "vi": { - "articles": 1198961, + "articles": 1241042, "english_name": "Vietnamese", "name": "Ti\u1ebfng Vi\u1ec7t" }, "vls": { - "articles": 6703, + "articles": 7079, "english_name": "West Flemish", "name": "West-Vlams" }, "vo": { - "articles": 122174, + "articles": 124156, "english_name": "Volap\u00fck", "name": "Volap\u00fck" }, "wa": { - "articles": 14790, + "articles": 15627, "english_name": "Walloon", "name": "Walon" }, "war": { - "articles": 1263483, + "articles": 1263934, "english_name": "Waray-Waray", "name": "Winaray" }, "wo": { - "articles": 1177, + "articles": 1387, "english_name": "Wolof", "name": "Wolof" }, "wuu": { - "articles": 16289, + "articles": 28716, "english_name": "Wu", "name": "\u5434\u8bed" }, "xal": { - "articles": 2075, + "articles": 2082, "english_name": "Kalmyk", "name": "\u0425\u0430\u043b\u044c\u043c\u0433" }, "xh": { - "articles": 751, + "articles": 1043, "english_name": "Xhosa", "name": "isiXhosa" }, "xmf": { - "articles": 12678, + "articles": 13670, "english_name": "Mingrelian", "name": "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8 (Margaluri)" }, "yi": { - "articles": 14571, + "articles": 14999, "english_name": "Yiddish", "name": "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9" }, "yo": { - "articles": 31774, + "articles": 32321, "english_name": "Yoruba", "name": "Yor\u00f9b\u00e1" }, "za": { - "articles": 1867, + "articles": 1952, "english_name": "Zhuang", "name": "Cuengh" }, "zea": { - "articles": 4580, + "articles": 4727, "english_name": "Zeelandic", "name": "Ze\u00eauws" }, "zh": { - "articles": 1038913, + "articles": 1099382, "english_name": "Chinese", "name": "\u4e2d\u6587" }, "zh-classical": { - "articles": 8663, + "articles": 10187, "english_name": "Classical Chinese", "name": "\u53e4\u6587 / \u6587\u8a00\u6587" }, "zh-min-nan": { - "articles": 227702, + "articles": 264433, "english_name": "Min Nan", "name": "B\u00e2n-l\u00e2m-g\u00fa" }, "zh-yue": { - "articles": 70490, + "articles": 77673, "english_name": "Cantonese", "name": "\u7cb5\u8a9e" }, "zu": { - "articles": 1050, + "articles": 1382, "english_name": "Zulu", "name": "isiZulu" } }, "wikipedia": { "ab": { - "articles": 3452, + "articles": 6031, "english_name": "Abkhazian", "name": "\u0410\u04a7\u0441\u0443\u0430" }, "ace": { - "articles": 7602, + "articles": 10323, "english_name": "Acehnese", "name": "Bahsa Ac\u00e8h" }, "ady": { - "articles": 411, + "articles": 417, "english_name": "Adyghe", "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d" }, "af": { - "articles": 68807, + "articles": 89423, "english_name": "Afrikaans", "name": "Afrikaans" }, "ak": { - "articles": 567, + "articles": 795, "english_name": "Akan", "name": "Akana" }, "als": { - "articles": 25337, + "articles": 27014, "english_name": "Alemannic", "name": "Alemannisch" }, "am": { - "articles": 14482, + "articles": 14831, "english_name": "Amharic", "name": "\u12a0\u121b\u122d\u129b" }, "an": { - "articles": 34148, + "articles": 36741, "english_name": "Aragonese", "name": "Aragon\u00e9s" }, "ang": { - "articles": 3077, + "articles": 3187, "english_name": "Anglo-Saxon", "name": "Englisc" }, "ar": { - "articles": 656175, + "articles": 1031588, "english_name": "Arabic", "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" }, "arc": { - "articles": 1628, + "articles": 1647, "english_name": "Aramaic", "name": "\u0710\u072a\u0721\u071d\u0710" }, "arz": { - "articles": 20166, + "articles": 145685, "english_name": "Egyptian Arabic", "name": "\u0645\u0635\u0631\u0649 (Ma\u1e63ri)" }, "as": { - "articles": 5141, + "articles": 6381, "english_name": "Assamese", "name": "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be" }, "ast": { - "articles": 99530, + "articles": 100187, "english_name": "Asturian", "name": "Asturianu" }, "atj": { - "articles": 626, + "articles": 1167, "english_name": "Atikamekw", "name": "Atikamekw" }, "av": { - "articles": 2309, + "articles": 2422, "english_name": "Avar", "name": "\u0410\u0432\u0430\u0440" }, "ay": { - "articles": 4402, + "articles": 4646, "english_name": "Aymara", "name": "Aymar" }, "az": { - "articles": 141672, + "articles": 155848, "english_name": "Azerbaijani", "name": "Az\u0259rbaycanca" }, "azb": { - "articles": 118928, + "articles": 183161, "english_name": "South Azerbaijani", "name": "\u062a\u06c6\u0631\u06a9\u062c\u0647" }, "ba": { - "articles": 46046, + "articles": 51161, "english_name": "Bashkir", "name": "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442" }, + "ban": { + "articles": 2258, + "english_name": "Balinese", + "name": "Bali" + }, "bar": { - "articles": 27285, + "articles": 30891, "english_name": "Bavarian", "name": "Boarisch" }, "bat-smg": { - "articles": 16427, + "articles": 16858, "english_name": "Samogitian", "name": "\u017demait\u0117\u0161ka" }, "bcl": { - "articles": 8664, + "articles": 9363, "english_name": "Central Bicolano", "name": "Bikol" }, "be": { - "articles": 160751, + "articles": 185723, "english_name": "Belarusian", "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" }, "be-tarask": { - "articles": 65655, + "articles": 69136, "english_name": "Belarusian (Tara\u0161kievica)", "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)" }, "bg": { - "articles": 248452, + "articles": 260031, "english_name": "Bulgarian", "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" }, "bh": { - "articles": 6686, - "english_name": "Bihari", + "articles": 7033, + "english_name": "Bhojpuri", "name": "\u092d\u094b\u091c\u092a\u0941\u0930\u0940" }, "bi": { - "articles": 1179, + "articles": 1219, "english_name": "Bislama", "name": "Bislama" }, "bjn": { - "articles": 1918, + "articles": 2973, "english_name": "Banjar", "name": "Bahasa Banjar" }, "bm": { - "articles": 651, + "articles": 664, "english_name": "Bambara", "name": "Bamanankan" }, "bn": { - "articles": 63523, + "articles": 82134, "english_name": "Bengali", "name": "\u09ac\u09be\u0982\u09b2\u09be" }, "bo": { - "articles": 5827, + "articles": 5887, "english_name": "Tibetan", "name": "\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51" }, "bpy": { - "articles": 25081, + "articles": 25095, "english_name": "Bishnupriya Manipuri", "name": "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0" }, "br": { - "articles": 66053, + "articles": 67768, "english_name": "Breton", "name": "Brezhoneg" }, "bs": { - "articles": 79235, + "articles": 82109, "english_name": "Bosnian", "name": "Bosanski" }, "bug": { - "articles": 14121, + "articles": 14127, "english_name": "Buginese", "name": "Basa Ugi" }, "bxr": { - "articles": 2124, + "articles": 2163, "english_name": "Buryat", "name": "\u0411\u0443\u0440\u044f\u0430\u0434" }, "ca": { - "articles": 599790, + "articles": 638512, "english_name": "Catalan", "name": "Catal\u00e0" }, "cbk-zam": { - "articles": 3000, + "articles": 3023, "english_name": "Zamboanga Chavacano", "name": "Chavacano de Zamboanga" }, "cdo": { - "articles": 14111, + "articles": 15445, "english_name": "Min Dong", "name": "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304" }, "ce": { - "articles": 208906, + "articles": 254141, "english_name": "Chechen", "name": "\u041d\u043e\u0445\u0447\u0438\u0439\u043d" }, "ceb": { - "articles": 5376890, + "articles": 5378538, "english_name": "Cebuano", "name": "Sinugboanong Binisaya" }, "ch": { - "articles": 472, + "articles": 513, "english_name": "Chamorro", "name": "Chamoru" }, "chr": { - "articles": 855, + "articles": 834, "english_name": "Cherokee", "name": "\u13e3\u13b3\u13a9" }, "chy": { - "articles": 611, + "articles": 618, "english_name": "Cheyenne", "name": "Tsets\u00eahest\u00e2hese" }, "ckb": { - "articles": 22870, + "articles": 25522, "english_name": "Sorani", "name": "Soran\u00ee / \u06a9\u0648\u0631\u062f\u06cc" }, "co": { - "articles": 5643, + "articles": 5788, "english_name": "Corsican", "name": "Corsu" }, "cr": { - "articles": 103, + "articles": 104, "english_name": "Cree", "name": "Nehiyaw" }, "crh": { - "articles": 6172, + "articles": 7046, "english_name": "Crimean Tatar", "name": "Q\u0131r\u0131mtatarca" }, "cs": { - "articles": 419392, + "articles": 447036, "english_name": "Czech", "name": "\u010ce\u0161tina" }, "csb": { - "articles": 5258, + "articles": 5329, "english_name": "Kashubian", "name": "Kasz\u00ebbsczi" }, "cu": { - "articles": 669, + "articles": 702, "english_name": "Old Church Slavonic", "name": "\u0421\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a" }, "cv": { - "articles": 41622, + "articles": 42681, "english_name": "Chuvash", "name": "\u0427\u0103\u0432\u0430\u0448" }, "cy": { - "articles": 102137, + "articles": 107176, "english_name": "Welsh", "name": "Cymraeg" }, "da": { - "articles": 242006, + "articles": 257264, "english_name": "Danish", "name": "Dansk" }, "de": { - "articles": 2256718, + "articles": 2402917, "english_name": "German", "name": "Deutsch" }, + "din": { + "articles": 122, + "english_name": "Dinka", + "name": "Thu\u0254\u014bj\u00e4\u014b" + }, "diq": { - "articles": 9107, + "articles": 13329, "english_name": "Zazaki", "name": "Zazaki" }, "dsb": { - "articles": 3210, + "articles": 3251, "english_name": "Lower Sorbian", "name": "Dolnoserbski" }, "dty": { - "articles": 2967, + "articles": 3242, "english_name": "Doteli", "name": "\u0921\u094b\u091f\u0947\u0932\u0940" }, "dv": { - "articles": 3024, + "articles": 3002, "english_name": "Divehi", "name": "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0" }, "dz": { - "articles": 218, + "articles": 222, "english_name": "Dzongkha", "name": "\u0f47\u0f7c\u0f44\u0f0b\u0f41" }, "ee": { - "articles": 350, + "articles": 358, "english_name": "Ewe", "name": "E\u028begbe" }, "el": { - "articles": 157114, + "articles": 174096, "english_name": "Greek", "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" }, "eml": { - "articles": 11866, + "articles": 12321, "english_name": "Emilian-Romagnol", "name": "Emili\u00e0n e rumagn\u00f2l" }, "en": { - "articles": 5781855, + "articles": 6023622, "english_name": "English", "name": "English" }, "eo": { - "articles": 253490, + "articles": 275593, "english_name": "Esperanto", "name": "Esperanto" }, "es": { - "articles": 1497393, + "articles": 1579723, "english_name": "Spanish", "name": "Espa\u00f1ol" }, "et": { - "articles": 185271, + "articles": 206326, "english_name": "Estonian", "name": "Eesti" }, "eu": { - "articles": 309974, + "articles": 351277, "english_name": "Basque", "name": "Euskara" }, "ext": { - "articles": 3020, + "articles": 3180, "english_name": "Extremaduran", "name": "Estreme\u00f1u" }, "fa": { - "articles": 655431, + "articles": 712079, "english_name": "Persian", "name": "\u0641\u0627\u0631\u0633\u06cc" }, "ff": { - "articles": 228, + "articles": 238, "english_name": "Fula", "name": "Fulfulde" }, "fi": { - "articles": 449407, + "articles": 479513, "english_name": "Finnish", "name": "Suomi" }, "fiu-vro": { - "articles": 5463, + "articles": 5533, "english_name": "V\u00f5ro", "name": "V\u00f5ro" }, "fj": { - "articles": 425, + "articles": 780, "english_name": "Fijian", "name": "Na Vosa Vakaviti" }, "fo": { - "articles": 12891, + "articles": 13305, "english_name": "Faroese", "name": "F\u00f8royskt" }, "fr": { - "articles": 2070378, + "articles": 2184872, "english_name": "French", "name": "Fran\u00e7ais" }, "frp": { - "articles": 3254, + "articles": 3529, "english_name": "Franco-Proven\u00e7al", "name": "Arpitan" }, "frr": { - "articles": 8460, + "articles": 10273, "english_name": "North Frisian", "name": "Nordfriisk" }, "fur": { - "articles": 3289, + "articles": 3338, "english_name": "Friulian", "name": "Furlan" }, "fy": { - "articles": 41308, + "articles": 43513, "english_name": "West Frisian", "name": "Frysk" }, "ga": { - "articles": 49639, + "articles": 52203, "english_name": "Irish", "name": "Gaeilge" }, "gag": { - "articles": 2763, + "articles": 2726, "english_name": "Gagauz", "name": "Gagauz" }, "gan": { - "articles": 6411, + "articles": 6430, "english_name": "Gan", "name": "\u8d1b\u8a9e" }, + "gcr": { + "articles": 1001, + "english_name": "Guianan Creole", + "name": "Kriy\u00f2l Gwiyannen" + }, "gd": { - "articles": 14774, + "articles": 15062, "english_name": "Scottish Gaelic", "name": "G\u00e0idhlig" }, "gl": { - "articles": 153607, + "articles": 161843, "english_name": "Galician", "name": "Galego" }, "glk": { - "articles": 5666, + "articles": 5931, "english_name": "Gilaki", "name": "\u06af\u06cc\u0644\u06a9\u06cc" }, "gn": { - "articles": 3637, + "articles": 3763, "english_name": "Guarani", "name": "Ava\u00f1e'\u1ebd" }, "gom": { - "articles": 3598, + "articles": 3723, "english_name": "Goan Konkani", "name": "\u0917\u094b\u0902\u092f\u091a\u0940 \u0915\u094b\u0902\u0915\u0923\u0940 / G\u00f5ychi Konknni" }, "gor": { - "articles": 1926, + "articles": 2542, "english_name": "Gorontalo", "name": "Hulontalo" }, "got": { - "articles": 588, + "articles": 825, "english_name": "Gothic", "name": "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a" }, "gu": { - "articles": 28289, + "articles": 28880, "english_name": "Gujarati", "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0" }, "gv": { - "articles": 4968, + "articles": 4996, "english_name": "Manx", "name": "Gaelg" }, "ha": { - "articles": 2740, + "articles": 4631, "english_name": "Hausa", "name": "Hausa / \u0647\u064e\u0648\u064f\u0633\u064e" }, "hak": { - "articles": 8894, + "articles": 9277, "english_name": "Hakka", "name": "Hak-k\u00e2-fa / \u5ba2\u5bb6\u8a71" }, "haw": { - "articles": 3234, + "articles": 3862, "english_name": "Hawaiian", "name": "Hawai`i" }, "he": { - "articles": 236237, + "articles": 259224, "english_name": "Hebrew", "name": "\u05e2\u05d1\u05e8\u05d9\u05ea" }, "hi": { - "articles": 128996, + "articles": 136564, "english_name": "Hindi", "name": "\u0939\u093f\u0928\u094d\u0926\u0940" }, "hif": { - "articles": 9756, + "articles": 9774, "english_name": "Fiji Hindi", "name": "Fiji Hindi" }, "hr": { - "articles": 201383, + "articles": 215457, "english_name": "Croatian", "name": "Hrvatski" }, "hsb": { - "articles": 13357, + "articles": 13546, "english_name": "Upper Sorbian", "name": "Hornjoserbsce" }, "ht": { - "articles": 54219, + "articles": 57995, "english_name": "Haitian", "name": "Kr\u00e8yol ayisyen" }, "hu": { - "articles": 442291, + "articles": 465402, "english_name": "Hungarian", "name": "Magyar" }, "hy": { - "articles": 250045, + "articles": 264666, "english_name": "Armenian", "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576" }, + "hyw": { + "articles": 7830, + "english_name": "Western Armenian", + "name": "\u0531\u0580\u0565\u0582\u0574\u057f\u0561\u0570\u0561\u0575\u0565\u0580\u0567\u0576" + }, "ia": { - "articles": 21225, + "articles": 22095, "english_name": "Interlingua", "name": "Interlingua" }, "id": { - "articles": 449446, + "articles": 521569, "english_name": "Indonesian", "name": "Bahasa Indonesia" }, "ie": { - "articles": 4303, + "articles": 4723, "english_name": "Interlingue", "name": "Interlingue" }, "ig": { - "articles": 1376, + "articles": 1448, "english_name": "Igbo", "name": "Igbo" }, "ik": { - "articles": 262, + "articles": 280, "english_name": "Inupiak", "name": "I\u00f1upiak" }, "ilo": { - "articles": 11592, + "articles": 14221, "english_name": "Ilokano", "name": "Ilokano" }, "inh": { - "articles": 791, + "articles": 1225, "english_name": "Ingush", "name": "\u0413\u04cf\u0430\u043b\u0433\u04cf\u0430\u0439" }, "io": { - "articles": 28134, + "articles": 29252, "english_name": "Ido", "name": "Ido" }, "is": { - "articles": 46096, + "articles": 49128, "english_name": "Icelandic", "name": "\u00cdslenska" }, "it": { - "articles": 1491690, + "articles": 1585945, "english_name": "Italian", "name": "Italiano" }, "iu": { - "articles": 401, + "articles": 403, "english_name": "Inuktitut", "name": "\u1403\u14c4\u1483\u144e\u1450\u1466" }, "ja": { - "articles": 1134685, + "articles": 1192319, "english_name": "Japanese", "name": "\u65e5\u672c\u8a9e" }, "jam": { - "articles": 1632, + "articles": 1648, "english_name": "Jamaican Patois", "name": "Jumiekan Kryuol" }, "jbo": { - "articles": 1233, + "articles": 1251, "english_name": "Lojban", "name": "Lojban" }, "jv": { - "articles": 55104, + "articles": 57275, "english_name": "Javanese", "name": "Basa Jawa" }, "ka": { - "articles": 126147, + "articles": 135269, "english_name": "Georgian", "name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8" }, "kaa": { - "articles": 1910, + "articles": 1883, "english_name": "Karakalpak", "name": "Qaraqalpaqsha" }, "kab": { - "articles": 2860, + "articles": 4508, "english_name": "Kabyle", "name": "Taqbaylit" }, "kbd": { - "articles": 1578, + "articles": 1584, "english_name": "Kabardian Circassian", "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d (Adighabze)" }, "kbp": { - "articles": 1479, + "articles": 1603, "english_name": "Kabiye", "name": "Kab\u0269y\u025b" }, "kg": { - "articles": 1184, + "articles": 1197, "english_name": "Kongo", "name": "KiKongo" }, "ki": { - "articles": 1358, + "articles": 1368, "english_name": "Kikuyu", "name": "G\u0129k\u0169y\u0169" }, "kk": { - "articles": 223486, + "articles": 226239, "english_name": "Kazakh", "name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430" }, "kl": { - "articles": 1663, + "articles": 1669, "english_name": "Greenlandic", "name": "Kalaallisut" }, "km": { - "articles": 7105, + "articles": 7994, "english_name": "Khmer", "name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a" }, "kn": { - "articles": 24065, + "articles": 25796, "english_name": "Kannada", "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1" }, "ko": { - "articles": 438644, + "articles": 485688, "english_name": "Korean", "name": "\ud55c\uad6d\uc5b4" }, "koi": { - "articles": 3451, + "articles": 3452, "english_name": "Komi-Permyak", "name": "\u041f\u0435\u0440\u0435\u043c \u041a\u043e\u043c\u0438 (Perem Komi)" }, "krc": { - "articles": 2028, + "articles": 2037, "english_name": "Karachay-Balkar", "name": "\u041a\u044a\u0430\u0440\u0430\u0447\u0430\u0439-\u041c\u0430\u043b\u043a\u044a\u0430\u0440 (Qarachay-Malqar)" }, "ks": { - "articles": 324, + "articles": 368, "english_name": "Kashmiri", "name": "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 / \u0643\u0634\u0645\u064a\u0631\u064a" }, "ksh": { - "articles": 2842, + "articles": 2861, "english_name": "Ripuarian", "name": "Ripoarisch" }, "ku": { - "articles": 24022, + "articles": 26872, "english_name": "Kurdish", "name": "Kurd\u00ee / \u0643\u0648\u0631\u062f\u06cc" }, "kv": { - "articles": 5308, + "articles": 5333, "english_name": "Komi", "name": "\u041a\u043e\u043c\u0438" }, "kw": { - "articles": 3839, + "articles": 3939, "english_name": "Cornish", "name": "Kernewek/Karnuack" }, "ky": { - "articles": 79376, + "articles": 79759, "english_name": "Kirghiz", "name": "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430" }, "la": { - "articles": 129779, + "articles": 132249, "english_name": "Latin", "name": "Latina" }, "lad": { - "articles": 3828, + "articles": 3545, "english_name": "Ladino", "name": "Dzhudezmo" }, "lb": { - "articles": 55377, + "articles": 57817, "english_name": "Luxembourgish", "name": "L\u00ebtzebuergesch" }, "lbe": { - "articles": 1216, + "articles": 1220, "english_name": "Lak", "name": "\u041b\u0430\u043a\u043a\u0443" }, "lez": { - "articles": 3963, + "articles": 4057, "english_name": "Lezgian", "name": "\u041b\u0435\u0437\u0433\u0438 \u0447\u0406\u0430\u043b (Lezgi \u010d\u2019al)" }, "lfn": { - "articles": 3083, + "articles": 3723, "english_name": "Lingua Franca Nova", "name": "Lingua franca nova" }, "lg": { - "articles": 1155, + "articles": 1178, "english_name": "Luganda", "name": "Luganda" }, "li": { - "articles": 12316, + "articles": 12737, "english_name": "Limburgish", "name": "Limburgs" }, "lij": { - "articles": 3456, + "articles": 3682, "english_name": "Ligurian", "name": "L\u00edguru" }, "lmo": { - "articles": 38071, + "articles": 39359, "english_name": "Lombard", "name": "Lumbaart" }, "ln": { - "articles": 3049, + "articles": 3136, "english_name": "Lingala", "name": "Lingala" }, "lo": { - "articles": 3101, + "articles": 3545, "english_name": "Lao", "name": "\u0ea5\u0eb2\u0ea7" }, "lrc": { - "articles": 5357, + "articles": 5360, "english_name": "Northern Luri", "name": "\u0644\u06ca\u0631\u06cc \u0634\u0648\u0645\u0627\u0644\u06cc" }, "lt": { - "articles": 193352, + "articles": 198453, "english_name": "Lithuanian", "name": "Lietuvi\u0173" }, "ltg": { - "articles": 815, + "articles": 932, "english_name": "Latgalian", "name": "Latga\u013cu" }, "lv": { - "articles": 90266, + "articles": 100417, "english_name": "Latvian", "name": "Latvie\u0161u" }, "mai": { - "articles": 13164, + "articles": 13512, "english_name": "Maithili", "name": "\u092e\u0948\u0925\u093f\u0932\u0940" }, "map-bms": { - "articles": 13336, + "articles": 13344, "english_name": "Banyumasan", "name": "Basa Banyumasan" }, "mdf": { - "articles": 1188, + "articles": 1192, "english_name": "Moksha", "name": "\u041c\u043e\u043a\u0448\u0435\u043d\u044c (Mokshanj K\u00e4lj)" }, "mg": { - "articles": 90635, + "articles": 92711, "english_name": "Malagasy", "name": "Malagasy" }, "mhr": { - "articles": 10046, + "articles": 10108, "english_name": "Meadow Mari", "name": "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439 (Olyk Marij)" }, "mi": { - "articles": 7145, + "articles": 7159, "english_name": "Maori", "name": "M\u0101ori" }, "min": { - "articles": 222492, + "articles": 223738, "english_name": "Minangkabau", "name": "Minangkabau" }, "mk": { - "articles": 98050, + "articles": 104303, "english_name": "Macedonian", "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438" }, "ml": { - "articles": 61227, + "articles": 67743, "english_name": "Malayalam", "name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02" }, "mn": { - "articles": 18356, + "articles": 19010, "english_name": "Mongolian", "name": "\u041c\u043e\u043d\u0433\u043e\u043b" }, + "mnw": { + "articles": 470, + "english_name": "Mon", + "name": "\u1019\u1014\u103a" + }, "mr": { - "articles": 52667, + "articles": 56283, "english_name": "Marathi", "name": "\u092e\u0930\u093e\u0920\u0940" }, "mrj": { - "articles": 10269, + "articles": 10270, "english_name": "Hill Mari", "name": "\u041a\u044b\u0440\u044b\u043a \u041c\u0430\u0440\u044b (Kyryk Mary)" }, "ms": { - "articles": 323274, + "articles": 334930, "english_name": "Malay", "name": "Bahasa Melayu" }, "mt": { - "articles": 3336, + "articles": 3442, "english_name": "Maltese", "name": "Malti" }, "mwl": { - "articles": 3674, + "articles": 3783, "english_name": "Mirandese", "name": "Mirand\u00e9s" }, "my": { - "articles": 42128, + "articles": 45399, "english_name": "Burmese", "name": "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c" }, "myv": { - "articles": 5415, + "articles": 5871, "english_name": "Erzya", "name": "\u042d\u0440\u0437\u044f\u043d\u044c (Erzjanj Kelj)" }, "mzn": { - "articles": 12786, + "articles": 13127, "english_name": "Mazandarani", "name": "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a" }, "na": { - "articles": 1305, + "articles": 1309, "english_name": "Nauruan", "name": "dorerin Naoero" }, "nah": { - "articles": 6925, + "articles": 6976, "english_name": "Nahuatl", "name": "N\u0101huatl" }, "nap": { - "articles": 14576, + "articles": 14561, "english_name": "Neapolitan", "name": "Nnapulitano" }, "nds": { - "articles": 41178, + "articles": 61186, "english_name": "Low Saxon", "name": "Plattd\u00fc\u00fctsch" }, "nds-nl": { - "articles": 6812, + "articles": 6935, "english_name": "Dutch Low Saxon", "name": "Nedersaksisch" }, "ne": { - "articles": 31633, + "articles": 34031, "english_name": "Nepali", "name": "\u0928\u0947\u092a\u093e\u0932\u0940" }, "new": { - "articles": 72212, + "articles": 72233, "english_name": "Newar", "name": "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e" }, "nl": { - "articles": 1954031, + "articles": 1998535, "english_name": "Dutch", "name": "Nederlands" }, "nn": { - "articles": 141839, + "articles": 151775, "english_name": "Norwegian (Nynorsk)", "name": "Nynorsk" }, "no": { - "articles": 500849, + "articles": 529258, "english_name": "Norwegian (Bokm\u00e5l)", "name": "Norsk (Bokm\u00e5l)" }, "nov": { - "articles": 1661, + "articles": 1671, "english_name": "Novial", "name": "Novial" }, + "nqo": { + "articles": 546, + "english_name": "N\u2019Ko", + "name": "\u07d2\u07de\u07cf" + }, "nrm": { - "articles": 4029, + "articles": 4332, "english_name": "Norman", "name": "Nouormand/Normaund" }, "nso": { - "articles": 8094, + "articles": 8175, "english_name": "Northern Sotho", "name": "Sepedi" }, "nv": { - "articles": 6991, + "articles": 12264, "english_name": "Navajo", "name": "Din\u00e9 bizaad" }, "ny": { - "articles": 487, + "articles": 565, "english_name": "Chichewa", "name": "Chichewa" }, "oc": { - "articles": 85227, + "articles": 87871, "english_name": "Occitan", "name": "Occitan" }, "olo": { - "articles": 2812, + "articles": 3236, "english_name": "Livvi-Karelian", "name": "Karjalan" }, "om": { - "articles": 775, + "articles": 786, "english_name": "Oromo", "name": "Oromoo" }, "or": { - "articles": 14550, + "articles": 15579, "english_name": "Oriya", "name": "\u0b13\u0b21\u0b3c\u0b3f\u0b06" }, "os": { - "articles": 11225, + "articles": 11884, "english_name": "Ossetian", "name": "\u0418\u0440\u043e\u043d\u0430\u0443" }, "pa": { - "articles": 30886, + "articles": 33858, "english_name": "Punjabi", "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40" }, "pag": { - "articles": 2521, + "articles": 2531, "english_name": "Pangasinan", "name": "Pangasinan" }, "pam": { - "articles": 8825, + "articles": 8637, "english_name": "Kapampangan", "name": "Kapampangan" }, "pap": { - "articles": 1953, + "articles": 1941, "english_name": "Papiamentu", "name": "Papiamentu" }, "pcd": { - "articles": 4258, + "articles": 4666, "english_name": "Picard", "name": "Picard" }, "pdc": { - "articles": 1858, + "articles": 1877, "english_name": "Pennsylvania German", "name": "Deitsch" }, "pfl": { - "articles": 2502, + "articles": 2647, "english_name": "Palatinate German", "name": "P\u00e4lzisch" }, "pi": { - "articles": 2535, + "articles": 2540, "english_name": "Pali", "name": "\u092a\u093e\u0934\u093f" }, "pih": { - "articles": 681, + "articles": 796, "english_name": "Norfolk", "name": "Norfuk" }, "pl": { - "articles": 1314525, + "articles": 1386843, "english_name": "Polish", "name": "Polski" }, "pms": { - "articles": 64391, + "articles": 64598, "english_name": "Piedmontese", "name": "Piemont\u00e8is" }, "pnb": { - "articles": 47107, + "articles": 52557, "english_name": "Western Punjabi", "name": "\u0634\u0627\u06c1 \u0645\u06a9\u06be\u06cc \u067e\u0646\u062c\u0627\u0628\u06cc (Sh\u0101hmukh\u012b Pa\u00f1j\u0101b\u012b)" }, "pnt": { - "articles": 462, + "articles": 467, "english_name": "Pontic", "name": "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac" }, "ps": { - "articles": 9702, + "articles": 10997, "english_name": "Pashto", "name": "\u067e\u069a\u062a\u0648" }, "pt": { - "articles": 1014081, + "articles": 1021915, "english_name": "Portuguese", "name": "Portugu\u00eas" }, "qu": { - "articles": 20900, + "articles": 21801, "english_name": "Quechua", "name": "Runa Simi" }, "rm": { - "articles": 3564, + "articles": 3646, "english_name": "Romansh", "name": "Rumantsch" }, "rmy": { - "articles": 660, + "articles": 675, "english_name": "Romani", "name": "romani - \u0930\u094b\u092e\u093e\u0928\u0940" }, "rn": { - "articles": 609, + "articles": 615, "english_name": "Kirundi", "name": "Kirundi" }, "ro": { - "articles": 390804, + "articles": 404592, "english_name": "Romanian", "name": "Rom\u00e2n\u0103" }, "roa-rup": { - "articles": 1216, + "articles": 1225, "english_name": "Aromanian", "name": "Arm\u00e3neashce" }, "roa-tara": { - "articles": 9243, + "articles": 9249, "english_name": "Tarantino", "name": "Tarand\u00edne" }, "ru": { - "articles": 1519724, + "articles": 1600812, "english_name": "Russian", "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" }, "rue": { - "articles": 6891, + "articles": 7447, "english_name": "Rusyn", "name": "\u0420\u0443\u0441\u0438\u043d\u044c\u0441\u043a\u044b\u0439" }, "rw": { - "articles": 1822, + "articles": 1820, "english_name": "Kinyarwanda", "name": "Ikinyarwanda" }, "sa": { - "articles": 11357, + "articles": 11456, "english_name": "Sanskrit", "name": "\u0938\u0902\u0938\u094d\u0915\u0943\u0924\u092e\u094d" }, "sah": { - "articles": 11943, + "articles": 12199, "english_name": "Sakha", "name": "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430 (Saxa Tyla)" }, "sat": { - "articles": 532, + "articles": 2470, "english_name": "Santali", "name": "\u1c65\u1c5f\u1c71\u1c5b\u1c5f\u1c72\u1c64" }, "sc": { - "articles": 5907, + "articles": 6371, "english_name": "Sardinian", "name": "Sardu" }, "scn": { - "articles": 26060, + "articles": 26074, "english_name": "Sicilian", "name": "Sicilianu" }, "sco": { - "articles": 53388, + "articles": 56578, "english_name": "Scots", "name": "Scots" }, "sd": { - "articles": 11114, + "articles": 12956, "english_name": "Sindhi", "name": "\u0633\u0646\u068c\u064a\u060c \u0633\u0646\u062f\u06be\u06cc \u060c \u0938\u093f\u0928\u094d\u0927" }, "se": { - "articles": 7464, + "articles": 7612, "english_name": "Northern Sami", "name": "S\u00e1megiella" }, "sg": { - "articles": 258, + "articles": 262, "english_name": "Sango", "name": "S\u00e4ng\u00f6" }, "sh": { - "articles": 447497, + "articles": 451031, "english_name": "Serbo-Croatian", "name": "Srpskohrvatski / \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438" }, "shn": { - "articles": 3239, - "english_name": "\u107d\u1083\u1087\u101e\u1083\u1087\u1010\u1086\u1038 ", - "name": "Shan" + "articles": 6745, + "english_name": "Shan", + "name": "\u101c\u102d\u1075\u103a\u1088\u1010\u1086\u1038" }, "si": { - "articles": 14918, + "articles": 15543, "english_name": "Sinhalese", "name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd" }, "simple": { - "articles": 141947, + "articles": 155539, "english_name": "Simple English", "name": "Simple English" }, "sk": { - "articles": 228015, + "articles": 232538, "english_name": "Slovak", "name": "Sloven\u010dina" }, "sl": { - "articles": 163198, + "articles": 167090, "english_name": "Slovenian", "name": "Sloven\u0161\u010dina" }, "sm": { - "articles": 801, + "articles": 823, "english_name": "Samoan", "name": "Gagana Samoa" }, "sn": { - "articles": 4227, + "articles": 4996, "english_name": "Shona", "name": "chiShona" }, "so": { - "articles": 5530, + "articles": 5752, "english_name": "Somali", "name": "Soomaali" }, "sq": { - "articles": 75615, + "articles": 78674, "english_name": "Albanian", "name": "Shqip" }, "sr": { - "articles": 614180, + "articles": 630590, "english_name": "Serbian", "name": "\u0421\u0440\u043f\u0441\u043a\u0438 / Srpski" }, "srn": { - "articles": 1061, + "articles": 1076, "english_name": "Sranan", "name": "Sranantongo" }, "ss": { - "articles": 450, + "articles": 504, "english_name": "Swati", "name": "SiSwati" }, "st": { - "articles": 544, + "articles": 656, "english_name": "Sesotho", "name": "Sesotho" }, "stq": { - "articles": 3998, + "articles": 4017, "english_name": "Saterland Frisian", "name": "Seeltersk" }, "su": { - "articles": 39840, + "articles": 59863, "english_name": "Sundanese", "name": "Basa Sunda" }, "sv": { - "articles": 3760984, + "articles": 3738262, "english_name": "Swedish", "name": "Svenska" }, "sw": { - "articles": 47744, + "articles": 55888, "english_name": "Swahili", "name": "Kiswahili" }, "szl": { - "articles": 7812, + "articles": 51946, "english_name": "Silesian", "name": "\u015al\u016fnski" }, + "szy": { + "articles": 1748, + "english_name": "Sakizaya", + "name": "Sakizaya" + }, "ta": { - "articles": 119140, + "articles": 127284, "english_name": "Tamil", "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" }, "tcy": { - "articles": 994, + "articles": 1271, "english_name": "Tulu", "name": "\u0ca4\u0cc1\u0cb3\u0cc1" }, "te": { - "articles": 69978, + "articles": 70262, "english_name": "Telugu", "name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41" }, "tet": { - "articles": 1440, + "articles": 1475, "english_name": "Tetum", "name": "Tetun" }, "tg": { - "articles": 96078, + "articles": 100460, "english_name": "Tajik", "name": "\u0422\u043e\u04b7\u0438\u043a\u04e3" }, "th": { - "articles": 128977, + "articles": 135321, "english_name": "Thai", "name": "\u0e44\u0e17\u0e22" }, "ti": { - "articles": 168, + "articles": 202, "english_name": "Tigrinya", "name": "\u1275\u130d\u122d\u129b" }, "tk": { - "articles": 5514, + "articles": 5656, "english_name": "Turkmen", "name": "T\u00fcrkmen" }, "tl": { - "articles": 77677, + "articles": 75674, "english_name": "Tagalog", "name": "Tagalog" }, "tn": { - "articles": 640, + "articles": 710, "english_name": "Tswana", "name": "Setswana" }, "to": { - "articles": 1693, + "articles": 1738, "english_name": "Tongan", "name": "faka Tonga" }, "tpi": { - "articles": 1486, + "articles": 1608, "english_name": "Tok Pisin", "name": "Tok Pisin" }, "tr": { - "articles": 321169, + "articles": 343072, "english_name": "Turkish", "name": "T\u00fcrk\u00e7e" }, "ts": { - "articles": 583, + "articles": 683, "english_name": "Tsonga", "name": "Xitsonga" }, "tt": { - "articles": 82594, + "articles": 89002, "english_name": "Tatar", "name": "Tatar\u00e7a / \u0422\u0430\u0442\u0430\u0440\u0447\u0430" }, "tum": { - "articles": 572, + "articles": 586, "english_name": "Tumbuka", "name": "chiTumbuka" }, "tw": { - "articles": 657, + "articles": 705, "english_name": "Twi", "name": "Twi" }, "ty": { - "articles": 1199, + "articles": 1204, "english_name": "Tahitian", "name": "Reo M\u0101`ohi" }, "tyv": { - "articles": 1738, + "articles": 1987, "english_name": "Tuvan", "name": "\u0422\u044b\u0432\u0430" }, "udm": { - "articles": 4565, + "articles": 4848, "english_name": "Udmurt", "name": "\u0423\u0434\u043c\u0443\u0440\u0442 \u043a\u044b\u043b" }, "ug": { - "articles": 4104, + "articles": 4244, "english_name": "Uyghur", "name": "\u0626\u06c7\u064a\u063a\u06c7\u0631 \u062a\u0649\u0644\u0649" }, "uk": { - "articles": 878251, + "articles": 993357, "english_name": "Ukrainian", "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" }, "ur": { - "articles": 142712, + "articles": 151971, "english_name": "Urdu", "name": "\u0627\u0631\u062f\u0648" }, "uz": { - "articles": 130227, + "articles": 133433, "english_name": "Uzbek", "name": "O\u2018zbek" }, "ve": { - "articles": 265, + "articles": 368, "english_name": "Venda", "name": "Tshivenda" }, "vec": { - "articles": 11266, + "articles": 19577, "english_name": "Venetian", "name": "V\u00e8neto" }, "vep": { - "articles": 5880, + "articles": 6395, "english_name": "Vepsian", "name": "Veps\u00e4n" }, "vi": { - "articles": 1198961, + "articles": 1241042, "english_name": "Vietnamese", "name": "Ti\u1ebfng Vi\u1ec7t" }, "vls": { - "articles": 6703, + "articles": 7079, "english_name": "West Flemish", "name": "West-Vlams" }, "vo": { - "articles": 122174, + "articles": 124156, "english_name": "Volap\u00fck", "name": "Volap\u00fck" }, "wa": { - "articles": 14790, + "articles": 15627, "english_name": "Walloon", "name": "Walon" }, "war": { - "articles": 1263483, + "articles": 1263934, "english_name": "Waray-Waray", "name": "Winaray" }, "wo": { - "articles": 1177, + "articles": 1387, "english_name": "Wolof", "name": "Wolof" }, "wuu": { - "articles": 16289, + "articles": 28716, "english_name": "Wu", "name": "\u5434\u8bed" }, "xal": { - "articles": 2075, + "articles": 2082, "english_name": "Kalmyk", "name": "\u0425\u0430\u043b\u044c\u043c\u0433" }, "xh": { - "articles": 751, + "articles": 1043, "english_name": "Xhosa", "name": "isiXhosa" }, "xmf": { - "articles": 12678, + "articles": 13670, "english_name": "Mingrelian", "name": "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8 (Margaluri)" }, "yi": { - "articles": 14571, + "articles": 14999, "english_name": "Yiddish", "name": "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9" }, "yo": { - "articles": 31774, + "articles": 32321, "english_name": "Yoruba", "name": "Yor\u00f9b\u00e1" }, "za": { - "articles": 1867, + "articles": 1952, "english_name": "Zhuang", "name": "Cuengh" }, "zea": { - "articles": 4580, + "articles": 4727, "english_name": "Zeelandic", "name": "Ze\u00eauws" }, "zh": { - "articles": 1038913, + "articles": 1099382, "english_name": "Chinese", "name": "\u4e2d\u6587" }, "zh-classical": { - "articles": 8663, + "articles": 10187, "english_name": "Classical Chinese", "name": "\u53e4\u6587 / \u6587\u8a00\u6587" }, "zh-min-nan": { - "articles": 227702, + "articles": 264433, "english_name": "Min Nan", "name": "B\u00e2n-l\u00e2m-g\u00fa" }, "zh-yue": { - "articles": 70490, + "articles": 77673, "english_name": "Cantonese", "name": "\u7cb5\u8a9e" }, "zu": { - "articles": 1050, + "articles": 1382, "english_name": "Zulu", "name": "isiZulu" } diff --git a/searx/languages.py b/searx/languages.py index cab12454..72e1a735 100644 --- a/searx/languages.py +++ b/searx/languages.py @@ -3,9 +3,11 @@ # this file is generated automatically by utils/update_search_languages.py language_codes = ( + (u"af-NA", u"Afrikaans", u"", u"Afrikaans"), (u"ar-SA", u"العربية", u"", u"Arabic"), + (u"be-BY", u"Беларуская", u"", u"Belarusian"), (u"bg-BG", u"Български", u"", u"Bulgarian"), - (u"ca-ES", u"Català", u"", u"Catalan"), + (u"ca-AD", u"Català", u"", u"Catalan"), (u"cs-CZ", u"Čeština", u"", u"Czech"), (u"da-DK", u"Dansk", u"", u"Danish"), (u"de", u"Deutsch", u"", u"German"), @@ -17,11 +19,15 @@ language_codes = ( (u"en-AU", u"English", u"Australia", u"English"), (u"en-CA", u"English", u"Canada", u"English"), (u"en-GB", u"English", u"United Kingdom", u"English"), + (u"en-IE", u"English", u"Ireland", u"English"), (u"en-IN", u"English", u"India", u"English"), - (u"en-MY", u"English", u"Malaysia", u"English"), + (u"en-NZ", u"English", u"New Zealand", u"English"), + (u"en-PH", u"English", u"Philippines", u"English"), + (u"en-SG", u"English", u"Singapore", u"English"), (u"en-US", u"English", u"United States", u"English"), (u"es", u"Español", u"", u"Spanish"), (u"es-AR", u"Español", u"Argentina", u"Spanish"), + (u"es-CL", u"Español", u"Chile", u"Spanish"), (u"es-ES", u"Español", u"España", u"Spanish"), (u"es-MX", u"Español", u"México", u"Spanish"), (u"et-EE", u"Eesti", u"", u"Estonian"), @@ -35,6 +41,7 @@ language_codes = ( (u"he-IL", u"עברית", u"", u"Hebrew"), (u"hr-HR", u"Hrvatski", u"", u"Croatian"), (u"hu-HU", u"Magyar", u"", u"Hungarian"), + (u"hy-AM", u"Հայերեն", u"", u"Armenian"), (u"id-ID", u"Indonesia", u"", u"Indonesian"), (u"is-IS", u"Íslenska", u"", u"Icelandic"), (u"it-IT", u"Italiano", u"", u"Italian"), @@ -42,7 +49,7 @@ language_codes = ( (u"ko-KR", u"한국어", u"", u"Korean"), (u"lt-LT", u"Lietuvių", u"", u"Lithuanian"), (u"lv-LV", u"Latviešu", u"", u"Latvian"), - (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"), + (u"ms-MY", u"Melayu", u"", u"Malay"), (u"nb-NO", u"Norsk Bokmål", u"", u"Norwegian Bokmål"), (u"nl", u"Nederlands", u"", u"Dutch"), (u"nl-BE", u"Nederlands", u"België", u"Dutch"), @@ -55,8 +62,9 @@ language_codes = ( (u"ru-RU", u"Русский", u"", u"Russian"), (u"sk-SK", u"Slovenčina", u"", u"Slovak"), (u"sl-SI", u"Slovenščina", u"", u"Slovenian"), - (u"sr-RS", u"Српски", u"", u"Serbian"), + (u"sr-RS", u"Srpski", u"", u"Serbian"), (u"sv-SE", u"Svenska", u"", u"Swedish"), + (u"sw-KE", u"Kiswahili", u"", u"Swahili"), (u"th-TH", u"ไทย", u"", u"Thai"), (u"tr-TR", u"Türkçe", u"", u"Turkish"), (u"uk-UA", u"Українська", u"", u"Ukrainian"), From 1c853f9573a85d9885d3c99b7e3210c834e5e5f3 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 1 Mar 2020 11:07:59 +0100 Subject: [PATCH 172/238] bing_news: parital rollback of c89c05bc The bing_news bug (discussed in #1838) was caused by wrong language tags, which was fixed e0c99d9d / no need to change the bing_news search string. closes: https://github.com/asciimoo/searx/issues/1838 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/engines/bing.py | 2 +- searx/engines/bing_news.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/searx/engines/bing.py b/searx/engines/bing.py index c8fc4fa2..afb776ac 100644 --- a/searx/engines/bing.py +++ b/searx/engines/bing.py @@ -120,7 +120,7 @@ def _fetch_supported_languages(resp): href = eval_xpath(a, './@href')[0] match = setmkt.search(href) l_tag = match.groups()[0] - _lang, _nation = l_tag.split('-',1) + _lang, _nation = l_tag.split('-', 1) l_tag = _lang.lower() + '-' + _nation.upper() lang_tags.add(l_tag) diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py index 14fd7b99..d13be777 100644 --- a/searx/engines/bing_news.py +++ b/searx/engines/bing_news.py @@ -61,7 +61,7 @@ def _get_url(query, language, offset, time_range): else: # e.g. setmkt=de-de&setlang=de search_path = search_string.format( - query=urlencode({'q': query, 'setlang': language}), + query=urlencode({'q': query, 'setmkt': language}), offset=offset) return base_url + search_path From ad7a6e6e1022923850343b2c19e47bbd9fbad050 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 1 Mar 2020 17:28:59 +0100 Subject: [PATCH 173/238] bugfix(!biv) : bing-video do not like "older" User-Agents When selecting other languages than 'en', bing-video did not handle the language correct and gave very bad results. Since User-Agent is normaly rotated in searx, the behavior of a !biv search was unpredictable and paging was broken. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/engines/bing_videos.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/searx/engines/bing_videos.py b/searx/engines/bing_videos.py index 6e7b6d3a..f048f0d8 100644 --- a/searx/engines/bing_videos.py +++ b/searx/engines/bing_videos.py @@ -67,6 +67,10 @@ def request(query, params): if params['time_range'] in time_range_dict: params['url'] += time_range_string.format(interval=time_range_dict[params['time_range']]) + # bing videos did not like "older" versions < 70.0.1 when selectin other + # languages then 'en' .. very strange ?!?! + params['headers']['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64; rv:73.0.1) Gecko/20100101 Firefox/73.0.1' + return params From ccf3d89e8f755e839b02f18156049accc9f261ab Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Thu, 5 Mar 2020 02:49:34 +0100 Subject: [PATCH 174/238] [fix] update dead link --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index eb2c58ea..a7b75d6e 100644 --- a/README.rst +++ b/README.rst @@ -23,7 +23,7 @@ Go to the `searx-docker <https://github.com/searx/searx-docker>`__ project. Without Docker -------------- -For all of the details, follow this `step by step installation <https://asciimoo.github.io/searx/dev/install/installation.html>`__. +For all of the details, follow this `step by step installation <https://asciimoo.github.io/searx/admin/installation.html>`__. Note: the documentation needs to be updated. From 3d03fb305050a42661999b47597694616d532bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= <sitbackandwait@gmail.com> Date: Fri, 28 Feb 2020 22:32:28 +0100 Subject: [PATCH 175/238] Add new post to blog about private engines --- docs/blog/index.rst | 1 + docs/blog/private-engines.rst | 63 +++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 docs/blog/private-engines.rst diff --git a/docs/blog/index.rst b/docs/blog/index.rst index 52fa3f12..94847ad6 100644 --- a/docs/blog/index.rst +++ b/docs/blog/index.rst @@ -8,3 +8,4 @@ Blog python3 admin intro-offline + private-engines diff --git a/docs/blog/private-engines.rst b/docs/blog/private-engines.rst new file mode 100644 index 00000000..c26b3ed1 --- /dev/null +++ b/docs/blog/private-engines.rst @@ -0,0 +1,63 @@ +================================== +Limit access to your searx engines +================================== + +Administrators might find themselves wanting to limit access to some of the +enabled engines on their instances. It might be because they do not want to +expose some private information through an offline engine. Or they +would rather share engines only with their trusted friends or colleagues. + +Private engines +=============== + +To solve this issue private engines were introduced in :pull:`1823`. +A new option was added to engines named `tokens`. It expects a list +of strings. If the user making a request presents one of the tokens +of an engine, he/she is able to access information about the engine +and make search requests. + +Example configuration to restrict access to the Arch Linux Wiki engine: + +.. code:: yaml + + - name : arch linux wiki + engine : archlinux + shortcut : al + tokens : [ 'my-secret-token' ] + + +Unless a user has configured the right token, the engine is going +to be hidden from him/her. It is not going to be included in the +list of engines on the Preferences page and in the output of +`/config` REST API call. + +Tokens can be added to one's configuration on the Preferences page +under "Engine tokens". The input expects a comma separated list of +strings. + +The distribution of the tokens from the administrator to the users +is not carved in stone. As providing access to such engines +implies that the admin knows and trusts the user, we do not see +necessary to come up with a strict process. Instead, +we would like to add guidelines to the documentation of the feature. + +Next steps +========== + +Now that searx has support for both offline engines and private engines, +it is possible to add concrete engines which benefit from these features. +For example engines which search on the local host running the instance. +Be it searching your file system or querying a private database. Be creative +and come up with new solutions which fit your use case. + +Acknowledgement +=============== + +This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ . + +.. _Search and Discovery Fund: https://nlnet.nl/discovery +.. _NLnet Foundation: https://nlnet.nl/ + + +| Happy hacking. +| kvch // 2020.02.28 22:26 From 4f90fb6a9236a9699e80c249153ba372bf308cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sp=C3=BChler=20Stefan?= <git@tuxli.ch> Date: Mon, 2 Mar 2020 18:55:48 +0100 Subject: [PATCH 176/238] [Fix] Startpage ValueError on Spanish date format datetime.parser.parse() does not know the Spanish date format which leads to a ValueError. Fixes #1870 Traceback (most recent call last): File "/usr/local/searx/searx/search.py", line 160, in search_one_http_request_safe search_results = search_one_http_request(engine, query, request_params) File "/usr/local/searx/searx/search.py", line 97, in search_one_http_request return engine.response(response) File "/usr/local/searx/searx/engines/startpage.py", line 102, in response published_date = parser.parse(date_string, dayfirst=True) File "/usr/local/searx/searx-ve/lib/python3.6/site-packages/dateutil/parser/_parser.py", line 1358, in parse return DEFAULTPARSER.parse(timestr, **kwargs) File "/usr/local/searx/searx-ve/lib/python3.6/site-packages/dateutil/parser/_parser.py", line 649, in parse raise ValueError("Unknown string format:", timestr) ValueError: ('Unknown string format:', '24 Ene 2013') --- searx/engines/startpage.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py index 76567396..95373493 100644 --- a/searx/engines/startpage.py +++ b/searx/engines/startpage.py @@ -99,11 +99,14 @@ def response(resp): if re.match(r"^([1-9]|[1-2][0-9]|3[0-1]) [A-Z][a-z]{2} [0-9]{4} \.\.\. ", content): date_pos = content.find('...') + 4 date_string = content[0:date_pos - 5] - published_date = parser.parse(date_string, dayfirst=True) - # fix content string content = content[date_pos:] + try: + published_date = parser.parse(date_string, dayfirst=True) + except ValueError: + pass + # check if search result starts with something like: "5 days ago ... " elif re.match(r"^[0-9]+ days? ago \.\.\. ", content): date_pos = content.find('...') + 4 From 9bc24080bf4c24a182cf2b5616095c2f6bea5821 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Fri, 13 Mar 2020 00:43:05 +0100 Subject: [PATCH 177/238] [fix] add answers, suggestions, corrections to rss output fixes #1888 --- .../__common__/opensearch_response_rss.xml | 24 +++++++++++++++++++ searx/webapp.py | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/searx/templates/__common__/opensearch_response_rss.xml b/searx/templates/__common__/opensearch_response_rss.xml index 32c42e7c..3781dd87 100644 --- a/searx/templates/__common__/opensearch_response_rss.xml +++ b/searx/templates/__common__/opensearch_response_rss.xml @@ -25,5 +25,29 @@ {% if r.pubdate %}<pubDate>{{ r.pubdate }}</pubDate>{% endif %} </item> {% endfor %} + {% if answers %} + {% for a in answers %} + <item> + <title>{{ a }}</title> + <type>answer</type> + </item> + {% endfor %} + {% endif %} + {% if corrections %} + {% for a in corrections %} + <item> + <title>{{ a }}</title> + <type>correction</type> + </item> + {% endfor %} + {% endif %} + {% if suggestions %} + {% for a in suggestions %} + <item> + <title>{{ a }}</title> + <type>suggestion</type> + </item> + {% endfor %} + {% endif %} </channel> </rss> diff --git a/searx/webapp.py b/searx/webapp.py index b661e39d..da2bf34a 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -637,9 +637,13 @@ def index(): response.headers.add('Content-Disposition', cont_disp) return response elif output_format == 'rss': + print(results) response_rss = render( 'opensearch_response_rss.xml', results=results, + answers=result_container.answers, + corrections=result_container.corrections, + suggestions=result_container.suggestions, q=request.form['q'], number_of_results=number_of_results, base_url=get_base_url(), From 018b6818419a1c3044b7d7244b55a62779063071 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Fri, 13 Mar 2020 00:50:19 +0100 Subject: [PATCH 178/238] [fix] add answers, suggestions, corrections to csv output fixes #1888 --- searx/webapp.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/searx/webapp.py b/searx/webapp.py index da2bf34a..49129d14 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -626,10 +626,20 @@ def index(): mimetype='application/json') elif output_format == 'csv': csv = UnicodeWriter(StringIO()) - keys = ('title', 'url', 'content', 'host', 'engine', 'score') + keys = ('title', 'url', 'content', 'host', 'engine', 'score', 'type') csv.writerow(keys) for row in results: row['host'] = row['parsed_url'].netloc + row['type'] = 'result' + csv.writerow([row.get(key, '') for key in keys]) + for a in result_container.answers: + row = {'title': a, 'type': 'answer'} + csv.writerow([row.get(key, '') for key in keys]) + for a in result_container.suggestions: + row = {'title': a, 'type': 'suggestion'} + csv.writerow([row.get(key, '') for key in keys]) + for a in result_container.corrections: + row = {'title': a, 'type': 'correction'} csv.writerow([row.get(key, '') for key in keys]) csv.stream.seek(0) response = Response(csv.stream.read(), mimetype='application/csv') From 58a630308a95f886db9de19d562e11890ac35e07 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Fri, 13 Mar 2020 00:57:01 +0100 Subject: [PATCH 179/238] [fix] convert query to string to produce valid filename for csv output --- searx/webapp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/webapp.py b/searx/webapp.py index 49129d14..0c5ed457 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -643,7 +643,7 @@ def index(): csv.writerow([row.get(key, '') for key in keys]) csv.stream.seek(0) response = Response(csv.stream.read(), mimetype='application/csv') - cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query) + cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query.decode('utf-8')) response.headers.add('Content-Disposition', cont_disp) return response elif output_format == 'rss': From 8e727ac77f5db59c1b772d9fd7603b519badb35a Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Fri, 13 Mar 2020 01:05:02 +0100 Subject: [PATCH 180/238] [fix] update csv unit test --- tests/unit/test_webapp.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py index 72ace485..f31332fa 100644 --- a/tests/unit/test_webapp.py +++ b/tests/unit/test_webapp.py @@ -99,9 +99,9 @@ class ViewsTestCase(SearxTestCase): result = self.app.post('/', data={'q': 'test', 'format': 'csv'}) self.assertEqual( - b'title,url,content,host,engine,score\r\n' - b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,\r\n' # noqa - b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,\r\n', # noqa + b'title,url,content,host,engine,score,type\r\n' + b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,,result\r\n' # noqa + b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,,result\r\n', # noqa result.data ) From baca55c94e002abbdeb428b31ab92f558195adda Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Mon, 16 Mar 2020 00:22:15 +0100 Subject: [PATCH 181/238] [fix] handle weights in accept language parsing - fixes w3ms en;q=1.0 --- searx/webapp.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/searx/webapp.py b/searx/webapp.py index 0c5ed457..cfb55251 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -178,9 +178,12 @@ flask_babel.get_translations = _get_translations def _get_browser_language(request, lang_list): for lang in request.headers.get("Accept-Language", "en").split(","): + if ';' in lang: + lang = lang.split(';')[0] locale = match_language(lang, lang_list, fallback=None) if locale is not None: return locale + return settings['search']['default_lang'] or 'en' @babel.localeselector From 822aee94a2e50923252faf7ae11b4b03017c1a1a Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Mon, 16 Mar 2020 00:22:38 +0100 Subject: [PATCH 182/238] [fix] remove debug print --- searx/webapp.py | 1 - 1 file changed, 1 deletion(-) diff --git a/searx/webapp.py b/searx/webapp.py index cfb55251..b3928921 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -650,7 +650,6 @@ def index(): response.headers.add('Content-Disposition', cont_disp) return response elif output_format == 'rss': - print(results) response_rss = render( 'opensearch_response_rss.xml', results=results, From 2621c24cc7992a7c6968d5ce389364c3bf4cc7e2 Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Mon, 23 Mar 2020 12:41:02 +0100 Subject: [PATCH 183/238] [enh] add clear search button to oscar theme - fixes #454 --- searx/templates/oscar/search.html | 1 + searx/templates/oscar/search_full.html | 1 + 2 files changed, 2 insertions(+) diff --git a/searx/templates/oscar/search.html b/searx/templates/oscar/search.html index cad9eca8..9978801c 100644 --- a/searx/templates/oscar/search.html +++ b/searx/templates/oscar/search.html @@ -6,6 +6,7 @@ <input type="search" name="q" class="form-control" id="q" placeholder="{{ _('Search for...') }}" aria-label="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}" accesskey="s"> <span class="input-group-btn"> <button type="submit" class="btn btn-default" aria-label="{{ _('Start search') }}"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="hidden active_if_nojs">{{ _('Start search') }}</span></button> + <button type="reset" class="btn btn-default" aria-label="{{ _('Clear search') }}"><span class="hide_if_nojs">{{ icon('remove') }}</span><span class="hidden active_if_nojs">{{ _('Clear') }}</span></button> </span> </div> </div> diff --git a/searx/templates/oscar/search_full.html b/searx/templates/oscar/search_full.html index 65646317..ea821dc4 100644 --- a/searx/templates/oscar/search_full.html +++ b/searx/templates/oscar/search_full.html @@ -9,6 +9,7 @@ <input type="search" name="q" class="form-control input-lg autofocus" id="q" placeholder="{{ _('Search for...') }}" aria-label="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}" accesskey="s"> <span class="input-group-btn"> <button type="submit" class="btn btn-default input-lg" aria-label="{{ _('Start search') }}"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="hidden active_if_nojs">{{ _('Start search') }}</span></button> + <button type="reset" class="btn btn-default input-lg" aria-label="{{ _('Clear search') }}"><span class="hide_if_nojs">{{ icon('remove') }}</span><span class="hidden active_if_nojs">{{ _('Clear') }}</span></button> </span> </div> <div class="col-md-8 col-md-offset-2 advanced"> From 65cae857354a5268253e40556153e994fa747e3d Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Mon, 23 Mar 2020 13:05:19 +0100 Subject: [PATCH 184/238] [fix] load new page with infinite scroll if there is no scrollbar - fixes #759 --- searx/static/plugins/js/infinite_scroll.js | 50 ++++++++++++++-------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js index db84a690..9930880e 100644 --- a/searx/static/plugins/js/infinite_scroll.js +++ b/searx/static/plugins/js/infinite_scroll.js @@ -1,24 +1,40 @@ +function hasScrollbar() { + var root = document.compatMode=='BackCompat'? document.body : document.documentElement; + return root.scrollHeight>root.clientHeight; +} + +function loadNextPage() { + var formData = $('#pagination form:last').serialize(); + if (formData) { + $('#pagination').html('<div class="loading-spinner"></div>'); + $.ajax({ + type: "POST", + url: './', + data: formData, + dataType: 'html', + success: function(data) { + var body = $(data); + $('#pagination').remove(); + $('#main_results').append('<hr/>'); + $('#main_results').append(body.find('.result')); + $('#main_results').append(body.find('#pagination')); + if(!hasScrollbar()) { + loadNextPage(); + } + } + }); + } +} + $(document).ready(function() { var win = $(window); + if(!hasScrollbar()) { + loadNextPage(); + } win.scroll(function() { + $("#pagination button").css("visibility", "hidden"); if ($(document).height() - win.height() - win.scrollTop() < 150) { - var formData = $('#pagination form:last').serialize(); - if (formData) { - $('#pagination').html('<div class="loading-spinner"></div>'); - $.ajax({ - type: "POST", - url: './', - data: formData, - dataType: 'html', - success: function(data) { - var body = $(data); - $('#pagination').remove(); - $('#main_results').append('<hr/>'); - $('#main_results').append(body.find('.result')); - $('#main_results').append(body.find('#pagination')); - } - }); - } + loadNextPage(); } }); }); From 9a2f26d915ee05d933a18c31bca2121658aa7ffd Mon Sep 17 00:00:00 2001 From: Adam Tauber <asciimoo@gmail.com> Date: Mon, 23 Mar 2020 14:01:33 +0100 Subject: [PATCH 185/238] [enh] submit search on suggestion select - closes #807 --- searx/static/themes/oscar/js/searx.js | 3 +++ searx/static/themes/oscar/js/searx.min.js | 4 ++-- searx/static/themes/oscar/js/searx_src/autocompleter.js | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/searx/static/themes/oscar/js/searx.js b/searx/static/themes/oscar/js/searx.js index 927aeb42..9138576f 100644 --- a/searx/static/themes/oscar/js/searx.js +++ b/searx/static/themes/oscar/js/searx.js @@ -86,6 +86,9 @@ $(document).ready(function(){ }, source: searx.searchResults.ttAdapter() }); + $('#q').bind('typeahead:selected', function(ev, suggestion) { + $("#search_form").submit(); + }); } }); ;/** diff --git a/searx/static/themes/oscar/js/searx.min.js b/searx/static/themes/oscar/js/searx.min.js index 354d9f2f..4c01dca9 100644 --- a/searx/static/themes/oscar/js/searx.min.js +++ b/searx/static/themes/oscar/js/searx.min.js @@ -1,2 +1,2 @@ -/*! oscar/searx.min.js | 06-08-2019 | https://github.com/asciimoo/searx */ -requirejs.config({baseUrl:"./static/themes/oscar/js",paths:{app:"../app"}}),window.searx=function(a){"use strict";var b=a.currentScript||function(){var b=a.getElementsByTagName("script");return b[b.length-1]}();return{autocompleter:"true"===b.getAttribute("data-autocompleter"),method:b.getAttribute("data-method")}}(document),searx.autocompleter&&(searx.searchResults=new Bloodhound({datumTokenizer:Bloodhound.tokenizers.obj.whitespace("value"),queryTokenizer:Bloodhound.tokenizers.whitespace,remote:"./autocompleter?q=%QUERY"}),searx.searchResults.initialize()),$(document).ready(function(){searx.autocompleter&&$("#q").typeahead(null,{name:"search-results",displayKey:function(a){return a},source:searx.searchResults.ttAdapter()})}),$(document).ready(function(){$("#q.autofocus").focus(),$(".select-all-on-click").click(function(){$(this).select()}),$(".btn-collapse").click(function(){var a=$(this).data("btn-text-collapsed"),b=$(this).data("btn-text-not-collapsed");""!==a&&""!==b&&($(this).hasClass("collapsed")?new_html=$(this).html().replace(a,b):new_html=$(this).html().replace(b,a),$(this).html(new_html))}),$(".btn-toggle .btn").click(function(){var a="btn-"+$(this).data("btn-class"),b=$(this).data("btn-label-default"),c=$(this).data("btn-label-toggled");""!==c&&($(this).hasClass("btn-default")?new_html=$(this).html().replace(b,c):new_html=$(this).html().replace(c,b),$(this).html(new_html)),$(this).toggleClass(a),$(this).toggleClass("btn-default")}),$(".media-loader").click(function(){var a=$(this).data("target"),b=$(a+" > iframe"),c=b.attr("src");void 0!==c&&!1!==c||b.attr("src",b.data("src"))}),$(".btn-sm").dblclick(function(){var a="btn-"+$(this).data("btn-class");$(this).hasClass("btn-default")?($(".btn-sm > input").attr("checked","checked"),$(".btn-sm > input").prop("checked",!0),$(".btn-sm").addClass(a),$(".btn-sm").addClass("active"),$(".btn-sm").removeClass("btn-default")):($(".btn-sm > input").attr("checked",""),$(".btn-sm > input").removeAttr("checked"),$(".btn-sm > input").checked=!1,$(".btn-sm").removeClass(a),$(".btn-sm").removeClass("active"),$(".btn-sm").addClass("btn-default"))})}),$(document).ready(function(){$(".searx_overpass_request").on("click",function(a){var b="https://overpass-api.de/api/interpreter?data=",c=b+"[out:json][timeout:25];(",d=");out meta;",e=$(this).data("osm-id"),f=$(this).data("osm-type"),g=$(this).data("result-table"),h="#"+$(this).data("result-table-loadicon"),i=["addr:city","addr:country","addr:housenumber","addr:postcode","addr:street"];if(e&&f&&g){g="#"+g;var j=null;switch(f){case"node":j=c+"node("+e+");"+d;break;case"way":j=c+"way("+e+");"+d;break;case"relation":j=c+"relation("+e+");"+d}if(j){$.ajax(j).done(function(a){if(a&&a.elements&&a.elements[0]){var b=a.elements[0],c=$(g).html();for(var d in b.tags)if(null===b.tags.name||-1==i.indexOf(d)){switch(c+="<tr><td>"+d+"</td><td>",d){case"phone":case"fax":c+='<a href="tel:'+b.tags[d].replace(/ /g,"")+'">'+b.tags[d]+"</a>";break;case"email":c+='<a href="mailto:'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"website":case"url":c+='<a href="'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikidata":c+='<a href="https://www.wikidata.org/wiki/'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikipedia":if(-1!=b.tags[d].indexOf(":")){c+='<a href="https://'+b.tags[d].substring(0,b.tags[d].indexOf(":"))+".wikipedia.org/wiki/"+b.tags[d].substring(b.tags[d].indexOf(":")+1)+'">'+b.tags[d]+"</a>";break}default:c+=b.tags[d]}c+="</td></tr>"}$(g).html(c),$(g).removeClass("hidden"),$(h).addClass("hidden")}}).fail(function(){$(h).html($(h).html()+'<p class="text-muted">could not load data!</p>')})}}$(this).off(a)}),$(".searx_init_map").on("click",function(a){var b=$(this).data("leaflet-target"),c=$(this).data("map-lon"),d=$(this).data("map-lat"),e=$(this).data("map-zoom"),f=$(this).data("map-boundingbox"),g=$(this).data("map-geojson");require(["leaflet-0.7.3.min"],function(a){f&&(southWest=L.latLng(f[0],f[2]),northEast=L.latLng(f[1],f[3]),map_bounds=L.latLngBounds(southWest,northEast)),L.Icon.Default.imagePath="./static/themes/oscar/img/map";var h=L.map(b),i="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",j='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',k=new L.TileLayer(i,{minZoom:1,maxZoom:19,attribution:j}),l="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",m='Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';new L.TileLayer(l,{minZoom:1,maxZoom:19,attribution:m});map_bounds?setTimeout(function(){h.fitBounds(map_bounds,{maxZoom:17})},0):c&&d&&(e?h.setView(new L.LatLng(d,c),e):h.setView(new L.LatLng(d,c),8)),h.addLayer(k);var n={"OSM Mapnik":k};L.control.layers(n).addTo(h),g&&L.geoJson(g).addTo(h)}),$(this).off(a)})}); \ No newline at end of file +/*! oscar/searx.min.js | 23-03-2020 | https://github.com/asciimoo/searx */ +requirejs.config({baseUrl:"./static/themes/oscar/js",paths:{app:"../app"}}),window.searx=function(a){"use strict";var b=a.currentScript||function(){var b=a.getElementsByTagName("script");return b[b.length-1]}();return{autocompleter:"true"===b.getAttribute("data-autocompleter"),method:b.getAttribute("data-method")}}(document),searx.autocompleter&&(searx.searchResults=new Bloodhound({datumTokenizer:Bloodhound.tokenizers.obj.whitespace("value"),queryTokenizer:Bloodhound.tokenizers.whitespace,remote:"./autocompleter?q=%QUERY"}),searx.searchResults.initialize()),$(document).ready(function(){searx.autocompleter&&($("#q").typeahead(null,{name:"search-results",displayKey:function(a){return a},source:searx.searchResults.ttAdapter()}),$("#q").bind("typeahead:selected",function(a,b){$("#search_form").submit()}))}),$(document).ready(function(){$("#q.autofocus").focus(),$(".select-all-on-click").click(function(){$(this).select()}),$(".btn-collapse").click(function(){var a=$(this).data("btn-text-collapsed"),b=$(this).data("btn-text-not-collapsed");""!==a&&""!==b&&($(this).hasClass("collapsed")?new_html=$(this).html().replace(a,b):new_html=$(this).html().replace(b,a),$(this).html(new_html))}),$(".btn-toggle .btn").click(function(){var a="btn-"+$(this).data("btn-class"),b=$(this).data("btn-label-default"),c=$(this).data("btn-label-toggled");""!==c&&($(this).hasClass("btn-default")?new_html=$(this).html().replace(b,c):new_html=$(this).html().replace(c,b),$(this).html(new_html)),$(this).toggleClass(a),$(this).toggleClass("btn-default")}),$(".media-loader").click(function(){var a=$(this).data("target"),b=$(a+" > iframe"),c=b.attr("src");void 0!==c&&c!==!1||b.attr("src",b.data("src"))}),$(".btn-sm").dblclick(function(){var a="btn-"+$(this).data("btn-class");$(this).hasClass("btn-default")?($(".btn-sm > input").attr("checked","checked"),$(".btn-sm > input").prop("checked",!0),$(".btn-sm").addClass(a),$(".btn-sm").addClass("active"),$(".btn-sm").removeClass("btn-default")):($(".btn-sm > input").attr("checked",""),$(".btn-sm > input").removeAttr("checked"),$(".btn-sm > input").checked=!1,$(".btn-sm").removeClass(a),$(".btn-sm").removeClass("active"),$(".btn-sm").addClass("btn-default"))})}),$(document).ready(function(){$(".searx_overpass_request").on("click",function(a){var b="https://overpass-api.de/api/interpreter?data=",c=b+"[out:json][timeout:25];(",d=");out meta;",e=$(this).data("osm-id"),f=$(this).data("osm-type"),g=$(this).data("result-table"),h="#"+$(this).data("result-table-loadicon"),i=["addr:city","addr:country","addr:housenumber","addr:postcode","addr:street"];if(e&&f&&g){g="#"+g;var j=null;switch(f){case"node":j=c+"node("+e+");"+d;break;case"way":j=c+"way("+e+");"+d;break;case"relation":j=c+"relation("+e+");"+d}if(j){$.ajax(j).done(function(a){if(a&&a.elements&&a.elements[0]){var b=a.elements[0],c=$(g).html();for(var d in b.tags)if(null===b.tags.name||i.indexOf(d)==-1){switch(c+="<tr><td>"+d+"</td><td>",d){case"phone":case"fax":c+='<a href="tel:'+b.tags[d].replace(/ /g,"")+'">'+b.tags[d]+"</a>";break;case"email":c+='<a href="mailto:'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"website":case"url":c+='<a href="'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikidata":c+='<a href="https://www.wikidata.org/wiki/'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikipedia":if(b.tags[d].indexOf(":")!=-1){c+='<a href="https://'+b.tags[d].substring(0,b.tags[d].indexOf(":"))+".wikipedia.org/wiki/"+b.tags[d].substring(b.tags[d].indexOf(":")+1)+'">'+b.tags[d]+"</a>";break}default:c+=b.tags[d]}c+="</td></tr>"}$(g).html(c),$(g).removeClass("hidden"),$(h).addClass("hidden")}}).fail(function(){$(h).html($(h).html()+'<p class="text-muted">could not load data!</p>')})}}$(this).off(a)}),$(".searx_init_map").on("click",function(a){var b=$(this).data("leaflet-target"),c=$(this).data("map-lon"),d=$(this).data("map-lat"),e=$(this).data("map-zoom"),f=$(this).data("map-boundingbox"),g=$(this).data("map-geojson");require(["leaflet-0.7.3.min"],function(a){f&&(southWest=L.latLng(f[0],f[2]),northEast=L.latLng(f[1],f[3]),map_bounds=L.latLngBounds(southWest,northEast)),L.Icon.Default.imagePath="./static/themes/oscar/img/map";var h=L.map(b),i="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",j='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',k=new L.TileLayer(i,{minZoom:1,maxZoom:19,attribution:j}),l="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",m='Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';new L.TileLayer(l,{minZoom:1,maxZoom:19,attribution:m});map_bounds?setTimeout(function(){h.fitBounds(map_bounds,{maxZoom:17})},0):c&&d&&(e?h.setView(new L.LatLng(d,c),e):h.setView(new L.LatLng(d,c),8)),h.addLayer(k);var n={"OSM Mapnik":k};L.control.layers(n).addTo(h),g&&L.geoJson(g).addTo(h)}),$(this).off(a)})}); \ No newline at end of file diff --git a/searx/static/themes/oscar/js/searx_src/autocompleter.js b/searx/static/themes/oscar/js/searx_src/autocompleter.js index 0907f8e3..985be2c7 100644 --- a/searx/static/themes/oscar/js/searx_src/autocompleter.js +++ b/searx/static/themes/oscar/js/searx_src/autocompleter.js @@ -33,5 +33,8 @@ $(document).ready(function(){ }, source: searx.searchResults.ttAdapter() }); + $('#q').bind('typeahead:selected', function(ev, suggestion) { + $("#search_form").submit(); + }); } }); From 04c687403e21f883f9614e6a24df9ec450cfc111 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 11:49:33 +0100 Subject: [PATCH 186/238] [fix] brands: add variables from build env to jinja templating We have some variables in the build environment which are also needed in the templating process. Theses variables are relavant if one creates a fork with its own branding. We treat these variables under the term 'brands'. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 13 ++++++++++--- searx/templates/__common__/about.html | 12 ++++++------ searx/templates/courgette/github_ribbon.html | 4 ++-- searx/templates/legacy/github_ribbon.html | 2 +- searx/templates/oscar/base.html | 8 ++++---- searx/templates/simple/base.html | 6 +++--- searx/webapp.py | 3 +++ 7 files changed, 29 insertions(+), 19 deletions(-) mode change 100644 => 100755 searx/webapp.py diff --git a/Makefile b/Makefile index 5a47129e..3b2d499e 100644 --- a/Makefile +++ b/Makefile @@ -71,15 +71,22 @@ $(GH_PAGES):: # update project files # -------------------- -PHONY += project engines-languages +PHONY += project engines-languages searx.brand -project: searx/data/engines_languages.json +project: searx/data/engines_languages.json searx.brand -searx/data/engines_languages.json: pyenvinstall +engines-languages: pyenvinstall $(PY_ENV_ACT); python utils/fetch_languages.py mv engines_languages.json searx/data/engines_languages.json mv languages.py searx/languages.py +searx.brand: + $(Q)echo "build searx/brand.py" + $(Q)echo "GIT_URL = '$(GIT_URL)'" > searx/brand.py + $(Q)echo "SEARX_URL = '$(SEARX_URL)'" >> searx/brand.py + $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py + $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py + # test # ---- diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html index ff86ddd2..d8e1335d 100644 --- a/searx/templates/__common__/about.html +++ b/searx/templates/__common__/about.html @@ -7,7 +7,7 @@ <ul> <li>searx may not offer you as personalised results as Google, but it doesn't generate a profile about you</li> <li>searx doesn't care about what you search for, never shares anything with a third party, and it can't be used to compromise you</li> - <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="https://github.com/asciimoo/searx">github</a></li> + <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="{{ brand.GIT_URL }}">github</a></li> </ul> <p>If you do care about privacy, want to be a conscious user, or otherwise believe in digital freedom, make searx your default search engine or run it on your own server</p> @@ -22,14 +22,14 @@ Searx can be added to your browser's search bar; moreover, it can be set as the <h2>How can I make it my own?</h2> -<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="https://searx.space/">list</a> to help other people reclaim their privacy and make the Internet freer! +<p>Searx appreciates your concern regarding logs, so take the <a href="{{ brand.GIT_URL }}">code</a> and run it yourself! <br />Add your Searx to this <a href="{{ brand.SEARX_URL }}">list</a> to help other people reclaim their privacy and make the Internet freer! <br />The more decentralized the Internet is, the more freedom we have!</p> <h2>More about searx</h2> <ul> - <li><a href="https://github.com/asciimoo/searx">github</a></li> + <li><a href="{{ brand.GIT_URL }}">github</a></li> <li><a href="https://www.ohloh.net/p/searx/">ohloh</a></li> <li><a href="https://twitter.com/Searx_engine">twitter</a></li> <li>IRC: #searx @ freenode (<a href="https://kiwiirc.com/client/irc.freenode.com/searx">webclient</a>)</li> @@ -48,13 +48,13 @@ Searx can be added to your browser's search bar; moreover, it can be set as the <h3>New engines?</h3> <ul> - <li>Edit your <a href="https://raw.github.com/asciimoo/searx/master/searx/settings.yml">settings.yml</a></li> - <li>Create your custom engine module, check the <a href="https://github.com/asciimoo/searx/blob/master/examples/basic_engine.py">example engine</a></li> + <li>Edit your <a href="{{ brand.GIT_URL }}/blob/master/searx/settings.yml">settings.yml</a></li> + <li>Create your custom engine module, check the <a href="{{ brand.GIT_URL }}/blob/master/examples/basic_engine.py">example engine</a></li> </ul> <p>Don't forget to restart searx after config edit!</p> <h3>Installation/WSGI support?</h3> -<p>See the <a href="https://github.com/asciimoo/searx/wiki/Installation">installation and setup</a> wiki page</p> +<p>See the <a href="{{ brand.DOCS_URL }}/admin/installation.html#uwsgi">installation and uwsgi setup</a></p> <h3>How to debug engines?</h3> <p><a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.</p> diff --git a/searx/templates/courgette/github_ribbon.html b/searx/templates/courgette/github_ribbon.html index 67c6e678..f6eaa123 100644 --- a/searx/templates/courgette/github_ribbon.html +++ b/searx/templates/courgette/github_ribbon.html @@ -1,3 +1,3 @@ -<a href="https://github.com/asciimoo/searx" class="github"> +<a href="{{ brand.GIT_URL }}" class="github"> <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/> -</a> \ No newline at end of file +</a> diff --git a/searx/templates/legacy/github_ribbon.html b/searx/templates/legacy/github_ribbon.html index bdd9cf18..f6eaa123 100644 --- a/searx/templates/legacy/github_ribbon.html +++ b/searx/templates/legacy/github_ribbon.html @@ -1,3 +1,3 @@ -<a href="https://github.com/asciimoo/searx" class="github"> +<a href="{{ brand.GIT_URL }}" class="github"> <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/> </a> diff --git a/searx/templates/oscar/base.html b/searx/templates/oscar/base.html index 9465ca58..4fe33579 100644 --- a/searx/templates/oscar/base.html +++ b/searx/templates/oscar/base.html @@ -85,10 +85,10 @@ {% endblock %} <p class="text-muted"> <small> - {{ _('Powered by') }} <a href="https://asciimoo.github.io/searx/">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> - <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> | - <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> | - <a href="https://searx.space/">{{ _('Public instances') }}</a> + {{ _('Powered by') }} <a href="{{ brand.DOCS_URL }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> + <a href="{{ brand.GIT_URL }}">{{ _('Source code') }}</a> | + <a href="{{ brand.GIT_URL }}/issues">{{ _('Issue tracker') }}</a> | + <a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a> </small> </p> </div> diff --git a/searx/templates/simple/base.html b/searx/templates/simple/base.html index bba02dbf..b5b18407 100644 --- a/searx/templates/simple/base.html +++ b/searx/templates/simple/base.html @@ -51,9 +51,9 @@ <footer> <p> {{ _('Powered by') }} <a href="{{ url_for('about') }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> - <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> | - <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> | - <a href="https://searx.space/">{{ _('Public instances') }}</a> + <a href="{{ brand.GIT_URL }}">{{ _('Source code') }}</a> | + <a href="{{ brand.GIT_URL }}/issues">{{ _('Issue tracker') }}</a> | + <a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a> </p> </footer> <!--[if gte IE 9]>--> diff --git a/searx/webapp.py b/searx/webapp.py old mode 100644 new mode 100755 index b3928921..c6b52d6a --- a/searx/webapp.py +++ b/searx/webapp.py @@ -57,6 +57,7 @@ from babel.support import Translations import flask_babel from flask_babel import Babel, gettext, format_date, format_decimal from flask.json import jsonify +from searx import brand from searx import settings, searx_dir, searx_debug from searx.exceptions import SearxParameterException from searx.engines import ( @@ -427,6 +428,8 @@ def render(template_name, override_theme=None, **kwargs): kwargs['preferences'] = request.preferences + kwargs['brand'] = brand + kwargs['scripts'] = set() for plugin in request.user_plugins: for script in plugin.js_dependencies: From e84fc94300750c41642bea97d2d9cc020f746c66 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 11:51:03 +0100 Subject: [PATCH 187/238] [fix] brands: add variables from build env to sphinx-doc We have some variables in the build environment which are also needed in the sphinx-process. Theses variables are relavant if one creates a fork with its own branding. We treat these variables under the term 'brands'. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- docs/conf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index ebcd102b..03e977ab 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -4,9 +4,9 @@ import sys, os from searx.version import VERSION_STRING from pallets_sphinx_themes import ProjectLink -GIT_URL = os.environ.get("GIT_URL", "https://github.com/asciimoo/searx") -SEARX_URL = os.environ.get("SEARX_URL", "https://searx.me") -DOCS_URL = os.environ.get("DOCS_URL", "https://asciimoo.github.io/searx/") +from searx.brand import GIT_URL +from searx.brand import SEARX_URL +from searx.brand import DOCS_URL # Project -------------------------------------------------------------- From f6b29f68a107ac083bd5df0d6e7bda8a05f4479f Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 12:03:11 +0100 Subject: [PATCH 188/238] [fix] brands: add variables from build env to setup.py We have some variables in the build environment which are also needed in the setup.py process. Theses variables are relavant if one creates a fork with its own branding. We treat these variables under the term 'brands'. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bd3dd5d1..bd00211b 100644 --- a/setup.py +++ b/setup.py @@ -10,6 +10,7 @@ import sys # required to load VERSION_STRING constant sys.path.insert(0, './searx') from version import VERSION_STRING +import brand with open('README.rst') as f: long_description = f.read() @@ -36,7 +37,7 @@ setup( keywords='metasearch searchengine search web http', author='Adam Tauber', author_email='asciimoo@gmail.com', - url='https://github.com/asciimoo/searx', + url=brand.GIT_URL, license='GNU Affero General Public License', packages=find_packages(exclude=["tests*"]), zip_safe=False, From aaf22baad2d0b361e01b8eb2c10de5d03875ecb6 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 12:14:21 +0100 Subject: [PATCH 189/238] make project: re-build generic files of the searx project Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/brand.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 searx/brand.py diff --git a/searx/brand.py b/searx/brand.py new file mode 100644 index 00000000..7cbca7b0 --- /dev/null +++ b/searx/brand.py @@ -0,0 +1,4 @@ +GIT_URL = 'https://github.com/asciimoo/searx' +SEARX_URL = 'https://searx.me' +DOCS_URL = 'https://asciimoo.github.io/searx' +PUBLIC_INSTANCES = 'https://searx.space' From 757ebb5d9fdc24757f199e52575f32f6faf091b3 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 14:09:47 +0100 Subject: [PATCH 190/238] [fix] brands: add variables from build env to grunt process We have some variables in the build environment which are also needed in the grunt process when building themes. Theses variables are relavant if one creates a fork with its own branding. We treat these variables under the term 'brands'. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 15 +++++++++++++++ docs/dev/quickstart.rst | 6 +++--- manage.sh | 10 ---------- searx/static/themes/oscar/gruntfile.js | 4 +--- searx/static/themes/simple/gruntfile.js | 6 +++--- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 3b2d499e..4914a309 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ help: @echo ' gh-pages - build docs & deploy on gh-pages branch' @echo ' clean - drop builds and environments' @echo ' project - re-build generic files of the searx project' + @echo ' themes - re-build build the source of the themes' @echo '' @$(MAKE) -s -f utils/makefile.include make-help @echo '' @@ -87,6 +88,20 @@ searx.brand: $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py +# build themes +# ------------ + +PHONY += themes themes.oscar themes.simple +themes: themes.oscar themes.simple + +themes.oscar: + $(Q)echo '[!] Grunt build : oscar theme' + $(Q)grunt --gruntfile "searx/static/themes/oscar/gruntfile.js" + +themes.simple: + $(Q)echo '[!] Grunt build : simple theme' + $(Q)grunt --gruntfile "searx/static/themes/simple/gruntfile.js" + # test # ---- diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index e40772b3..cb079a75 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -87,8 +87,8 @@ After satisfying the requirements styles can be build using ``manage.sh`` ./manage.sh styles -How to build the source of the oscar theme -========================================== +How to build the source of the themes +===================================== .. _grunt: https://gruntjs.com/ @@ -104,7 +104,7 @@ After installing grunt, the files can be built using the following command: .. code:: sh - ./manage.sh grunt_build + make themes Tips for debugging/development diff --git a/manage.sh b/manage.sh index 496a522b..0551f02d 100755 --- a/manage.sh +++ b/manage.sh @@ -156,15 +156,6 @@ styles() { build_style less/bootstrap/bootstrap.less css/bootstrap.min.css } -grunt_build() { - npm_path_setup - - echo '[!] Grunt build : oscar theme' - grunt --gruntfile "$SEARX_DIR/static/themes/oscar/gruntfile.js" - echo '[!] Grunt build : simple theme' - grunt --gruntfile "$SEARX_DIR/static/themes/simple/gruntfile.js" -} - docker_build() { # Check if it is a git repository if [ ! -d .git ]; then @@ -257,7 +248,6 @@ Commands ----- locales - Compile locales styles - Build less files - grunt_build - Build files for themes docker_build - Build Docker image Tests diff --git a/searx/static/themes/oscar/gruntfile.js b/searx/static/themes/oscar/gruntfile.js index def035db..606b6bcf 100644 --- a/searx/static/themes/oscar/gruntfile.js +++ b/searx/static/themes/oscar/gruntfile.js @@ -13,7 +13,7 @@ module.exports = function(grunt) { }, uglify: { options: { - banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' }, dist: { files: { @@ -38,7 +38,6 @@ module.exports = function(grunt) { development: { options: { paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"] - //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' }, files: {"css/pointhi.css": "less/pointhi/oscar.less", "css/logicodev.css": "less/logicodev-dark/oscar.less", @@ -47,7 +46,6 @@ module.exports = function(grunt) { production: { options: { paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"], - //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n', cleancss: true }, files: {"css/pointhi.min.css": "less/pointhi/oscar.less", diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index c372ec73..c8f2ed3c 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -36,7 +36,7 @@ module.exports = function(grunt) { }, uglify: { options: { - banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n', + banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n', output: { comments: 'some' }, @@ -57,7 +57,7 @@ module.exports = function(grunt) { development: { options: { paths: ["less"], - banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' }, files: { "css/searx.css": "less/style.less", @@ -73,7 +73,7 @@ module.exports = function(grunt) { compatibility: '*' }) ], - banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' }, files: { "css/searx.min.css": "less/style.less", From 3dbade0aed048e6001f2ed0f261c7d26f04768ba Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 14:50:39 +0100 Subject: [PATCH 191/238] [fix] brands: add GIT_URL variable to the docker build Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Dockerfile | 3 ++- Makefile | 9 +++++++++ manage.sh | 5 ++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9885fb79..700a21ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ EXPOSE 8080 VOLUME /etc/searx VOLUME /var/log/uwsgi +ARG GIT_URL=unknown ARG VERSION_GITCOMMIT=unknown ARG SEARX_GIT_VERSION=unknown @@ -66,7 +67,7 @@ RUN su searx -c "/usr/bin/python3 -m compileall -q searx"; \ # Keep this argument at the end since it change each time ARG LABEL_DATE= -LABEL maintainer="searx <https://github.com/asciimoo/searx>" \ +LABEL maintainer="searx <${GIT_URL}>" \ description="A privacy-respecting, hackable metasearch engine." \ version="${SEARX_GIT_VERSION}" \ org.label-schema.schema-version="1.0" \ diff --git a/Makefile b/Makefile index 4914a309..f81b4e1d 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ help: @echo ' clean - drop builds and environments' @echo ' project - re-build generic files of the searx project' @echo ' themes - re-build build the source of the themes' + @echo ' docker - build Docker image' @echo '' @$(MAKE) -s -f utils/makefile.include make-help @echo '' @@ -102,6 +103,14 @@ themes.simple: $(Q)echo '[!] Grunt build : simple theme' $(Q)grunt --gruntfile "searx/static/themes/simple/gruntfile.js" +# docker +# ------ + +PHONY += docker +docker: + $(Q)./manage.sh docker_build + + # test # ---- diff --git a/manage.sh b/manage.sh index 0551f02d..bb3fe883 100755 --- a/manage.sh +++ b/manage.sh @@ -202,13 +202,13 @@ docker_build() { fi # define the docker image name - # /!\ HACK to get the user name /!\ - GITHUB_USER=$(git remote get-url origin | sed 's/.*github\.com\/\([^\/]*\).*/\1/') + GITHUB_USER=$(echo "${GIT_URL}" | sed 's/.*github\.com\/\([^\/]*\).*/\1/') SEARX_IMAGE_NAME="${GITHUB_USER:-searx}/searx" # build Docker image echo "Building image ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}" sudo docker build \ + --build-arg GIT_URL="${GIT_URL}" \ --build-arg SEARX_GIT_VERSION="${SEARX_GIT_VERSION}" \ --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \ --build-arg LABEL_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ @@ -248,7 +248,6 @@ Commands ----- locales - Compile locales styles - Build less files - docker_build - Build Docker image Tests ----- From 2d12f221a7afbbbaedfb27c5705efd8b94ad6a81 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 15:17:11 +0100 Subject: [PATCH 192/238] [fix] docker build: set build argument LABEL_VCS_URL to GIT_URL Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- manage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manage.sh b/manage.sh index bb3fe883..4c11576a 100755 --- a/manage.sh +++ b/manage.sh @@ -213,7 +213,7 @@ docker_build() { --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \ --build-arg LABEL_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ --build-arg LABEL_VCS_REF=$(git rev-parse HEAD) \ - --build-arg LABEL_VCS_URL=$(git remote get-url origin) \ + --build-arg LABEL_VCS_URL="${GIT_URL}" \ --build-arg TIMESTAMP_SETTINGS=$(git log -1 --format="%cd" --date=unix -- searx/settings.yml) \ --build-arg TIMESTAMP_UWSGI=$(git log -1 --format="%cd" --date=unix -- dockerfiles/uwsgi.ini) \ -t ${SEARX_IMAGE_NAME}:latest -t ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION} . From d471ec86dd72cfae80bdaf72b1ed266b1a8cada7 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 16:38:52 +0100 Subject: [PATCH 193/238] Makefile: add target node.env - download & install npm dependencies Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .gitignore | 3 ++- Makefile | 23 ++++++++++++++++++++--- docs/dev/quickstart.rst | 2 +- searx/static/themes/oscar/.gitignore | 3 ++- searx/static/themes/simple/.gitignore | 2 ++ 5 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 searx/static/themes/simple/.gitignore diff --git a/.gitignore b/.gitignore index 069dfd35..9e08e2a4 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,8 @@ setup.cfg */*.pyc *~ -node_modules/ +/node_modules +/package-lock.json .tx/ diff --git a/Makefile b/Makefile index f81b4e1d..5796ae66 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,7 @@ help: @echo ' project - re-build generic files of the searx project' @echo ' themes - re-build build the source of the themes' @echo ' docker - build Docker image' + @echo ' node.env - download & install npm dependencies locally' @echo '' @$(MAKE) -s -f utils/makefile.include make-help @echo '' @@ -42,7 +43,7 @@ PHONY += uninstall uninstall: pyenvuninstall PHONY += clean -clean: pyclean +clean: pyclean node.clean $(call cmd,common_clean) PHONY += run @@ -89,6 +90,22 @@ searx.brand: $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py +# node / npm +# ---------- + +node.env: + $(Q)./manage.sh npm_packages + +node.clean: + $(Q)echo "CLEAN locally installed npm dependencies" + $(Q)rm -rf \ + ./node_modules \ + ./package-lock.json \ + ./searx/static/themes/oscar/package-lock.json \ + ./searx/static/themes/oscar/node_modules \ + ./searx/static/themes/simple/package-lock.json \ + ./searx/static/themes/simple/node_modules + # build themes # ------------ @@ -97,11 +114,11 @@ themes: themes.oscar themes.simple themes.oscar: $(Q)echo '[!] Grunt build : oscar theme' - $(Q)grunt --gruntfile "searx/static/themes/oscar/gruntfile.js" + $(Q)PATH="$$(npm bin):$$PATH" grunt --gruntfile "searx/static/themes/oscar/gruntfile.js" themes.simple: $(Q)echo '[!] Grunt build : simple theme' - $(Q)grunt --gruntfile "searx/static/themes/simple/gruntfile.js" + $(Q)PATH="$$(npm bin):$$PATH" grunt --gruntfile "searx/static/themes/simple/gruntfile.js" # docker # ------ diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index cb079a75..a786eda6 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -98,7 +98,7 @@ NodeJS, so first Node has to be installed. .. code:: sh sudo -H apt-get install nodejs - sudo -H npm install -g grunt-cli + make node.env After installing grunt, the files can be built using the following command: diff --git a/searx/static/themes/oscar/.gitignore b/searx/static/themes/oscar/.gitignore index c2658d7d..49e0fc6b 100644 --- a/searx/static/themes/oscar/.gitignore +++ b/searx/static/themes/oscar/.gitignore @@ -1 +1,2 @@ -node_modules/ +/node_modules +/package-lock.json \ No newline at end of file diff --git a/searx/static/themes/simple/.gitignore b/searx/static/themes/simple/.gitignore new file mode 100644 index 00000000..49e0fc6b --- /dev/null +++ b/searx/static/themes/simple/.gitignore @@ -0,0 +1,2 @@ +/node_modules +/package-lock.json \ No newline at end of file From ace7d30aed0bdff07e97cdb3900c38633877cdcd Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 17:12:02 +0100 Subject: [PATCH 194/238] webapp.py: partial code review (no functional change) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/webapp.py | 69 +++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index c6b52d6a..3af5c57b 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -958,34 +958,47 @@ def clear_cookies(): @app.route('/config') def config(): - return jsonify({'categories': list(categories.keys()), - 'engines': [{'name': name, - 'categories': engine.categories, - 'shortcut': engine.shortcut, - 'enabled': not engine.disabled, - 'paging': engine.paging, - 'language_support': engine.language_support, - 'supported_languages': - list(engine.supported_languages.keys()) - if isinstance(engine.supported_languages, dict) - else engine.supported_languages, - 'safesearch': engine.safesearch, - 'time_range_support': engine.time_range_support, - 'timeout': engine.timeout} - for name, engine in engines.items() if request.preferences.validate_token(engine)], - 'plugins': [{'name': plugin.name, - 'enabled': plugin.default_on} - for plugin in plugins], - 'instance_name': settings['general']['instance_name'], - 'locales': settings['locales'], - 'default_locale': settings['ui']['default_locale'], - 'autocomplete': settings['search']['autocomplete'], - 'safe_search': settings['search']['safe_search'], - 'default_theme': settings['ui']['default_theme'], - 'version': VERSION_STRING, - 'doi_resolvers': [r for r in settings['doi_resolvers']], - 'default_doi_resolver': settings['default_doi_resolver'], - }) + """Return configuration in JSON format.""" + _engines = [] + for name, engine in engines.items(): + if not request.preferences.validate_token(engine): + continue + + supported_languages = engine.supported_languages + if isinstance(engine.supported_languages, dict): + supported_languages = list(engine.supported_languages.keys()) + + _engines.append({ + 'name': name, + 'categories': engine.categories, + 'shortcut': engine.shortcut, + 'enabled': not engine.disabled, + 'paging': engine.paging, + 'language_support': engine.language_support, + 'supported_languages': supported_languages, + 'safesearch': engine.safesearch, + 'time_range_support': engine.time_range_support, + 'timeout': engine.timeout + }) + + _plugins = [] + for _ in plugins: + _plugins.append({'name': _.name, 'enabled': _.default_on}) + + return jsonify({ + 'categories': list(categories.keys()), + 'engines': _engines, + 'plugins': _plugins, + 'instance_name': settings['general']['instance_name'], + 'locales': settings['locales'], + 'default_locale': settings['ui']['default_locale'], + 'autocomplete': settings['search']['autocomplete'], + 'safe_search': settings['search']['safe_search'], + 'default_theme': settings['ui']['default_theme'], + 'version': VERSION_STRING, + 'doi_resolvers': [r for r in settings['doi_resolvers']], + 'default_doi_resolver': settings['default_doi_resolver'], + }) @app.errorhandler(404) From 4d6482823764c840415a6023d945b5699a53ba2a Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 17:28:32 +0100 Subject: [PATCH 195/238] webapp.py: expose the brand variable in the /config URL. E.g. helpful for searx-stats2 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/webapp.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/searx/webapp.py b/searx/webapp.py index 3af5c57b..c910230a 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -996,6 +996,10 @@ def config(): 'safe_search': settings['search']['safe_search'], 'default_theme': settings['ui']['default_theme'], 'version': VERSION_STRING, + 'brand': { + 'GIT_URL': brand.GIT_URL, + 'DOCS_URL': brand.DOCS_URL + }, 'doi_resolvers': [r for r in settings['doi_resolvers']], 'default_doi_resolver': settings['default_doi_resolver'], }) From 33814719333c2c5b7b13ab47f9c8d4f8a0cecb16 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 25 Mar 2020 17:48:34 +0100 Subject: [PATCH 196/238] brands: add ISSUE_URL Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 2 ++ searx/brand.py | 1 + searx/templates/oscar/base.html | 2 +- searx/templates/simple/base.html | 2 +- setup.py | 6 +++++- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 5796ae66..bdaa6c77 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ # -*- coding: utf-8; mode: makefile-gmake -*- export GIT_URL=https://github.com/asciimoo/searx +export ISSUE_URL=$(GIT_URL)/issues export SEARX_URL=https://searx.me export DOCS_URL=https://asciimoo.github.io/searx @@ -86,6 +87,7 @@ engines-languages: pyenvinstall searx.brand: $(Q)echo "build searx/brand.py" $(Q)echo "GIT_URL = '$(GIT_URL)'" > searx/brand.py + $(Q)echo "ISSUE_URL = '$(ISSUE_URL)'" >> searx/brand.py $(Q)echo "SEARX_URL = '$(SEARX_URL)'" >> searx/brand.py $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py diff --git a/searx/brand.py b/searx/brand.py index 7cbca7b0..d563447f 100644 --- a/searx/brand.py +++ b/searx/brand.py @@ -1,4 +1,5 @@ GIT_URL = 'https://github.com/asciimoo/searx' +ISSUE_URL = 'https://github.com/asciimoo/searx/issues' SEARX_URL = 'https://searx.me' DOCS_URL = 'https://asciimoo.github.io/searx' PUBLIC_INSTANCES = 'https://searx.space' diff --git a/searx/templates/oscar/base.html b/searx/templates/oscar/base.html index 4fe33579..5eb4462e 100644 --- a/searx/templates/oscar/base.html +++ b/searx/templates/oscar/base.html @@ -87,7 +87,7 @@ <small> {{ _('Powered by') }} <a href="{{ brand.DOCS_URL }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> <a href="{{ brand.GIT_URL }}">{{ _('Source code') }}</a> | - <a href="{{ brand.GIT_URL }}/issues">{{ _('Issue tracker') }}</a> | + <a href="{{ brand.ISSUE_URL }}">{{ _('Issue tracker') }}</a> | <a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a> </small> </p> diff --git a/searx/templates/simple/base.html b/searx/templates/simple/base.html index b5b18407..71df123e 100644 --- a/searx/templates/simple/base.html +++ b/searx/templates/simple/base.html @@ -52,7 +52,7 @@ <p> {{ _('Powered by') }} <a href="{{ url_for('about') }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/> <a href="{{ brand.GIT_URL }}">{{ _('Source code') }}</a> | - <a href="{{ brand.GIT_URL }}/issues">{{ _('Issue tracker') }}</a> | + <a href="{{ brand.ISSUE_URL }}">{{ _('Issue tracker') }}</a> | <a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a> </p> </footer> diff --git a/setup.py b/setup.py index bd00211b..97a3270e 100644 --- a/setup.py +++ b/setup.py @@ -26,6 +26,11 @@ setup( version=VERSION_STRING, description="A privacy-respecting, hackable metasearch engine", long_description=long_description, + url=brand.DOCS_URL, + project_urls={ + "Code": brand.GIT_URL, + "Issue tracker": brand.ISSUE_URL + }, classifiers=[ "Development Status :: 4 - Beta", "Programming Language :: Python", @@ -37,7 +42,6 @@ setup( keywords='metasearch searchengine search web http', author='Adam Tauber', author_email='asciimoo@gmail.com', - url=brand.GIT_URL, license='GNU Affero General Public License', packages=find_packages(exclude=["tests*"]), zip_safe=False, From 3486613a1960f472b9cf8c85ade72c5aec9473eb Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 10:58:25 +0100 Subject: [PATCH 197/238] brands: hardcode ISSUE_URL and some links on the about-page A *brand* of searx is a fork which might have its own design and some special functions which might bee reasonable in a special context. In this sense, the fork might have its own documentation but not its own issue tracker. The *upstream* of a brand is always https://github.com/asciimoo from where the brand-fork pulls the master branch regularly. A fork which has its own issue tracker is a spin-off and out of the scope of the searx project itself. The conclusion is: - hard code ISSUE_URL (in the Makefile) - always refer to DOCS_URL - links in the about page refer to the *upstream* (searx project) except DOCS_URL - "fork me on github" ribbons refer to the *upstream* Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 3 +-- searx/templates/__common__/about.html | 11 +++++------ searx/templates/courgette/github_ribbon.html | 2 +- searx/templates/legacy/github_ribbon.html | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index bdaa6c77..2bea06c9 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,6 @@ # -*- coding: utf-8; mode: makefile-gmake -*- export GIT_URL=https://github.com/asciimoo/searx -export ISSUE_URL=$(GIT_URL)/issues export SEARX_URL=https://searx.me export DOCS_URL=https://asciimoo.github.io/searx @@ -87,7 +86,7 @@ engines-languages: pyenvinstall searx.brand: $(Q)echo "build searx/brand.py" $(Q)echo "GIT_URL = '$(GIT_URL)'" > searx/brand.py - $(Q)echo "ISSUE_URL = '$(ISSUE_URL)'" >> searx/brand.py + $(Q)echo "ISSUE_URL = 'https://github.com/asciimoo/searx/issues'" >> searx/brand.py $(Q)echo "SEARX_URL = '$(SEARX_URL)'" >> searx/brand.py $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html index d8e1335d..3f702e63 100644 --- a/searx/templates/__common__/about.html +++ b/searx/templates/__common__/about.html @@ -7,7 +7,7 @@ <ul> <li>searx may not offer you as personalised results as Google, but it doesn't generate a profile about you</li> <li>searx doesn't care about what you search for, never shares anything with a third party, and it can't be used to compromise you</li> - <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="{{ brand.GIT_URL }}">github</a></li> + <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="https://github.com/asciimoo/searx">github</a></li> </ul> <p>If you do care about privacy, want to be a conscious user, or otherwise believe in digital freedom, make searx your default search engine or run it on your own server</p> @@ -22,15 +22,14 @@ Searx can be added to your browser's search bar; moreover, it can be set as the <h2>How can I make it my own?</h2> -<p>Searx appreciates your concern regarding logs, so take the <a href="{{ brand.GIT_URL }}">code</a> and run it yourself! <br />Add your Searx to this <a href="{{ brand.SEARX_URL }}">list</a> to help other people reclaim their privacy and make the Internet freer! +<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="{{ brand.PUBLIC_INSTANCES }}">list</a> to help other people reclaim their privacy and make the Internet freer! <br />The more decentralized the Internet is, the more freedom we have!</p> <h2>More about searx</h2> <ul> - <li><a href="{{ brand.GIT_URL }}">github</a></li> - <li><a href="https://www.ohloh.net/p/searx/">ohloh</a></li> + <li><a href="https://github.com/asciimoo/searx">github</a></li> <li><a href="https://twitter.com/Searx_engine">twitter</a></li> <li>IRC: #searx @ freenode (<a href="https://kiwiirc.com/client/irc.freenode.com/searx">webclient</a>)</li> <li><a href="https://www.transifex.com/projects/p/searx/">transifex</a></li> @@ -48,8 +47,8 @@ Searx can be added to your browser's search bar; moreover, it can be set as the <h3>New engines?</h3> <ul> - <li>Edit your <a href="{{ brand.GIT_URL }}/blob/master/searx/settings.yml">settings.yml</a></li> - <li>Create your custom engine module, check the <a href="{{ brand.GIT_URL }}/blob/master/examples/basic_engine.py">example engine</a></li> + <li>Edit your <a href="https://github.com/asciimoo/searx/blob/master/searx/settings.yml">settings.yml</a></li> + <li>Create your custom engine module, check the <a href="https://github.com/asciimoo/searx/blob/master/examples/basic_engine.py">example engine</a></li> </ul> <p>Don't forget to restart searx after config edit!</p> diff --git a/searx/templates/courgette/github_ribbon.html b/searx/templates/courgette/github_ribbon.html index f6eaa123..bdd9cf18 100644 --- a/searx/templates/courgette/github_ribbon.html +++ b/searx/templates/courgette/github_ribbon.html @@ -1,3 +1,3 @@ -<a href="{{ brand.GIT_URL }}" class="github"> +<a href="https://github.com/asciimoo/searx" class="github"> <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/> </a> diff --git a/searx/templates/legacy/github_ribbon.html b/searx/templates/legacy/github_ribbon.html index f6eaa123..bdd9cf18 100644 --- a/searx/templates/legacy/github_ribbon.html +++ b/searx/templates/legacy/github_ribbon.html @@ -1,3 +1,3 @@ -<a href="{{ brand.GIT_URL }}" class="github"> +<a href="https://github.com/asciimoo/searx" class="github"> <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/> </a> From 5d087ee466750e51dfc9ff95a88402055ad71741 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 13:09:29 +0100 Subject: [PATCH 198/238] Rewrite of the HTL *about* page The *about* page should only address higher-level issues that are important to each user. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/templates/__common__/about.html | 120 +++++++++++++++++--------- 1 file changed, 77 insertions(+), 43 deletions(-) diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html index 3f702e63..c912a8bd 100644 --- a/searx/templates/__common__/about.html +++ b/searx/templates/__common__/about.html @@ -1,62 +1,96 @@ <div{% if rtl %} dir="ltr"{% endif %}> - <h1>About <a href="{{ url_for('index') }}">searx</a></h1> + <h1>About <a href="{{ url_for('index') }}">searx</a></h1> - <p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> while not storing information about its users. - </p> - <h2>Why use searx?</h2> - <ul> - <li>searx may not offer you as personalised results as Google, but it doesn't generate a profile about you</li> - <li>searx doesn't care about what you search for, never shares anything with a third party, and it can't be used to compromise you</li> - <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="https://github.com/asciimoo/searx">github</a></li> - </ul> - <p>If you do care about privacy, want to be a conscious user, or otherwise believe - in digital freedom, make searx your default search engine or run it on your own server</p> + <p> + Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, + aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> + while not storing information about its users. + </p> -<h2>Technical details - How does it work?</h2> + <p>More about searx ...</p> -<p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, -inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>.<br /> -It provides basic privacy by mixing your queries with searches on other platforms without storing search data. Queries are made using a POST request on every browser (except chrome*). Therefore they show up in neither our logs, nor your url history. In case of Chrome* users there is an exception, searx uses the search bar to perform GET requests.<br /> -Searx can be added to your browser's search bar; moreover, it can be set as the default search engine. -</p> - -<h2>How can I make it my own?</h2> - -<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="{{ brand.PUBLIC_INSTANCES }}">list</a> to help other people reclaim their privacy and make the Internet freer! -<br />The more decentralized the Internet is, the more freedom we have!</p> - - -<h2>More about searx</h2> - -<ul> + <ul> <li><a href="https://github.com/asciimoo/searx">github</a></li> <li><a href="https://twitter.com/Searx_engine">twitter</a></li> <li>IRC: #searx @ freenode (<a href="https://kiwiirc.com/client/irc.freenode.com/searx">webclient</a>)</li> <li><a href="https://www.transifex.com/projects/p/searx/">transifex</a></li> -</ul> + </ul> + <hr /> -<hr /> + <h2>Technical details - How does it work?</h2> -<h2 id="faq">FAQ</h2> + <p> + Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, + inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>. -<h3>How to add to firefox?</h3> -<p><a href="#" onclick="window.external.AddSearchProvider(window.location.protocol + '//' + window.location.host + '{{ url_for('opensearch') }}');">Install</a> searx as a search engine on any version of Firefox! (javascript required)</p> + It provides basic privacy by mixing your queries with searches on other + platforms without storing search data. Queries are made using a POST request + on every browser (except chrome*). Therefore they show up in neither our + logs, nor your url history. In case of Chrome* users there is an exception, + searx uses the search bar to perform GET requests. -<h2 id="dev_faq">Developer FAQ</h2> + Searx can be added to your browser's search bar; moreover, it can be set as + the default search engine. + </p> -<h3>New engines?</h3> -<ul> - <li>Edit your <a href="https://github.com/asciimoo/searx/blob/master/searx/settings.yml">settings.yml</a></li> - <li>Create your custom engine module, check the <a href="https://github.com/asciimoo/searx/blob/master/examples/basic_engine.py">example engine</a></li> -</ul> -<p>Don't forget to restart searx after config edit!</p> + <h2>Why use searx?</h2> -<h3>Installation/WSGI support?</h3> -<p>See the <a href="{{ brand.DOCS_URL }}/admin/installation.html#uwsgi">installation and uwsgi setup</a></p> + <ul> + <li> + Searx may not offer you as personalised results as Google, but it doesn't + generate a profile about you. + </li> + <li> + Searx doesn't care about what you search for, never shares anything with a + third party, and it can't be used to compromise you. + </li> + <li> + Searx is free software, the code is 100% open and you can help to make it + better. See more on <a href="https://github.com/asciimoo/searx">github</a>. + </li> + </ul> + <p> + If you do care about privacy, want to be a conscious user, or otherwise + believe in digital freedom, make searx your default search engine or run it + on your own server + </p> -<h3>How to debug engines?</h3> -<p><a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.</p> + <h2 id='add to browser'>Can it be set as the default search engine?</h2> + + <dt>Firefox</dt> + + <dd> + <a href="#" onclick="window.external.AddSearchProvider(window.location.protocol + '//' + window.location.host + '{{ url_for('opensearch') }}');">Install</a> + searx as a search engine on any version of Firefox! (javascript required) + </dd> + + <h2>How to debug engines?</h2> + + <p> + <a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used. + </p> + + <h2>How can I make it my own?</h2> + + <p> + Searx appreciates your concern regarding logs, so take the + code from the <a href="https://github.com/asciimoo/searx">orgin searx projekct</a> and + run it yourself! + </p> + <p> + Add your searx instance to this <a href="{{ brand.PUBLIC_INSTANCES }}"> list + of public searx instances</a> to help other people reclaim their privacy and + make the Internet freer! The more decentralized the Internet is, the more + freedom we have! + </p> + + <h2>Where are the docs & code of this instance?</h2> + + <p> + See the <a href="{{ brand.DOCS_URL }}">{{ brand.DOCS_URL }}</a> + and <a href="{{ brand.GIT_URL }}">{{ brand.GIT_URL }}</a> + </p> </div> {% include "__common__/aboutextend.html" ignore missing %} From 00251d7c66e60dc9859bf6368ab68d545660b90e Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 13:32:08 +0100 Subject: [PATCH 199/238] Makefile: add target 'useragents.update' to fetch versions of Firefox Update searx/data/useragents.json with the most recent versions of Firefox. BTW: add 'useragents.update' to 'project' target and clean up the Makefile and remove it from the manage.sh script. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> closes: https://github.com/asciimoo/searx/issues/1882 --- Makefile | 19 +++++++++++++------ manage.sh | 6 ------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 2bea06c9..89e83dc5 100644 --- a/Makefile +++ b/Makefile @@ -74,14 +74,21 @@ $(GH_PAGES):: # update project files # -------------------- -PHONY += project engines-languages searx.brand +PHONY += project engines.languages searx.brand useragents.update -project: searx/data/engines_languages.json searx.brand +project: useragents.update engines.languages searx.brand -engines-languages: pyenvinstall - $(PY_ENV_ACT); python utils/fetch_languages.py - mv engines_languages.json searx/data/engines_languages.json - mv languages.py searx/languages.py +engines.languages: pyenvinstall + $(Q)echo "fetch languages .." + $(Q)$(PY_ENV_ACT); python utils/fetch_languages.py + $(Q)echo "update searx/data/engines_languages.json" + $(Q)mv engines_languages.json searx/data/engines_languages.json + $(Q)echo "update searx/languages.py" + $(Q)mv languages.py searx/languages.py + +useragents.update: pyenvinstall + $(Q)echo "Update searx/data/useragents.json with the most recent versions of Firefox." + $(Q)$(PY_ENV_ACT); python utils/fetch_firefox_version.py searx.brand: $(Q)echo "build searx/brand.py" diff --git a/manage.sh b/manage.sh index 4c11576a..5c9b332a 100755 --- a/manage.sh +++ b/manage.sh @@ -70,11 +70,6 @@ locales() { pybabel compile -d "$SEARX_DIR/translations" } -update_useragents() { - echo '[!] Updating user agent versions' - python utils/fetch_firefox_version.py -} - pep8_check() { echo '[!] Running pep8 check' # ignored rules: @@ -242,7 +237,6 @@ Commands update_dev_packages - Check & update development and production dependency changes install_geckodriver - Download & install geckodriver if not already installed (required for robot_tests) npm_packages - Download & install npm dependencies - update_useragents - Update useragents.json with the most recent versions of Firefox Build ----- From 809e6f7933bac4b68b9c4bc997c34b9e75db92ee Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 13:35:17 +0100 Subject: [PATCH 200/238] make project: re-build generic files of the searx project Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/data/useragents.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/searx/data/useragents.json b/searx/data/useragents.json index abb81000..5ba8c5be 100644 --- a/searx/data/useragents.json +++ b/searx/data/useragents.json @@ -1,11 +1,8 @@ { "versions": [ - "70.0.1", - "70.0", - "69.0.3", - "69.0.2", - "69.0.1", - "69.0" + "74.0", + "73.0.1", + "73.0" ], "os": [ "Windows NT 10; WOW64", From 971752198156e6a2a4ade127032d35c54ea3563b Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 13:45:37 +0100 Subject: [PATCH 201/238] Minor improvements of the HTML *about* page Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- searx/templates/__common__/about.html | 39 ++++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html index c912a8bd..5c91c339 100644 --- a/searx/templates/__common__/about.html +++ b/searx/templates/__common__/about.html @@ -18,22 +18,6 @@ <hr /> - <h2>Technical details - How does it work?</h2> - - <p> - Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, - inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>. - - It provides basic privacy by mixing your queries with searches on other - platforms without storing search data. Queries are made using a POST request - on every browser (except chrome*). Therefore they show up in neither our - logs, nor your url history. In case of Chrome* users there is an exception, - searx uses the search bar to perform GET requests. - - Searx can be added to your browser's search bar; moreover, it can be set as - the default search engine. - </p> - <h2>Why use searx?</h2> <ul> @@ -50,13 +34,30 @@ better. See more on <a href="https://github.com/asciimoo/searx">github</a>. </li> </ul> + <p> If you do care about privacy, want to be a conscious user, or otherwise believe in digital freedom, make searx your default search engine or run it on your own server </p> - <h2 id='add to browser'>Can it be set as the default search engine?</h2> + <h2>Technical details - How does it work?</h2> + + <p> + Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, + inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>. + + It provides basic privacy by mixing your queries with searches on other + platforms without storing search data. Queries are made using a POST request + on every browser (except chrome*). Therefore they show up in neither our + logs, nor your url history. In case of Chrome* users there is an exception, + searx uses the search bar to perform GET requests. + + Searx can be added to your browser's search bar; moreover, it can be set as + the default search engine. + </p> + + <h2 id='add to browser'>How to set as the default search engine?</h2> <dt>Firefox</dt> @@ -65,7 +66,7 @@ searx as a search engine on any version of Firefox! (javascript required) </dd> - <h2>How to debug engines?</h2> + <h2>Where to find anonymous usage statistics of this instance ?</h2> <p> <a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used. @@ -75,7 +76,7 @@ <p> Searx appreciates your concern regarding logs, so take the - code from the <a href="https://github.com/asciimoo/searx">orgin searx projekct</a> and + code from the <a href="https://github.com/asciimoo/searx">orgin searx project</a> and run it yourself! </p> <p> From 6846402d734c9f4f7fb68fb3980aa2ada5adb763 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 15:35:32 +0100 Subject: [PATCH 202/238] .gitignore: make package-lock.json visible Even if we do not versioning them right now. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .gitignore | 1 - searx/static/themes/oscar/.gitignore | 1 - searx/static/themes/simple/.gitignore | 1 - 3 files changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 9e08e2a4..1c82be41 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ setup.cfg *~ /node_modules -/package-lock.json .tx/ diff --git a/searx/static/themes/oscar/.gitignore b/searx/static/themes/oscar/.gitignore index 49e0fc6b..07e6e472 100644 --- a/searx/static/themes/oscar/.gitignore +++ b/searx/static/themes/oscar/.gitignore @@ -1,2 +1 @@ /node_modules -/package-lock.json \ No newline at end of file diff --git a/searx/static/themes/simple/.gitignore b/searx/static/themes/simple/.gitignore index 49e0fc6b..07e6e472 100644 --- a/searx/static/themes/simple/.gitignore +++ b/searx/static/themes/simple/.gitignore @@ -1,2 +1 @@ /node_modules -/package-lock.json \ No newline at end of file From e7fbefa8bdecca04824b3ef744786d8bb45c35fe Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 18:00:07 +0100 Subject: [PATCH 203/238] build: move build styles from manage.sh to Makefile To build all styles use: make styles To build individual styles use one of: make style.legacy make style.courgette make style.pixart make style.bootstrap Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 25 +++++++++++++++++++++++++ manage.sh | 22 ---------------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 89e83dc5..8b760093 100644 --- a/Makefile +++ b/Makefile @@ -128,6 +128,31 @@ themes.simple: $(Q)echo '[!] Grunt build : simple theme' $(Q)PATH="$$(npm bin):$$PATH" grunt --gruntfile "searx/static/themes/simple/gruntfile.js" +# build styles +# ------------ + +PHONY += styles style.legacy style.courgette style.pixart style.bootstrap +styles: style.legacy style.courgette style.pixart style.bootstrap + +quiet_cmd_lessc = STYLE $3 + cmd_lessc = PATH="$$(npm bin):$$PATH" \ + lessc --clean-css="--s1 --advanced --compatibility=ie9" "searx/static/$2" "searx/static/$3" + +style.legacy: + $(call cmd,lessc,themes/legacy/less/style-rtl.less,themes/legacy/css/style-rtl.css) + $(call cmd,lessc,themes/legacy/less/style.less,themes/legacy/css/style.css) + +style.courgette: + $(call cmd,lessc,themes/courgette/less/style.less,themes/courgette/css/style.css) + $(call cmd,lessc,themes/courgette/less/style-rtl.less,themes/courgette/css/style-rtl.css) + +style.pixart: + $(call cmd,lessc,themes/pix-art/less/style.less,themes/pix-art/css/style.css) + +style.bootstrap: + $(call cmd,lessc,less/bootstrap/bootstrap.less,css/bootstrap.min.css) + + # docker # ------ diff --git a/manage.sh b/manage.sh index 5c9b332a..4f46fd6d 100755 --- a/manage.sh +++ b/manage.sh @@ -130,27 +130,6 @@ npm_packages() { npm install } -build_style() { - npm_path_setup - - lessc --clean-css="--s1 --advanced --compatibility=ie9" "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2" -} - -styles() { - npm_path_setup - - echo '[!] Building legacy style' - build_style themes/legacy/less/style.less themes/legacy/css/style.css - build_style themes/legacy/less/style-rtl.less themes/legacy/css/style-rtl.css - echo '[!] Building courgette style' - build_style themes/courgette/less/style.less themes/courgette/css/style.css - build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css - echo '[!] Building pix-art style' - build_style themes/pix-art/less/style.less themes/pix-art/css/style.css - echo '[!] Building bootstrap style' - build_style less/bootstrap/bootstrap.less css/bootstrap.min.css -} - docker_build() { # Check if it is a git repository if [ ! -d .git ]; then @@ -241,7 +220,6 @@ Commands Build ----- locales - Compile locales - styles - Build less files Tests ----- From 1075f58a722fad7801a7b8397cd7e6de31d99da2 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 18:41:45 +0100 Subject: [PATCH 204/238] test: move tests from manage.sh to Makefile Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 45 +++++++++++++++++++++++++++++++++++---------- manage.sh | 42 ------------------------------------------ 2 files changed, 35 insertions(+), 52 deletions(-) diff --git a/Makefile b/Makefile index 8b760093..fe65acad 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ PHONY += uninstall uninstall: pyenvuninstall PHONY += clean -clean: pyclean node.clean +clean: pyclean node.clean test.clean $(call cmd,common_clean) PHONY += run @@ -160,27 +160,52 @@ PHONY += docker docker: $(Q)./manage.sh docker_build +# gecko +# ----- + +PHONY += gecko.driver +gecko.driver: + $(PY_ENV_ACT); ./manage.sh install_geckodriver # test # ---- -PHONY += test test.pylint test.pep8 test.unit test.robot +PHONY += test test.pylint test.pep8 test.unit test.coverage test.robot -test: test.pylint test.pep8 test.unit test.robot +test: test.pylint test.pep8 test.unit gecko.driver test.robot # TODO: balance linting with pylint test.pylint: pyenvinstall - $(call cmd,pylint,searx/preferences.py) - $(call cmd,pylint,searx/testing.py) + $(call cmd,pylint,\ + searx/preferences.py \ + searx/testing.py \ + ) + +# ignored rules: +# E402 module level import not at top of file +# W503 line break before binary operator test.pep8: pyenvinstall - $(PY_ENV_ACT); ./manage.sh pep8_check + @echo "TEST pep8" + $(Q)$(PY_ENV_ACT); pep8 --exclude=searx/static --max-line-length=120 --ignore "E402,W503" searx tests test.unit: pyenvinstall - $(PY_ENV_ACT); ./manage.sh unit_tests + @echo "TEST tests/unit" + $(Q)$(PY_ENV_ACT); python -m nose2 -s tests/unit -test.robot: pyenvinstall - $(PY_ENV_ACT); ./manage.sh install_geckodriver - $(PY_ENV_ACT); ./manage.sh robot_tests +test.coverage: pyenvinstall + @echo "TEST unit test coverage" + $(Q)$(PY_ENV_ACT); \ + python -m nose2 -C --log-capture --with-coverage --coverage searx -s tests/unit \ + && coverage report \ + && coverage html \ + +test.robot: pyenvinstall gecko.driver + @echo "TEST robot" + $(Q)$(PY_ENV_ACT); PYTHONPATH=. python searx/testing.py robot + +test.clean: + @echo "CLEAN intermediate test stuff" + $(Q)rm -rf geckodriver.log .coverage coverage/ .PHONY: $(PHONY) diff --git a/manage.sh b/manage.sh index 4f46fd6d..6667274b 100755 --- a/manage.sh +++ b/manage.sh @@ -70,40 +70,6 @@ locales() { pybabel compile -d "$SEARX_DIR/translations" } -pep8_check() { - echo '[!] Running pep8 check' - # ignored rules: - # E402 module level import not at top of file - # W503 line break before binary operator - pep8 --exclude=searx/static --max-line-length=120 --ignore "E402,W503" "$SEARX_DIR" "$BASE_DIR/tests" -} - -unit_tests() { - echo '[!] Running unit tests' - python -m nose2 -s "$BASE_DIR/tests/unit" -} - -py_test_coverage() { - echo '[!] Running python test coverage' - PYTHONPATH="`pwd`" python -m nose2 -C --log-capture --with-coverage --coverage "$SEARX_DIR" -s "$BASE_DIR/tests/unit" \ - && coverage report \ - && coverage html -} - -robot_tests() { - echo '[!] Running robot tests' - PYTHONPATH="`pwd`" python "$SEARX_DIR/testing.py" robot -} - -tests() { - set -e - pep8_check - unit_tests - install_geckodriver - robot_tests - set +e -} - # # Web @@ -220,14 +186,6 @@ Commands Build ----- locales - Compile locales - - Tests - ----- - unit_tests - Run unit tests - pep8_check - Pep8 validation - robot_tests - Run selenium tests - tests - Run all python tests (pep8, unit, robot_tests) - py_test_coverage - Unit test coverage " } From d7523071a0ba8c210f7ece31d8e30f5c360966c3 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 26 Mar 2020 19:14:07 +0100 Subject: [PATCH 205/238] travis: use build environment from Makefile Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index e37b6586..ca986d04 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: python sudo: false cache: - - pip - - npm - directories: - $HOME/.cache/pip @@ -10,17 +8,16 @@ addons: firefox: "latest" install: - - ./manage.sh install_geckodriver ~/drivers - - export PATH=~/drivers:$PATH - - ./manage.sh npm_packages - - ./manage.sh update_dev_packages - - pip install codecov + - make install + - make gecko.driver + - make node.env + - local/py3/bin/pip install codecov script: - - ./manage.sh styles - - ./manage.sh grunt_build - - ./manage.sh tests + - make styles + - make themes + - make test after_success: - - ./manage.sh py_test_coverage + - make test.coverage - codecov stages: @@ -44,7 +41,7 @@ jobs: install: true script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - ./manage.sh docker_build push + - local/py3/bin/activate; ./manage.sh docker_build push after_success: true notifications: From ec453e0239dcaa6edefe7f50567f2da2eec77b5d Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 29 Mar 2020 11:06:22 +0200 Subject: [PATCH 206/238] [fix] docker 'Error compiling' and 'SyntaxError' messages The make docker target spits out some SyntaxError. With this .dockerignore there is no more error. Explanation: - the python files are compiled while building the docker image - a node modules contains some python files - the python files inside the node module doesn't compile It raises the fact that node_modules were included in the docker image which should not happen. Same the local directory was included. Dockerfile builds searx in its own way (without virtualenv) Thanks @dalf: - https://github.com/asciimoo/searx/pull/1900#issuecomment-604892737 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .dockerignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.dockerignore b/.dockerignore index f4d03376..044460b2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,6 +4,9 @@ */*/*/*~ */*/*/*/*~ +# +local/ + # Git .git .gitignore @@ -36,6 +39,11 @@ robot_report.html test_basic/ setup.cfg +# node_modules node_modules/ +*/node_modules/ +*/*/node_modules/ +*/*/*/node_modules/ +*/*/*/*/node_modules/ .tx/ \ No newline at end of file From 8a16903a1ca980fc3c670e304067c9e68eb59a25 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 29 Mar 2020 11:29:57 +0200 Subject: [PATCH 207/238] make themes: rename 'style' targtes to 'themes' targets style.legacy could be renamed themes.legacy : it actually builds the files for the legacy theme, then themes.legacy can be a dependency of themes. Same for the other styles.* Debatable: about style.bootstrap, same convention : theme.bootstrap (even it is more a toolbox for the oscar theme). So there is no need to add the missing make styles in the help target. thanks @dalf: - https://github.com/asciimoo/searx/pull/1900#discussion_r399160355 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index fe65acad..5b890374 100644 --- a/Makefile +++ b/Makefile @@ -117,39 +117,40 @@ node.clean: # build themes # ------------ -PHONY += themes themes.oscar themes.simple -themes: themes.oscar themes.simple +PHONY += themes.bootstrap themes themes.oscar themes.simple themes.legacy themes.courgette themes.pixart +themes: themes.bootstrap themes.oscar themes.simple themes.legacy themes.courgette themes.pixart -themes.oscar: - $(Q)echo '[!] Grunt build : oscar theme' - $(Q)PATH="$$(npm bin):$$PATH" grunt --gruntfile "searx/static/themes/oscar/gruntfile.js" - -themes.simple: - $(Q)echo '[!] Grunt build : simple theme' - $(Q)PATH="$$(npm bin):$$PATH" grunt --gruntfile "searx/static/themes/simple/gruntfile.js" - -# build styles -# ------------ - -PHONY += styles style.legacy style.courgette style.pixart style.bootstrap -styles: style.legacy style.courgette style.pixart style.bootstrap - -quiet_cmd_lessc = STYLE $3 +quiet_cmd_lessc = LESSC $3 cmd_lessc = PATH="$$(npm bin):$$PATH" \ lessc --clean-css="--s1 --advanced --compatibility=ie9" "searx/static/$2" "searx/static/$3" -style.legacy: +quiet_cmd_grunt = GRUNT $2 + cmd_grunt = PATH="$$(npm bin):$$PATH" \ + grunt --gruntfile "$2" + +themes.oscar: + $(Q)echo '[!] build oscar theme' + $(call cmd,grunt,searx/static/themes/oscar/gruntfile.js) + +themes.simple: + $(Q)echo '[!] build simple theme' + $(call cmd,grunt,searx/static/themes/simple/gruntfile.js) + +themes.legacy: + $(Q)echo '[!] build legacy theme' $(call cmd,lessc,themes/legacy/less/style-rtl.less,themes/legacy/css/style-rtl.css) $(call cmd,lessc,themes/legacy/less/style.less,themes/legacy/css/style.css) -style.courgette: +themes.courgette: + $(Q)echo '[!] build courgette theme' $(call cmd,lessc,themes/courgette/less/style.less,themes/courgette/css/style.css) $(call cmd,lessc,themes/courgette/less/style-rtl.less,themes/courgette/css/style-rtl.css) -style.pixart: +themes.pixart: + $(Q)echo '[!] build pixart theme' $(call cmd,lessc,themes/pix-art/less/style.less,themes/pix-art/css/style.css) -style.bootstrap: +themes.bootstrap: $(call cmd,lessc,less/bootstrap/bootstrap.less,css/bootstrap.min.css) From 442b27ac1b1f54669fbb9785d780327f62814431 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 29 Mar 2020 11:41:59 +0200 Subject: [PATCH 208/238] bash: use build environment from Makefile To Makefile target brand, add creation of bash environment in:: utils/brand.env In bash scripts (manage.sh) source env by:: . utils/brand.env manage.sh help: show GIT_URL and more environment Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 7 +++++++ manage.sh | 8 ++++++++ utils/brand.env | 5 +++++ 3 files changed, 20 insertions(+) create mode 100644 utils/brand.env diff --git a/Makefile b/Makefile index 5b890374..d09e9282 100644 --- a/Makefile +++ b/Makefile @@ -97,6 +97,13 @@ searx.brand: $(Q)echo "SEARX_URL = '$(SEARX_URL)'" >> searx/brand.py $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py + $(Q)echo "build utils/brand.env" + $(Q)echo "export GIT_URL='$(GIT_URL)'" > utils/brand.env + $(Q)echo "export ISSUE_URL='https://github.com/asciimoo/searx/issues'" >> utils/brand.env + $(Q)echo "export SEARX_URL='$(SEARX_URL)'" >> utils/brand.env + $(Q)echo "export DOCS_URL='$(DOCS_URL)'" >> utils/brand.env + $(Q)echo "export PUBLIC_INSTANCES='https://searx.space'" >> utils/brand.env + # node / npm # ---------- diff --git a/manage.sh b/manage.sh index 6667274b..4831fc1f 100755 --- a/manage.sh +++ b/manage.sh @@ -10,6 +10,7 @@ PYTHONPATH="$BASE_DIR" SEARX_DIR="$BASE_DIR/searx" ACTION="$1" +. "${BASE_DIR}/utils/brand.env" # # Python @@ -186,6 +187,13 @@ Commands Build ----- locales - Compile locales + +Environment: + GIT_URL: ${GIT_URL} + ISSUE_URL: ${ISSUE_URL} + SEARX_URL: ${SEARX_URL} + DOCS_URL: ${DOCS_URL} + PUBLIC_INSTANCES: ${PUBLIC_INSTANCES} " } diff --git a/utils/brand.env b/utils/brand.env new file mode 100644 index 00000000..7fe1a391 --- /dev/null +++ b/utils/brand.env @@ -0,0 +1,5 @@ +export GIT_URL='https://github.com/asciimoo/searx' +export ISSUE_URL='https://github.com/asciimoo/searx/issues' +export SEARX_URL='https://searx.me' +export DOCS_URL='https://asciimoo.github.io/searx' +export PUBLIC_INSTANCES='https://searx.space' From ca65d41da569834435c226407370365224d7867c Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Sun, 29 Mar 2020 12:22:02 +0200 Subject: [PATCH 209/238] [fix] travis: reomve 'make style' from travis build Commit 8a16903a removes Makefile target style Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ca986d04..1667cd37 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,6 @@ install: - make node.env - local/py3/bin/pip install codecov script: - - make styles - make themes - make test after_success: From 1ae39787c1d19a6781ad3d5cb0b2615741d9eb4b Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Mon, 30 Mar 2020 12:23:01 +0200 Subject: [PATCH 210/238] Makefile: rename target 'searx.brand' to 'buildenv' And add 'buildenv' as an first order prerequisite to the main targets: - install - run - docs - docs-live - project - node.env - docker - test Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index d09e9282..a093d8b1 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ help: @echo ' gh-pages - build docs & deploy on gh-pages branch' @echo ' clean - drop builds and environments' @echo ' project - re-build generic files of the searx project' + @echo ' buildenv - re-build environment files (aka brand)' @echo ' themes - re-build build the source of the themes' @echo ' docker - build Docker image' @echo ' node.env - download & install npm dependencies locally' @@ -37,7 +38,7 @@ help: @$(MAKE) -s -f utils/makefile.python python-help PHONY += install -install: pyenvinstall +install: buildenv pyenvinstall PHONY += uninstall uninstall: pyenvuninstall @@ -47,7 +48,7 @@ clean: pyclean node.clean test.clean $(call cmd,common_clean) PHONY += run -run: pyenvinstall +run: buildenv pyenvinstall $(Q) ( \ sed -i -e "s/debug : False/debug : True/g" ./searx/settings.yml ; \ sleep 2 ; \ @@ -61,11 +62,11 @@ run: pyenvinstall # ---- PHONY += docs -docs: pyenvinstall sphinx-doc +docs: buildenv pyenvinstall sphinx-doc $(call cmd,sphinx,html,docs,docs) PHONY += docs-live -docs-live: pyenvinstall sphinx-live +docs-live: buildenv pyenvinstall sphinx-live $(call cmd,sphinx_autobuild,html,docs,docs) $(GH_PAGES):: @@ -74,9 +75,9 @@ $(GH_PAGES):: # update project files # -------------------- -PHONY += project engines.languages searx.brand useragents.update +PHONY += project engines.languages useragents.update buildenv -project: useragents.update engines.languages searx.brand +project: buildenv useragents.update engines.languages engines.languages: pyenvinstall $(Q)echo "fetch languages .." @@ -90,7 +91,7 @@ useragents.update: pyenvinstall $(Q)echo "Update searx/data/useragents.json with the most recent versions of Firefox." $(Q)$(PY_ENV_ACT); python utils/fetch_firefox_version.py -searx.brand: +buildenv: $(Q)echo "build searx/brand.py" $(Q)echo "GIT_URL = '$(GIT_URL)'" > searx/brand.py $(Q)echo "ISSUE_URL = 'https://github.com/asciimoo/searx/issues'" >> searx/brand.py @@ -108,7 +109,7 @@ searx.brand: # node / npm # ---------- -node.env: +node.env: buildenv $(Q)./manage.sh npm_packages node.clean: @@ -125,7 +126,7 @@ node.clean: # ------------ PHONY += themes.bootstrap themes themes.oscar themes.simple themes.legacy themes.courgette themes.pixart -themes: themes.bootstrap themes.oscar themes.simple themes.legacy themes.courgette themes.pixart +themes: buildenv themes.bootstrap themes.oscar themes.simple themes.legacy themes.courgette themes.pixart quiet_cmd_lessc = LESSC $3 cmd_lessc = PATH="$$(npm bin):$$PATH" \ @@ -165,7 +166,7 @@ themes.bootstrap: # ------ PHONY += docker -docker: +docker: buildenv $(Q)./manage.sh docker_build # gecko @@ -180,7 +181,7 @@ gecko.driver: PHONY += test test.pylint test.pep8 test.unit test.coverage test.robot -test: test.pylint test.pep8 test.unit gecko.driver test.robot +test: buildenv test.pylint test.pep8 test.unit gecko.driver test.robot # TODO: balance linting with pylint test.pylint: pyenvinstall From d425e26e8018d633a98eabe1ce32abb32dd5e313 Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Tue, 31 Mar 2020 11:59:54 +0200 Subject: [PATCH 211/238] [fix] fix travis build --- .travis.yml | 2 +- Makefile | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1667cd37..8c3f7285 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,7 +40,7 @@ jobs: install: true script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - local/py3/bin/activate; ./manage.sh docker_build push + - make -e GIT_URL=$(git remote get-url origin) docker.push after_success: true notifications: diff --git a/Makefile b/Makefile index a093d8b1..65f79ba2 100644 --- a/Makefile +++ b/Makefile @@ -169,6 +169,9 @@ PHONY += docker docker: buildenv $(Q)./manage.sh docker_build +docker.push: buildenv + $(Q)./manage.sh docker_build push + # gecko # ----- From 4bb35e7ef53e1c3e738a185f89e6660211e3837a Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Tue, 31 Mar 2020 16:52:52 +0200 Subject: [PATCH 212/238] [fix] template: fix typo in about.html --- searx/templates/__common__/about.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html index 5c91c339..d3e8d06a 100644 --- a/searx/templates/__common__/about.html +++ b/searx/templates/__common__/about.html @@ -76,7 +76,7 @@ <p> Searx appreciates your concern regarding logs, so take the - code from the <a href="https://github.com/asciimoo/searx">orgin searx project</a> and + code from the <a href="https://github.com/asciimoo/searx">original searx project</a> and run it yourself! </p> <p> From b18880985c0b5948ebb1136135d8d05d292aae70 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 11:15:34 +0200 Subject: [PATCH 213/238] travis: make travis build more verbose Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8c3f7285..59913af9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,15 +8,15 @@ addons: firefox: "latest" install: - - make install - - make gecko.driver - - make node.env + - make V=1 install + - make V=1 gecko.driver + - make V=1 node.env - local/py3/bin/pip install codecov script: - - make themes - - make test + - make V=1 themes + - make V=1 test after_success: - - make test.coverage + - make V=1 test.coverage - codecov stages: From 8c145ff2fed095edb79461c3be7ad76abc68db51 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 12:22:08 +0200 Subject: [PATCH 214/238] travis: build on os: linux, dist: bionic, use platform arch: arm64 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 59913af9..c79c5c4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,7 @@ +os: linux +dist: bionic +arch: arm64 language: python -sudo: false cache: - directories: - $HOME/.cache/pip From 9b48ae47ec837250a9a15e26f85ada33b7aa4f71 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 14:16:49 +0200 Subject: [PATCH 215/238] makefile.python: hardening - drop virtualenv, drop build support py2 From py3.3 on a subset of virtualenv is built-in, so you can run '-m venv' ot of the box. - replace: $(PY_ENV_BIN)/pip --> $(PY_ENV_BIN)/python -m pip - remove obsolete virtualenv-exe target and adjust VTENV_OPTS - remove obsolete msg-pip-exe target - print list of py launchers available from $(PY_ENV_BIN) to the log - fix hard coded ./local Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 1 - utils/makefile.python | 90 +++++++++++++------------------------------ 2 files changed, 26 insertions(+), 65 deletions(-) diff --git a/.travis.yml b/.travis.yml index c79c5c4c..911ca98e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,6 @@ stages: jobs: include: - - python: "2.7" - python: "3.5" - python: "3.6" - stage: docker diff --git a/utils/makefile.python b/utils/makefile.python index 4aa9d6b4..699bef5e 100644 --- a/utils/makefile.python +++ b/utils/makefile.python @@ -5,6 +5,7 @@ PYOBJECTS ?= SITE_PYTHON ?=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))site-python export PYTHONPATH := $(SITE_PYTHON):$$PYTHONPATH +export PY_ENV PYDIST PYBUILD # folder where the python distribution takes place PYDIST ?= ./py_dist @@ -12,6 +13,9 @@ PYDIST ?= ./py_dist PYBUILD ?= ./py_build # python version to use PY ?=3 +# $(PYTHON) points to the python interpreter from the OS! The python from the +# OS is needed e.g. to create a virtualenv. For tasks inside the virtualenv the +# interpeter from '$(PY_ENV_BIN)/python' is used. PYTHON ?= python$(PY) PIP ?= pip$(PY) PIP_INST ?= --user @@ -26,7 +30,7 @@ PYLINT_RC ?= .pylintrc TEST_FOLDER ?= ./tests TEST ?= . -VTENV_OPTS = "--no-site-packages" +VTENV_OPTS ?= PY_ENV = ./local/py$(PY) PY_ENV_BIN = $(PY_ENV)/bin PY_ENV_ACT = . $(PY_ENV_BIN)/activate @@ -37,20 +41,6 @@ ifeq ($(OS),Windows_NT) PY_ENV_ACT = $(PY_ENV_BIN)/activate endif -ifeq ($(PYTHON),python) - VIRTUALENV = virtualenv -else - VIRTUALENV = virtualenv --python=$(PYTHON) -endif - -ifeq ($(KBUILD_VERBOSE),1) - PIP_VERBOSE = - VIRTUALENV_VERBOSE = -else - PIP_VERBOSE = "-q" - VIRTUALENV_VERBOSE = "-q" -endif - python-help:: @echo 'makefile.python:' @echo ' pyenv | pyenv[un]install' @@ -59,7 +49,7 @@ python-help:: @echo ' pylint - run pylint *linting*' @echo ' pytest - run *tox* test on python objects' @echo ' pydebug - run tests within a PDB debug session' - @echo ' pybuild - build python packages' + @echo ' pybuild - build python packages ($(PYDIST) $(PYBUILD))' @echo ' pyclean - clean intermediate python objects' @echo ' targets using system users environment:' @echo ' py[un]install - [un]install python objects in editable mode' @@ -94,38 +84,6 @@ python-exe: @: endif -msg-pip-exe: - @echo "\n $(PIP) is required\n\n\ - Make sure you have updated pip installed, grab it from\n\ - https://pip.pypa.io or install it from your package\n\ - manager. On debian based OS these requirements are\n\ - installed by::\n\n\ - sudo -H apt-get install python$(PY)-pip\n" | $(FMT) - -ifeq ($(shell which $(PIP) >/dev/null 2>&1; echo $$?), 1) -pip-exe: msg-pip-exe - $(error The '$(PIP)' command was not found) -else -pip-exe: - @: -endif - -PHONY += msg-virtualenv-exe virtualenv-exe -msg-virtualenv-exe: - @echo "\n virtualenv is required\n\n\ - Make sure you have an updated virtualenv installed, grab it from\n\ - https://virtualenv.pypa.io/en/stable/installation/ or install it\n\ - via pip by::\n\n\ - pip install --user https://github.com/pypa/virtualenv/tarball/master\n" | $(FMT) - -ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 1) -virtualenv-exe: msg-virtualenv-exe - $(error The 'virtualenv' command was not found) -else -virtualenv-exe: - @: -endif - # ------------------------------------------------------------------------------ # commands # ------------------------------------------------------------------------------ @@ -136,9 +94,9 @@ quiet_cmd_pyinstall = INSTALL $2 # $2 path to folder with setup.py, this uses pip from pyenv (not OS!) quiet_cmd_pyenvinstall = PYENV install $2 - cmd_pyenvinstall = $(PY_ENV_BIN)/pip $(PIP_VERBOSE) install -e $2$(PY_SETUP_EXTRAS) + cmd_pyenvinstall = $(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) install -e $2$(PY_SETUP_EXTRAS) -# Uninstall the package. Since pip does not uninstall the no longer needed +# Uninstall the package. Since pip does not uninstall the no longer needed # depencies (something like autoremove) the depencies remain. # $2 package name to uninstall, this uses pip from the OS. @@ -147,16 +105,19 @@ quiet_cmd_pyuninstall = UNINSTALL $2 # $2 path to folder with setup.py, this uses pip from pyenv (not OS!) quiet_cmd_pyenvuninstall = PYENV uninstall $2 - cmd_pyenvuninstall = $(PY_ENV_BIN)/pip $(PIP_VERBOSE) uninstall --yes $2 + cmd_pyenvuninstall = $(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) uninstall --yes $2 # $2 path to folder where virtualenv take place +# creating a virtualenv uses $(PYTHON) from the OS! quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate cmd_virtualenv = \ - if [ ! -d "./$(PY_ENV)" ];then \ - $(VIRTUALENV) $(VIRTUALENV_VERBOSE) $(VTENV_OPTS) $2; \ + if [ ! -d "$(PY_ENV)" ];then \ + echo "PYENV create virtualenv $2"; \ + $(PYTHON) -m venv $(VTENV_OPTS) $2; \ else \ echo "PYENV using virtualenv from $2"; \ - fi + fi; \ + echo "commands available at $(PY_ENV_BIN):"; ls $(PY_ENV_BIN) | $(FMT) ; # $2 path to lint quiet_cmd_pylint = LINT $@ @@ -192,14 +153,14 @@ quiet_cmd_pytest = TEST $@ # .. _installing: https://packaging.python.org/tutorials/installing-packages/ # quiet_cmd_pybuild = BUILD $@ - cmd_pybuild = $(PY_ENV_BIN)/$(PYTHON) setup.py \ + cmd_pybuild = $(PY_ENV_BIN)/python setup.py \ sdist -d $(PYDIST) \ bdist_wheel --bdist-dir $(PYBUILD) -d $(PYDIST) quiet_cmd_pyclean = CLEAN $@ # remove 'build' folder since bdist_wheel does not care the --bdist-dir cmd_pyclean = \ - rm -rf $(PYDIST) $(PYBUILD) ./local ./.tox *.egg-info ;\ + rm -rf $(PYDIST) $(PYBUILD) $(PY_ENV) ./.tox *.egg-info ;\ find . -name '*.pyc' -exec rm -f {} + ;\ find . -name '*.pyo' -exec rm -f {} + ;\ find . -name __pycache__ -exec rm -rf {} + @@ -230,15 +191,16 @@ PHONY += pyclean pyclean: $(call cmd,pyclean) -# to build *local* environment, python and virtualenv from the OS is needed! +# to build *local* environment, python from the OS is needed! pyenv: $(PY_ENV) -$(PY_ENV): virtualenv-exe python-exe +$(PY_ENV): python-exe $(call cmd,virtualenv,$(PY_ENV)) - @$(PY_ENV_BIN)/pip install $(PIP_VERBOSE) -r requirements.txt + $(Q)$(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -U pip wheel pip setuptools + $(Q)$(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -r requirements.txt PHONY += pylint-exe pylint-exe: $(PY_ENV) - @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) install pylint + @$(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) install pylint PHONY += pylint pylint: pylint-exe @@ -262,15 +224,15 @@ pydebug: $(PY_ENV) # install / uninstall python objects into virtualenv (PYENV) pyenv-install: $(PY_ENV) - @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) install -e . + @$(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) install -e . @echo "ACTIVATE $(call normpath,$(PY_ENV_ACT)) " pyenv-uninstall: $(PY_ENV) - @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) uninstall --yes . + @$(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) uninstall --yes . # runs python interpreter from ./local/py<N>/bin/python pyenv-python: pyenv-install - cd ./local; ../$(PY_ENV_BIN)/python -i + $(PY_ENV_BIN)/python -i # With 'dependency_links=' setuptools supports dependencies on packages hosted # on other reposetories then PyPi, see "Packages Not On PyPI" [1]. The big @@ -284,7 +246,7 @@ pyenv-python: pyenv-install # https://github.com/pypa/twine PHONY += upload-pypi -upload-pypi: pyclean pybuild +upload-pypi: pyclean pyenvinstall pybuild @$(PY_ENV_BIN)/twine upload $(PYDIST)/* .PHONY: $(PHONY) From 9e32fb27e71ca0ae32a0eead712a0504c9d2d951 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 14:49:10 +0200 Subject: [PATCH 216/238] [fix] travis: Permission denied: '/home/travis/.cache/pip/...' Fix "Permission denied: '/home/travis/.cache/" errors from travis build [1]. Change owner https://docs.travis-ci.com/user/caching/#caches-and-read-permissions and remove old log in the *before_caching* phase: https://docs.travis-ci.com/user/caching/#before_cache-phase About pip cache see: https://docs.travis-ci.com/user/caching/#pip-cache Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> [1] https://travis-ci.org/github/asciimoo/searx/jobs/669664131#L220 --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 911ca98e..94303773 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,9 @@ language: python cache: - directories: - $HOME/.cache/pip - +before_cache: + - sudo chown -R travis:travis $HOME/.cache/pip + - rm -f $HOME/.cache/pip/log/debug.log addons: firefox: "latest" From eb87b07d519592b8863a3aeb39eb0a758083f5cc Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 15:06:48 +0200 Subject: [PATCH 217/238] travis: disable cache Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 94303773..7d896fff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,12 +2,7 @@ os: linux dist: bionic arch: arm64 language: python -cache: - - directories: - - $HOME/.cache/pip -before_cache: - - sudo chown -R travis:travis $HOME/.cache/pip - - rm -f $HOME/.cache/pip/log/debug.log +cache: false addons: firefox: "latest" From adc3a855e6eb4626014c0459a13e868e65bcfd74 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 15:22:24 +0200 Subject: [PATCH 218/238] Revert "travis: disable cache" This reverts commit eb87b07d519592b8863a3aeb39eb0a758083f5cc. --- .travis.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7d896fff..94303773 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,12 @@ os: linux dist: bionic arch: arm64 language: python -cache: false +cache: + - directories: + - $HOME/.cache/pip +before_cache: + - sudo chown -R travis:travis $HOME/.cache/pip + - rm -f $HOME/.cache/pip/log/debug.log addons: firefox: "latest" From e340bb5bd18c805bbb8381ec8c6052bf95830bc2 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 15:27:01 +0200 Subject: [PATCH 219/238] travis: remove platform option arm64 [1] https://github.com/asciimoo/searx/pull/1910#issuecomment-607244871 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 94303773..c9847d63 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ os: linux dist: bionic -arch: arm64 language: python cache: - directories: From 565493b57d3dbef94f4c298b7395e26fc24bb9bd Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 15:45:01 +0200 Subject: [PATCH 220/238] travis: use Makefile target travis.codecov to install codecov fix travis build error [1]:: The command "local/py3/bin/pip install codecov" failed and exited with 127 Use the correct pip (python environment) from build environment:: $(PY_ENV_BIN)/python -m pip [1] https://travis-ci.org/github/asciimoo/searx/jobs/669701405#L590 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 2 +- Makefile | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c9847d63..e9f727a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ install: - make V=1 install - make V=1 gecko.driver - make V=1 node.env - - local/py3/bin/pip install codecov + - make V=1 travis.codecov script: - make V=1 themes - make V=1 test diff --git a/Makefile b/Makefile index 65f79ba2..7d528280 100644 --- a/Makefile +++ b/Makefile @@ -220,4 +220,11 @@ test.clean: @echo "CLEAN intermediate test stuff" $(Q)rm -rf geckodriver.log .coverage coverage/ + +# travis +# ------ + +travis.codecov: + $(Q)$(PY_ENV_BIN)/python -m pip install codecov + .PHONY: $(PHONY) From 31437d04e82ec9cde4209d881f6635ac39d92ac4 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 16:07:59 +0200 Subject: [PATCH 221/238] makefile.python: hardening - start pylint by module - replace: $(PY_ENV_BIN)/pylint --> $(PY_ENV_BIN)/python -m pylint Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- utils/makefile.python | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/makefile.python b/utils/makefile.python index 699bef5e..aaf21c11 100644 --- a/utils/makefile.python +++ b/utils/makefile.python @@ -121,10 +121,10 @@ quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate # $2 path to lint quiet_cmd_pylint = LINT $@ - cmd_pylint = $(PY_ENV_BIN)/pylint --rcfile $(PYLINT_RC) $2 + cmd_pylint = $(PY_ENV_BIN)/python -m pylint --rcfile $(PYLINT_RC) $2 quiet_cmd_pytest = TEST $@ - cmd_pytest = $(PY_ENV_BIN)/tox -vv + cmd_pytest = $(PY_ENV_BIN)/python -m tox -vv # setuptools, pip, easy_install its a mess full of cracks, a documentation hell # and broken by design ... all sucks, I really, really hate all this ... aaargh! From 09a4062505a8d79451374139bab525457eeb28cd Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 17:21:26 +0200 Subject: [PATCH 222/238] makefile.python: partial revert off 9b48ae47, adds py2 support back revert "makefile.python: ... drop build support py2" to get back Py2 support. TPy2 support need virtualenv installed by the OS. BTW: log environment and python version in travis's install phase Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 3 +++ utils/makefile.python | 25 ++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index e9f727a3..3c862fac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ addons: firefox: "latest" install: + - env; which python; python --version - make V=1 install - make V=1 gecko.driver - make V=1 node.env @@ -29,6 +30,8 @@ stages: jobs: include: + - python: "2.7" + env: PY=2 - python: "3.5" - python: "3.6" - stage: docker diff --git a/utils/makefile.python b/utils/makefile.python index aaf21c11..590bbdb4 100644 --- a/utils/makefile.python +++ b/utils/makefile.python @@ -30,7 +30,7 @@ PYLINT_RC ?= .pylintrc TEST_FOLDER ?= ./tests TEST ?= . -VTENV_OPTS ?= +VTENV_OPTS = "--no-site-packages" PY_ENV = ./local/py$(PY) PY_ENV_BIN = $(PY_ENV)/bin PY_ENV_ACT = . $(PY_ENV_BIN)/activate @@ -41,6 +41,20 @@ ifeq ($(OS),Windows_NT) PY_ENV_ACT = $(PY_ENV_BIN)/activate endif +ifeq ($(PYTHON),python) + VIRTUALENV = virtualenv +else + VIRTUALENV = virtualenv --python=$(PYTHON) +endif + +ifeq ($(KBUILD_VERBOSE),1) + PIP_VERBOSE = + VIRTUALENV_VERBOSE = +else + PIP_VERBOSE = "-q" + VIRTUALENV_VERBOSE = "-q" +endif + python-help:: @echo 'makefile.python:' @echo ' pyenv | pyenv[un]install' @@ -108,16 +122,13 @@ quiet_cmd_pyenvuninstall = PYENV uninstall $2 cmd_pyenvuninstall = $(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) uninstall --yes $2 # $2 path to folder where virtualenv take place -# creating a virtualenv uses $(PYTHON) from the OS! quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate cmd_virtualenv = \ - if [ ! -d "$(PY_ENV)" ];then \ - echo "PYENV create virtualenv $2"; \ - $(PYTHON) -m venv $(VTENV_OPTS) $2; \ + if [ ! -d "./$(PY_ENV)" ];then \ + $(VIRTUALENV) $(VIRTUALENV_VERBOSE) $(VTENV_OPTS) $2; \ else \ echo "PYENV using virtualenv from $2"; \ - fi; \ - echo "commands available at $(PY_ENV_BIN):"; ls $(PY_ENV_BIN) | $(FMT) ; + fi # $2 path to lint quiet_cmd_pylint = LINT $@ From fc89c698bd81a582b5ea7095de32a12d54a40268 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 1 Apr 2020 19:20:52 +0200 Subject: [PATCH 223/238] make test.pylint: do not run pylint checks in py2 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 7d528280..abd0eddb 100644 --- a/Makefile +++ b/Makefile @@ -186,12 +186,17 @@ PHONY += test test.pylint test.pep8 test.unit test.coverage test.robot test: buildenv test.pylint test.pep8 test.unit gecko.driver test.robot +ifeq ($(PY),2) +test.pylint: + @echo "LINT skip liniting py2" +else # TODO: balance linting with pylint test.pylint: pyenvinstall $(call cmd,pylint,\ searx/preferences.py \ searx/testing.py \ ) +endif # ignored rules: # E402 module level import not at top of file From 4dad3661461659dd39f88795f461fc19ac9c1fb5 Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Thu, 2 Apr 2020 15:06:10 +0200 Subject: [PATCH 224/238] [fix] travis: fix docker tag. the "-dirty" ignores the searx/brand.py and utils/brand.env files. --- manage.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/manage.sh b/manage.sh index 4831fc1f..b2ffb638 100755 --- a/manage.sh +++ b/manage.sh @@ -121,8 +121,9 @@ docker_build() { SEARX_GIT_VERSION=$(git describe --match "v[0-9]*\.[0-9]*\.[0-9]*" HEAD 2>/dev/null | awk -F'-' '{OFS="-"; $1=substr($1, 2); $3=substr($3, 2); print}') # add the suffix "-dirty" if the repository has uncommited change + # /!\ HACK for searx/searx: ignore searx/brand.py and utils/brand.env git update-index -q --refresh - if [ ! -z "$(git diff-index --name-only HEAD --)" ]; then + if [ ! -z "$(git diff-index --name-only HEAD -- | grep -v 'searx/brand.py' | grep -v 'utils/brand.env')" ]; then SEARX_GIT_VERSION="${SEARX_GIT_VERSION}-dirty" fi From 41f002b0ea3e82f9a2f7dd7b75dbbbf77b7986c0 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Thu, 2 Apr 2020 18:00:53 +0200 Subject: [PATCH 225/238] travis: remove before_cache handle BTW: separate env output in the travis log Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3c862fac..76a20b00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,14 +4,12 @@ language: python cache: - directories: - $HOME/.cache/pip -before_cache: - - sudo chown -R travis:travis $HOME/.cache/pip - - rm -f $HOME/.cache/pip/log/debug.log addons: firefox: "latest" install: - - env; which python; python --version + - env + - which python; python --version - make V=1 install - make V=1 gecko.driver - make V=1 node.env From 5cb9d9e56a611f500e3fe1b850218abe6f272bf5 Mon Sep 17 00:00:00 2001 From: Venca24 <Vaclav.Zouzalik@seznam.cz> Date: Fri, 3 Apr 2020 17:31:59 +0200 Subject: [PATCH 226/238] [add] rubygems engine --- searx/settings.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/searx/settings.yml b/searx/settings.yml index 078d95b7..93cb3ee5 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -763,6 +763,20 @@ engines: engine : seedpeer categories: files, music, videos + - name : rubygems + shortcut: rbg + engine: xpath + paging : True + search_url : https://rubygems.org/search?page={pageno}&query={query} + results_xpath: /html/body/main/div/a[@class="gems__gem"] + url_xpath : ./@href + title_xpath : ./span/h2 + content_xpath : ./span/p + suggestion_xpath : /html/body/main/div/div[@class="search__suggestions"]/p/a + first_page_num : 1 + categories: it + disabled : True + # - name : yacy # engine : yacy # shortcut : ya From 536eb2b8dd623172c13ac17797582c8949956d7b Mon Sep 17 00:00:00 2001 From: Splinter Suidman <splinter@mannenopdemaan.nl> Date: Sun, 5 Apr 2020 19:27:44 +0200 Subject: [PATCH 227/238] Add Wikimedia projects. A list of the added projects: - Wikibooks - Wikinews - Wikiquote - Wikisource - Wiktionary - Wikiversity - Wikivoyage --- AUTHORS.rst | 1 + searx/settings.yml | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/AUTHORS.rst b/AUTHORS.rst index 9ab78b05..462b1701 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -123,3 +123,4 @@ generally made searx better: - Vipul @finn0 - @CaffeinatedTech - Robin Schneider @ypid +- @splintah diff --git a/searx/settings.yml b/searx/settings.yml index 078d95b7..042315be 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -686,6 +686,76 @@ engines: engine : vimeo shortcut : vm + - name : wikibooks + engine : mediawiki + shortcut : wb + categories : general + base_url : "https://{language}.wikibooks.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + + - name : wikinews + engine : mediawiki + shortcut : wn + categories : general + base_url : "https://{language}.wikinews.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + + - name : wikiquote + engine : mediawiki + shortcut : wq + categories : general + base_url : "https://{language}.wikiquote.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + + - name : wikisource + engine : mediawiki + shortcut : ws + categories : general + base_url : "https://{language}.wikisource.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + + - name : wikitionary + engine : mediawiki + shortcut : wt + categories : general + base_url : "https://{language}.wiktionary.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + + - name : wikiversity + engine : mediawiki + shortcut : wvs + categories : general + base_url : "https://{language}.wikiversity.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + + - name : wikivoyage + engine : mediawiki + shortcut : wvy + categories : general + base_url : "https://{language}.wikivoyage.org/" + number_of_results : 5 + search_type : text + disabled : True + query : "srsearch={query}" + - name : wolframalpha shortcut : wa # You can use the engine using the official stable API, but you need an API key From 2b453cb226a4c0f73a55691810a601fc05143196 Mon Sep 17 00:00:00 2001 From: Splinter Suidman <splinter@mannenopdemaan.nl> Date: Mon, 6 Apr 2020 12:31:00 +0200 Subject: [PATCH 228/238] fix: Change Wikinews category to news. --- searx/settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/settings.yml b/searx/settings.yml index 042315be..42e655b1 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -699,7 +699,7 @@ engines: - name : wikinews engine : mediawiki shortcut : wn - categories : general + categories : news base_url : "https://{language}.wikinews.org/" number_of_results : 5 search_type : text From c37544e6be155bb5ad167a79f852a5dd7ede5df6 Mon Sep 17 00:00:00 2001 From: Splinter Suidman <splinter@mannenopdemaan.nl> Date: Mon, 6 Apr 2020 12:31:32 +0200 Subject: [PATCH 229/238] fix: Spelling of Wiktionary. --- searx/settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/searx/settings.yml b/searx/settings.yml index 42e655b1..3ac3f87d 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -726,7 +726,7 @@ engines: disabled : True query : "srsearch={query}" - - name : wikitionary + - name : wiktionary engine : mediawiki shortcut : wt categories : general From 87fba9c12dfa95b6bb7048d1c0e7536df33cd894 Mon Sep 17 00:00:00 2001 From: Splinter Suidman <splinter@mannenopdemaan.nl> Date: Mon, 6 Apr 2020 15:59:00 +0200 Subject: [PATCH 230/238] fix: Remove unnecessary query parameter for Wikimedia projects. --- searx/settings.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/searx/settings.yml b/searx/settings.yml index 3ac3f87d..8e817907 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -694,7 +694,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wikinews engine : mediawiki @@ -704,7 +703,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wikiquote engine : mediawiki @@ -714,7 +712,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wikisource engine : mediawiki @@ -724,7 +721,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wiktionary engine : mediawiki @@ -734,7 +730,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wikiversity engine : mediawiki @@ -744,7 +739,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wikivoyage engine : mediawiki @@ -754,7 +748,6 @@ engines: number_of_results : 5 search_type : text disabled : True - query : "srsearch={query}" - name : wolframalpha shortcut : wa From 83fa88cbec949c0916d7d8854865512a5485b3f3 Mon Sep 17 00:00:00 2001 From: Splinter Suidman <splinter@mannenopdemaan.nl> Date: Tue, 7 Apr 2020 11:05:35 +0200 Subject: [PATCH 231/238] fix: Change Wikiversity and Wikivoyage shortcuts to wv and wy. Suggested by @Venca24 <https://github.com/asciimoo/searx/pull/1914#issuecomment-610194209>. --- searx/settings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/searx/settings.yml b/searx/settings.yml index 8e817907..3050aedf 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -733,7 +733,7 @@ engines: - name : wikiversity engine : mediawiki - shortcut : wvs + shortcut : wv categories : general base_url : "https://{language}.wikiversity.org/" number_of_results : 5 @@ -742,7 +742,7 @@ engines: - name : wikivoyage engine : mediawiki - shortcut : wvy + shortcut : wy categories : general base_url : "https://{language}.wikivoyage.org/" number_of_results : 5 From a7862ba3c1557fd39269dad3781a1909a8cff363 Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Wed, 8 Apr 2020 15:34:01 +0200 Subject: [PATCH 232/238] [mod] .travis.yml: add Python 3.7 and Python 3.8 --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 76a20b00..f6fa9c98 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,8 +32,10 @@ jobs: env: PY=2 - python: "3.5" - python: "3.6" + - python: "3.7" + - python: "3.8" - stage: docker - python: "3.6" + python: "3.8" git: depth: false services: From 3973951770146f35d52664e971b76026af15d9f9 Mon Sep 17 00:00:00 2001 From: Dalf <alex@al-f.net> Date: Wed, 8 Apr 2020 15:58:26 +0200 Subject: [PATCH 233/238] [mod] requirements.txt: upgrade dependency versions. --- requirements.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index ea4a5a7a..5d508d7e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ -certifi==2019.3.9 +certifi==2020.4.5.1 babel==2.7.0 flask-babel==1.0.0 -flask==1.0.2 -idna==2.8 -jinja2==2.10.1 -lxml==4.3.3 +flask==1.1.2 +idna==2.9 +jinja2==2.11.1 +lxml==4.5.0 pygments==2.1.3 -pyopenssl==19.0.0 +pyopenssl==19.1.0 python-dateutil==2.8.0 -pyyaml==5.1 -requests[socks]==2.22.0 +pyyaml==5.3.1 +requests[socks]==2.23.0 From 3a26093c46469a320c2dfa4d732634a462c8f0f4 Mon Sep 17 00:00:00 2001 From: HLFH <github@dhautefeuille.eu> Date: Wed, 15 Apr 2020 16:46:15 +0100 Subject: [PATCH 234/238] Remove discontinued faroo engine --- searx/engines/faroo.py | 96 ------------------------------------------ searx/settings.yml | 5 --- 2 files changed, 101 deletions(-) delete mode 100644 searx/engines/faroo.py diff --git a/searx/engines/faroo.py b/searx/engines/faroo.py deleted file mode 100644 index a36ecf77..00000000 --- a/searx/engines/faroo.py +++ /dev/null @@ -1,96 +0,0 @@ -""" - Faroo (Web, News) - - @website http://www.faroo.com - @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key - - @using-api no - @results JSON - @stable yes - @parse url, title, content, publishedDate, img_src -""" - -from json import loads -import datetime -from searx.utils import searx_useragent -from searx.url_utils import urlencode - -# engine dependent config -categories = ['general', 'news'] -paging = True -language_support = True -number_of_results = 10 - -# search-url -url = 'http://www.faroo.com/' -search_url = url + 'instant.json?{query}'\ - '&start={offset}'\ - '&length={number_of_results}'\ - '&l={language}'\ - '&src={categorie}'\ - '&i=false'\ - '&c=false' - -search_category = {'general': 'web', - 'news': 'news'} - - -# do search-request -def request(query, params): - offset = (params['pageno'] - 1) * number_of_results + 1 - categorie = search_category.get(params['category'], 'web') - - if params['language'] == 'all': - language = 'en' - else: - language = params['language'].split('-')[0] - - # if language is not supported, put it in english - if language != 'en' and\ - language != 'de' and\ - language != 'zh': - language = 'en' - - params['url'] = search_url.format(offset=offset, - number_of_results=number_of_results, - query=urlencode({'q': query}), - language=language, - categorie=categorie) - - params['headers']['Referer'] = url - - return params - - -# get response from search-request -def response(resp): - # HTTP-Code 429: rate limit exceeded - if resp.status_code == 429: - raise Exception("rate limit has been exceeded!") - - results = [] - - search_res = loads(resp.text) - - # return empty array if there are no results - if not search_res.get('results', {}): - return [] - - # parse results - for result in search_res['results']: - publishedDate = None - result_json = {'url': result['url'], 'title': result['title'], - 'content': result['kwic']} - if result['news']: - result_json['publishedDate'] = \ - datetime.datetime.fromtimestamp(result['date'] / 1000.0) - - # append image result if image url is set - if result['iurl']: - result_json['template'] = 'videos.html' - result_json['thumbnail'] = result['iurl'] - - results.append(result_json) - - # return results - return results diff --git a/searx/settings.yml b/searx/settings.yml index 2729de92..77cc4e08 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -219,11 +219,6 @@ engines: shortcut : et disabled : True - - name : faroo - engine : faroo - shortcut : fa - disabled : True - - name : 1x engine : www1x shortcut : 1x From ba7c8d7b960c3a3f288db162a51b76a2a935a605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= <sitbackandwait@gmail.com> Date: Wed, 15 Apr 2020 23:24:12 +0200 Subject: [PATCH 235/238] [fix] remove usage of request context where not available --- searx/webapp.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index c910230a..9d76d844 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -56,6 +56,7 @@ from flask import ( from babel.support import Translations import flask_babel from flask_babel import Babel, gettext, format_date, format_decimal +from flask.ctx import has_request_context from flask.json import jsonify from searx import brand from searx import settings, searx_dir, searx_debug @@ -165,13 +166,11 @@ _flask_babel_get_translations = flask_babel.get_translations # monkey patch for flask_babel.get_translations def _get_translations(): - translation_locale = request.form.get('use-translation') - if translation_locale: + if has_request_context() and request.form.get('use-translation') == 'oc': babel_ext = flask_babel.current_app.extensions['babel'] - translation = Translations.load(next(babel_ext.translation_directories), 'oc') - else: - translation = _flask_babel_get_translations() - return translation + return Translations.load(next(babel_ext.translation_directories), 'oc') + + return _flask_babel_get_translations() flask_babel.get_translations = _get_translations From bce3830b8dd9322e4e93d0003aa86e03c03e2dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= <sitbackandwait@gmail.com> Date: Fri, 17 Apr 2020 16:31:02 +0200 Subject: [PATCH 236/238] [fix] translate engine errors to Occitan when configured --- searx/results.py | 4 ++-- searx/search.py | 17 +++++------------ searx/webapp.py | 14 ++++++++++++-- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/searx/results.py b/searx/results.py index 3b1e4bd6..02ab9efb 100644 --- a/searx/results.py +++ b/searx/results.py @@ -345,8 +345,8 @@ class ResultContainer(object): return 0 return resultnum_sum / len(self._number_of_results) - def add_unresponsive_engine(self, engine_error): - self.unresponsive_engines.add(engine_error) + def add_unresponsive_engine(self, engine_name, error_type, error_message=None): + self.unresponsive_engines.add((engine_name, error_type, error_message)) def add_timing(self, engine_name, engine_time, page_load_time): self.timings.append({ diff --git a/searx/search.py b/searx/search.py index 2dcc4c8f..661add7c 100644 --- a/searx/search.py +++ b/searx/search.py @@ -127,11 +127,7 @@ def search_one_offline_request_safe(engine_name, query, request_params, result_c logger.exception('engine {0} : invalid input : {1}'.format(engine_name, e)) except Exception as e: record_offline_engine_stats_on_error(engine, result_container, start_time) - - result_container.add_unresponsive_engine(( - engine_name, - u'{0}: {1}'.format(gettext('unexpected crash'), e), - )) + result_container.add_unresponsive_engine(engine_name, 'unexpected crash', str(e)) logger.exception('engine {0} : exception : {1}'.format(engine_name, e)) @@ -186,24 +182,21 @@ def search_one_http_request_safe(engine_name, query, request_params, result_cont engine.stats['errors'] += 1 if (issubclass(e.__class__, requests.exceptions.Timeout)): - result_container.add_unresponsive_engine((engine_name, gettext('timeout'))) + result_container.add_unresponsive_engine(engine_name, 'timeout') # requests timeout (connect or read) logger.error("engine {0} : HTTP requests timeout" "(search duration : {1} s, timeout: {2} s) : {3}" .format(engine_name, engine_time, timeout_limit, e.__class__.__name__)) requests_exception = True elif (issubclass(e.__class__, requests.exceptions.RequestException)): - result_container.add_unresponsive_engine((engine_name, gettext('request exception'))) + result_container.add_unresponsive_engine(engine_name, 'request exception') # other requests exception logger.exception("engine {0} : requests exception" "(search duration : {1} s, timeout: {2} s) : {3}" .format(engine_name, engine_time, timeout_limit, e)) requests_exception = True else: - result_container.add_unresponsive_engine(( - engine_name, - u'{0}: {1}'.format(gettext('unexpected crash'), e), - )) + result_container.add_unresponsive_engine(engine_name, 'unexpected crash', str(e)) # others errors logger.exception('engine {0} : exception : {1}'.format(engine_name, e)) @@ -238,7 +231,7 @@ def search_multiple_requests(requests, result_container, start_time, timeout_lim remaining_time = max(0.0, timeout_limit - (time() - start_time)) th.join(remaining_time) if th.isAlive(): - result_container.add_unresponsive_engine((th._engine_name, gettext('timeout'))) + result_container.add_unresponsive_engine(th._engine_name, 'timeout') logger.warning('engine timeout: {0}'.format(th._engine_name)) diff --git a/searx/webapp.py b/searx/webapp.py index 9d76d844..8c353106 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -626,7 +626,7 @@ def index(): 'corrections': list(result_container.corrections), 'infoboxes': result_container.infoboxes, 'suggestions': list(result_container.suggestions), - 'unresponsive_engines': list(result_container.unresponsive_engines)}, + 'unresponsive_engines': __get_translated_errors(result_container.unresponsive_engines)}, # noqa default=lambda item: list(item) if isinstance(item, set) else item), mimetype='application/json') elif output_format == 'csv': @@ -694,7 +694,7 @@ def index(): corrections=correction_urls, infoboxes=result_container.infoboxes, paging=result_container.paging, - unresponsive_engines=result_container.unresponsive_engines, + unresponsive_engines=__get_translated_errors(result_container.unresponsive_engines), current_language=match_language(search_query.lang, LANGUAGE_CODES, fallback=request.preferences.get_value("language")), @@ -705,6 +705,16 @@ def index(): ) +def __get_translated_errors(unresponsive_engines): + translated_errors = [] + for unresponsive_engine in unresponsive_engines: + error_msg = gettext(unresponsive_engine[1]) + if unresponsive_engine[2]: + error_msg = "{} {}".format(error_msg, unresponsive_engine[2]) + translated_errors.append((unresponsive_engine[0], error_msg)) + return translated_errors + + @app.route('/about', methods=['GET']) def about(): """Render about page""" From 7a50522a8202418243fab5ea26be5688ee6f8720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milien=20Devos?= <contact@emiliendevos.be> Date: Tue, 21 Apr 2020 20:50:16 +0000 Subject: [PATCH 237/238] Update default user agents --- searx/data/useragents.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/searx/data/useragents.json b/searx/data/useragents.json index 5ba8c5be..d464ec5f 100644 --- a/searx/data/useragents.json +++ b/searx/data/useragents.json @@ -1,12 +1,12 @@ { "versions": [ - "74.0", - "73.0.1", - "73.0" + "75.0", + "74.0.1", + "74.0" ], "os": [ - "Windows NT 10; WOW64", + "Windows NT 10.0; WOW64", "X11; Linux x86_64" ], "ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}" -} \ No newline at end of file +} From 697dd6c6d3eec85e4703a38cd107800e5f3c8a13 Mon Sep 17 00:00:00 2001 From: Markus Heiser <markus.heiser@darmarit.de> Date: Wed, 22 Apr 2020 00:43:42 +0200 Subject: [PATCH 238/238] [fix] ffox useragent: use Windows NT 10.0 and not Windows NT 10 This is an addittion to PR #1934: The .0 change really counts on some engines like Bing which seems to allow Windows NT 10.0 but not Windows NT 10. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --- utils/fetch_firefox_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/fetch_firefox_version.py b/utils/fetch_firefox_version.py index ed179585..722c4822 100755 --- a/utils/fetch_firefox_version.py +++ b/utils/fetch_firefox_version.py @@ -24,7 +24,7 @@ NORMAL_REGEX = re.compile('^[0-9]+\.[0-9](\.[0-9])?$') # useragents = { "versions": (), - "os": ('Windows NT 10; WOW64', + "os": ('Windows NT 10.0; WOW64', 'X11; Linux x86_64'), "ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}" }