| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | # SPDX-License-Identifier: AGPL-3.0-or-later"""This module implements the :origin:`searxng_msg <babel.cfg>` extractor toextract messages from:- :origin:`searx/searxng.msg`The ``searxng.msg`` files are selected by Babel_, see Babel's configuration in:origin:`babel.cfg`::    searxng_msg = searx.babel_extract.extract    ...    [searxng_msg: **/searxng.msg]A ``searxng.msg`` file is a python file that is *executed* by the:py:obj:`extract` function.  Additional ``searxng.msg`` files can be added by:1. Adding a ``searxng.msg`` file in one of the SearXNG python packages and2. implement a method in :py:obj:`extract` that yields messages from this file... _Babel: https://babel.pocoo.org/en/latest/index.html"""from os import pathSEARXNG_MSG_FILE = "searxng.msg"_MSG_FILES = [path.join(path.dirname(__file__), SEARXNG_MSG_FILE)]def extract(    # pylint: disable=unused-argument    fileobj,    keywords,    comment_tags,    options,):    """Extract messages from ``searxng.msg`` files by a custom extractor_.    .. _extractor:       https://babel.pocoo.org/en/latest/messages.html#writing-extraction-methods    """    if fileobj.name not in _MSG_FILES:        raise RuntimeError("don't know how to extract messages from %s" % fileobj.name)    namespace = {}    exec(fileobj.read(), {}, namespace)  # pylint: disable=exec-used    for name in namespace['__all__']:        for k, v in namespace[name].items():            yield 0, '_', v, ["%s['%s']" % (name, k)]
 |